Nu există niciun nul în cererea 1C 8.3. Utilizarea funcției isnull(). Lucrul cu valori nule într-o interogare

11.05.2020 Programe

Când lucrați cu un limbaj de interogare, uneori apare o situație când trebuie să înlocuiți o valoare NULL cu o altă valoare. Necesitatea unei astfel de operațiuni poate apărea, de exemplu, la primirea soldurilor stocurilor pentru întreaga gamă de produse. Acest articol descrie utilizarea funcției de limbaj de interogare ISNULL() pentru a rezolva astfel de probleme și, de asemenea, discută alte opțiuni de soluție.

Funcția ISNULL

Limbajul de interogare implementează funcția ISNULL(), al cărei scop este înlocuirea unei expresii cu o altă expresie dacă expresia avea valoarea NULL. Diagrama de sintaxă pentru această funcție arată astfel:

ISNULL(<Проверяемое выражение>, <Выражение замены>)

Această funcție va returna valoarea primului parametru dacă nu este NULL, iar valoarea celei de-a doua expresii în caz contrar.


ALEGE
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS CantitateRemaining
DIN

UNDE

ÎN în acest exemplu se obțin toate elementele directorului de articole, după care, pentru fiecare articol, se obțin soldurile curente din registrul de acumulare. Deoarece pentru un articol pentru care nu există solduri, tabelul virtual de solduri nu va returna o înregistrare, apoi ca urmare a conexiunii în câmpul „Item AccountingRemaining.QuantityRemaining” vor exista valori NULL pentru articolul pentru care există nu erau solduri. Pentru a ne asigura că în locul valorii NULL, rezultatul solicitării conține valoarea 0, am folosit funcția ISNULL(), care va efectua înlocuirea dorită.

Folosind operația SELECT

Pentru a rezolva problema descrisă mai devreme, puteți utiliza operația SELECT limbaj de interogare. Un exemplu despre cum ar arăta o cerere similară cu cea anterioară ar arăta astfel:


ALEGE
Director de nomenclatură. Nume,
ALEGEREA CÂND Elementele de contabilitate rămase.Cantitatea rămasă ESTE NULĂ ȘI 0
Altfel Contabilizarea nomenclaturii rămase Cantitatea rămasă AS Cantitatea rămasă
DIN
Director.Nomenclatură AS DirectoryNomenclaturi
CONEXIUNEA STÂNGA Registrul de acumulări Contabilitatea articolelor Solduri AS Solduri contabile a articolelor
Element software AccountingRemains.Nomenclature = Nomenclatură Directory.Link
UNDE
Nomenclatură Directory.ThisGroup = FALSE

Rezultat a acestei cereri va fi identic cu rezultatul interogării prezentate în secțiunea anterioară.

Utilizarea funcției ISNULL() este de preferată decât utilizarea operației SELECT din următoarele motive: scrierea folosind ISNULL() este ceva mai compactă, ceea ce crește lizibilitatea interogării. În plus, în cazul în care expresia testată este o funcție complexă, inclusiv o funcție agregată, calculul funcției ISNULL() poate fi efectuat mai rapid decât omologul său scris folosind funcția SELECT.

Caracteristicile funcției ISNULL

Funcția ISNULL(), deși este un analog al operației SELECT cu verificarea valorii pentru NULL, are totuși o diferență. Diferența este că, dacă expresia funcției este de tip șir sau numeric, expresia de înlocuire va fi convertită în tipul expresiei testate.

Deci, de exemplu, în cazul în care expresia testată este de tip String(5), iar expresia de înlocuire este de tip String(10), tipul rezultat va fi convertit în tipul String(5). Ca rezultat, atunci când funcția returnează o expresie de înlocuire, valoarea va fi trunchiată la cinci caractere.

La expresiile numerice situația este similară: valoarea expresiei înlocuite va fi convertită în tipul celei care se verifică, i.e. expresia care este înlocuită poate fi trunchiată. Dacă valoarea nu poate fi convertită, limbajul de interogare va eșua interogarea. De exemplu, o încercare de a converti numărul 1000 la tipul Number(2) va eșua cu o eroare.

În procesul de dezvoltare a rapoartelor despre SKD în 1C Enterprise, apare adesea sarcina de a afișa zerouri în câmpurile de raport goale. Cert este că, dacă datele necesare nu sunt în baza de date, interogarea returnează nu numărul 0, ci o valoare specială NULL, care apoi trebuie convertită într-un număr. De exemplu, dacă scriem

iar registrul de informații este gol, atunci rezultatul solicitării în câmpul „Preț” va fi valori NULL. Și dacă, în funcție de condițiile sarcinii, trebuie să afișăm zerouri în raport, atunci trebuie să compunem interogarea după cum urmează:

Ai o întrebare sau ai nevoie de ajutor de la un consultant?

Dar imaginați-vă că folosim o conexiune de 2 seturi de date într-un sistem de control al accesului, iar rezultatul unuia dintre ele se dovedește a fi gol. În acest caz, construcția ISNULL din textul de solicitare al acestui set nu ne va ajuta, deoarece va returna o selecție goală. Nu vor exista valori NULL care să poată fi convertite la 0, nu va fi nimic acolo. NULL apare numai după ce seturile de date sunt conectate, iar sistemul de layout este responsabil pentru acest lucru. Soluția rămasă este utilizarea câmpurilor calculate. În exemplul nostru, va trebui să creăm un câmp calculat „Preț” și să introducem expresia ISNULL(Preț,0) în expresia sa. În momentul în care expresiile de câmp calculate se declanșează, interogările au fost deja unite, așa că vom avea deja un câmp „Preț” și va conține NULL. Prin crearea unui câmp calculat cu același nume, înlocuim în esență câmpul pe care ni l-au returnat seturile de date.

Limbajul de interogare 1C este una dintre principalele diferențe dintre versiunile 7.7 și 8. Unul dintre cele mai importante puncte în învățarea programării 1C este limbajul de interogare. În 1C 8.3, interogările sunt cel mai puternic și eficient instrument pentru obținerea datelor. Limbajul de interogare vă permite să obțineți informații din baza de date într-un mod convenabil.

Sintaxa în sine amintește foarte mult de T-SQL clasic, cu excepția faptului că în 1C, folosind limbajul de interogare, puteți primi date doar folosind constructul Select. Limbajul acceptă, de asemenea, constructe mai complexe, de exemplu, (cerere în cadrul unei cereri). Interogările în 1C 8 pot fi scrise atât în ​​chirilic, cât și în latină.

În acest articol voi încerca să vorbesc despre principalele cuvinte cheie în limbajul de interogare 1C:

  • alege
  • permis
  • variat
  • expres
  • primul
  • pentru schimbare
  • sens
  • tipul valorii (și operatorul REFERENCE)
  • alegere
  • a se grupa cu
  • având
  • ISNULL
  • Da NULL
  • conexiuni - dreapta, stânga, interne, pline.

Precum și câteva mici trucuri ale limbajului 1C, folosindu-te de care poți construi în mod optim textul de solicitare.

Pentru a depana interogările în sistemul 1C 8.2, este furnizat un instrument special - consola de interogări. Puteți vedea descrierea și o puteți descărca folosind link-ul -.

Să ne uităm la cei mai importanți și interesanți operatori ai limbajului de interogare 1C.

SELECTAȚI

În limbajul de interogare 1C Enterprise 8, orice interogare începe cu cuvânt cheie ALEGE. În limbajul 1C nu există constructe UPDATE, DELETE, CREATE TABLE, INSERT; aceste manipulări sunt efectuate în tehnologia obiectelor. Scopul său este de a citi numai datele.

De exemplu:

ALEGE
Director curent.Nume
DIN
Director.Nomenclatură AS Director curent

Interogarea va returna un tabel cu nume de elemente.

În apropierea structurii ALEGE puteți găsi cuvinte cheie PENTRU SCHIMBARE, PERMIS, VARIAT, PRIMUL

PERMIS— selectează numai înregistrările din tabel la care utilizatorul curent are drepturi.

VARIAT— înseamnă că rezultatul nu va conține linii duplicate.

SELECTARE (CAZ)

Foarte des, acest design este subestimat de programatori. Un exemplu de utilizare a acestuia:

Director curent.Nume,

CÂND Directorul curent.Serviciul ATUNCI

"Serviciu"

SFÂRȘIT CUM SE VEZI Nomenclatura

Director.Nomenclatură AS Director curent

Exemplul va returna o valoare text în câmpul „Tip articol” - „Produs” sau „Serviciu”.

UNDE

Designul limbajului de interogare 1C, care vă permite să impuneți selecția datelor primite. Vă rugăm să rețineți că sistemul primește toate datele de la server și numai atunci este selectat pe baza acestui parametru.

ALEGE
Director.Nume
DIN
Director curent.Nomenclatură AS Director curent
WHERE CurrentDirectory.Service = TRUE

În exemplu, selectăm înregistrări pentru care valoarea atributului „Service” este setată la „True”. În acest exemplu, ne-am descurca cu următoarea condiție:

„UNDE ESTE SERVICIUL”

În esență, selectăm rânduri în care expresia de după cuvântul cheie este egală cu „Adevărat”.

Puteți folosi condiții directe în expresii:

Cod WHERE = "005215"

Folosind operatorul „VALUE()” în condiții, utilizați accesul la elemente și enumerari predefinite într-o solicitare 1C:

WHERE Tipul articolului = Valoare(Enumeration.Item Types.Product)

Valorile de timp pot fi specificate după cum urmează:

WHERE Data primirii > DATETIME(2012,01,01):

Cel mai adesea, condițiile sunt specificate ca parametri trecuți la cerere:

Obțineți 267 de lecții video pe 1C gratuit:

WHERE NomenclatureGroup= &NomenclatureGroup

O condiție poate fi impusă tipului de atribut dacă este de tip compus:

Dacă trebuie să limitați selecția dintr-o listă de valori sau dintr-o matrice, puteți face următoarele:

UNDE este Registrul de acumulare. Registrator B (&Lista documentelor pentru selecție)

Condiția poate fi, de asemenea, complexă, constând din mai multe condiții:

WHERE Data primirii > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

A SE GRUPA CU

Proiectarea limbajului de interogare 1C 8.2 utilizat pentru gruparea rezultatului.

De exemplu:

ALEGE
Recepție de bunuri și servicii Bunuri. Bunuri,
SUM(Recepția BunurilorServiciiMarfurilor.Cantitate) AS Cantitate,
SUM(Recepția BunurilorServiciiMarfurilor.Suma) AS Sumă
DIN
Document.Recepția de Bunuri și Servicii.Bunuri CUM Primirea de Bunuri și Servicii Bunuri

A SE GRUPA CU
Primirea mărfurilorServiciiBunuri.Marfuri

Această solicitare va rezuma toate încasările după sumă și cantitate pe articol.

Pe lângă cuvântul cheie SUMĂ Puteți utiliza alte funcții agregate: CANTITATE, NUMĂR DE DIFERITE, MAXIM, MINIM, IN MEDIE.

AVÂND

Un design care este adesea uitat, dar este foarte important și util. Vă permite să specificați selecția sub forma unei funcții agregate, acest lucru nu se poate face în proiectare UNDE.

Exemplu de utilizare a HAVING într-o solicitare 1C:

ALEGE
Recepție de bunuri și servicii Bunuri. Bunuri,
SUM(Recepția BunurilorServiciiMarfurilor.Cantitate) AS Cantitate,
SUM(Recepția BunurilorServiciiMarfurilor.Suma) AS Sumă
DIN
Document.Recepția de Bunuri și Servicii.Bunuri CUM Primirea de Bunuri și Servicii Bunuri

A SE GRUPA CU
Primirea Bunurilor si Serviciilor Bunuri.marfuri

SUM(Recepția mărfurilorServiciiMarfurilor.Cantitate) > 5

Deci vom selecta numărul de produse care au sosit mai mult de 5 bucăți.

SENS()

De exemplu:

WHERE Bank = Valoare(Directory.Banks.EmptyLink)

WHERE Tip de nomenclatură = Valoare(Directory.Tipuri de nomenclatură.Produs)

WHERE Tip element = Valoare (Enumeration.Item Types.Service)

TYPE la cerere

Tipul de date poate fi verificat folosind funcțiile TYPE() și VALUETYPE() sau folosind operatorul logic REFERENCE.

EXPRES()

Operatorul Express în interogările 1C este utilizat pentru a converti tipurile de date.

Sintaxă: EXPRES(<Выражение>CUM<Тип значения>)

Folosind-o, puteți converti valorile șirurilor în date sau valorile de referință în date șirurile și așa mai departe.

În aplicațiile practice, operatorul Express() este foarte des folosit pentru a converti câmpuri de lungime nelimitată, deoarece câmpurile de lungime nelimitată nu pot fi selectate, grupate etc. Dacă astfel de câmpuri nu sunt convertite, veți primi o eroare Nu puteți compara câmpuri de lungime nelimitată și câmpuri de tipuri incompatibile.

ALEGE
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
DIN
Registrul de informații Informații de contact CUM Informații de contact

A SE GRUPA CU
EXPRESS(ContactInfo.Representation AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Suficient caracteristică utilă Limbajul de interogare 1C, care verifică valoarea din înregistrare și dacă este egală NUL, Acest lucru vă permite să îl înlocuiți cu propria dvs. valoare. Cel mai adesea folosit la obținerea tabelelor virtuale de solduri și cifre de afaceri pentru a se ascunde NULși pune un 0 clar (zero).

ISNULL(Impozite înainte de lună. Beneficiu FSS aplicat, 0)

O astfel de funcție a limbajului de interogare 1C ISNULL va returna zero dacă nu există nicio valoare, ceea ce va evita o eroare.

A TE ALATURA

Există 4 tipuri de conexiuni: STÂNGA, DREAPTA, COMPLET, INTERN.

CONEXIUNEA STÂNGA și DREAPTA

Îmbinările sunt folosite pentru a lega două tabele pe baza unei anumite condiții. Caracteristică când LEFT JOIN este că luăm primul tabel specificat în întregime și legăm condiționat al doilea tabel. Câmpurile celui de-al doilea tabel care nu au putut fi legate de condiție sunt completate cu valoarea NUL.

Un exemplu de alăturare stângă într-o solicitare 1C:

Acesta va returna întregul tabel și va completa câmpul „Bancă” numai în acele locuri în care este îndeplinită condiția „Contrapărți.Nume = Bănci.Nume”. Dacă condiția nu este îndeplinită, câmpul Bank va fi setat la NUL.

RIGHT JOIN în limba 1C 8.3 absolut asemănătoare Conexiune LEFT, cu excepția unei diferențe: în DREPTUL DE CONECTARE Masa „principală” este a doua, nu prima.

CONEXIUNE COMPLETA

CONEXIUNE COMPLETA diferă de stânga și dreapta prin faptul că afișează toate înregistrările din două tabele și le conectează numai pe cele pe care le poate conecta în funcție de condiție.

De exemplu:

CONEXIUNE COMPLETA
Director.Bănci CUM Bănci

DE

Limbajul de interogare va returna ambele tabele complet numai dacă este îndeplinită condiția Join records. Spre deosebire de o îmbinare stânga/dreapta, este posibil ca NULL să apară în două câmpuri.

INNER JOIN

INNER JOIN difera de plin de subiecte, care afișează numai acele înregistrări care ar putea fi conectate conform unei anumite condiții.

De exemplu:

DIN
Director.Contrapărți AS Clienți

INNER JOIN
Director.Bănci CUM Bănci

DE
Clients.Name = Banks.Name

Această interogare va returna numai rândurile în care banca și contrapartea au același nume.

Concluzie

Aceasta este doar o mică parte din sintaxa din limbajul de interogare 1C 8; în viitor voi încerca să iau în considerare câteva puncte mai detaliat, să arătam și multe altele!

Când lucrează cu interogări, orice programator trebuie să interacționeze cu valori goale într-un fel sau altul. Ce înțelegem prin valoare goală?

O valoare nulă este fie nicio valoare, fie valoarea implicită pentru tipul de date. Cu tipurile primitive totul este destul de simplu: valoarea implicită este o anumită valoarea initiala, servind drept punct de plecare.

Tipuri de valori nule

Să ne uităm la tipurile de valori goale care pot fi întâlnite sau necesare într-o interogare.

  • Pentru tipul Number, valoarea goală este zero – 0.
  • Pentru tipul String – un șir gol – „”.
  • Pentru tipul Data – 1 ianuarie a primului an – 01/01/0001 00:00:00. De la această dată, timpul este numărat în 1C.*
  • Pentru tipul boolean, valoarea implicită este falsă din punct de vedere tehnic, dar logic ambele valori ale tipului sunt completate. Prin urmare, a decide dacă o valoare goală este falsă sau nu se bazează pe logica unui anumit algoritm.

*Atenție, în afara 1C există diferite sisteme de numărare a datelor cu puncte de plecare diferite.

Valoarea lipsă corespunde pe deplin numai tipului Nul. Acest tip conține o singură valoare, ceea ce indică nicio valoare.

Tip similar Nedefinit conține de asemenea o singură valoare, dar Nedefinit nu înseamnă absența datelor, ci doar imposibilitatea determinării valorii implicite pentru tip. Undefined este valoarea implicită pentru tipurile compozite, inclusiv cele care nu sunt definite în mod explicit. De exemplu, valoarea în linie nouă tabel de valori într-o coloană pentru care tipul nu este definit în mod explicit.

Co referinţă tipuri există mult mai puțină incertitudine. Toate tipurile de referință oferă o valoare nulă. O valoare goală este aceeași referință care indică tipul de date, dar fără identificator unic sens specific. Datorită acestui lucru, putem trata un link gol ca și cum ar fi unul obișnuit și îi putem aplica toate metodele oferite de platformă, lucrând cu el ca și cu o valoare cu drepturi depline.

Lucrul cu valori nule într-o interogare

Indiferent dacă trebuie să introduceți în mod explicit o valoare goală în rezultatul interogării sau să comparați cu aceasta valorile existente, trebuie să știi cum să descrii valorile goale într-o interogare.

Tipuri Număr, șir, boolean sunt descrise în cerere ca în limbajul încorporat:

SELECT 0 AS ExampleTypeNumber, „Bună lume” AS ExampleTypeString, True AS ExampleTypeBoolean

Nedefinit, fiind în esență un tip primitiv, este descris în mod similar:

Selectați Batch.Period din Accumulation Register.Batch As Lot Where Remains.DocumentBatch = Undefined

Valorile de referință goale sunt puțin mai dificil de definit. Toate obiectele de referință au o valoare de serviciu predefinită EmptyRef. Datorită acestui fapt, este posibil să selectați o legătură goală într-un singur mod - prin funcția Value:

Selectați Valoare(Directory.Nomenclature.EmptyLink) Cum se golește Nomenclatura

Posibilitățile de lucru cu valori Null sunt oarecum mai bogate. Ca și alte tipuri primitive, Null este descris în același mod ca și în limbajul încorporat. În plus, există un operator special Is Null și o funcție IsNull.

  • Operatorul Is Null vă permite să creați o expresie logică care compară valoarea selectată cu valoarea Null.
  • Funcția IsNull returnează primul argument dacă nu este Null, iar al doilea argument în caz contrar.

Expresiile care definesc valori goale pot fi folosite în orice secțiune de interogare care acceptă expresii. De exemplu, puteți adăuga un link gol la secțiunea Selectare sau o verificare Nulă la Condiție.

Exemple practice

Folosind funcția Value

Selectați Products.Link As Nomenclature, Products.Link = Value(Directory.Nomenclature.EmptyLink) Like ThisLinkEmpty From TueProducts As TueProducts

Folosind operatorul Este nul

Selectați Products.Link ca nomenclatură, Products.Link este nul ca acesta LinkEmpty din TueProducts As TueProducts

Null la stânga sau alăturare completă

Se verifică Null

Exemplul demonstrează o situație practică obișnuită când, cu o alăturare stângă, nu există nicio potrivire pentru prima masă în a doua. În acest caz, toate câmpurile celui de-al doilea tabel vor fi Nule.

Selectați TueProducts.Link As Nomenclature, Remains.QuantityRemaining As Cantitate, Remains.QuantityRemaining este nul ca NoRemaining din TueProducts ca TueProducts Conexiune din stânga RegisterAccumulations.ProductsInWarehouses.Remains As Remains By TueProducts.Link = Remains.Nomenclature

Gestionarea valorilor nule

Modificarea interogării anterioare pentru a demonstra o tehnică comună de obținere a unor valori implicite pentru a le înlocui pe cele lipsă. În acest exemplu, folosind funcția IsNull, valoarea rămasă lipsă este înlocuită cu un 0 corect logic.

Selectați TueProducts.Link As Nomenclature, IsNull (Remaining.QuantityRemaining, 0) As Quantity From TueProducts ca TueProducts Conexiune din stânga RegisterAccumulations.ProductsInWarehouses.Remains As Remains By TueProducts.Link = Remains.Nomenclature

În acest articol, am analizat diferite tipuri de valori goale și proprietățile lor și am studiat modalități de a determina tipuri variate valori goale în interogări, iar în partea practică ne-am convins de ușurința de aplicare a materialului luat în considerare.

NUL- valori lipsă.
A nu se confunda cu valoarea zero! NULL nu este un număr, nu este egal cu un spațiu, o referință goală sau nedefinit.

NULL este o valoare de formare a tipului, adică există un tip NULL și o singură valoare de acest tip.

Valorile NULL apar în interogare în următoarele situații:
a) O îmbinare exterioară în care nu a fost găsită nicio înregistrare corespunzătoare într-un alt tabel (dacă stânga - în al doilea, cu dreapta - în primul, dacă plină - în ambele)
b) Accesarea detaliilor elementelor pentru un grup și invers.
c) NULL în lista câmpurilor de selecție (SELECT)
d) Accesarea detaliilor pentru un link întrerupt

ESTE NUL utilizat în operatorul SELECT (ca și cum ar fi verificat dacă valoarea este goală (Value IS NULL)):
Cod 1C v 8.x
ALEGERE
WHEN Value IS NULL THEN ResultIfNULL
ELSE Sens
Sfârşit

alt exemplu:
Cod 1C v 8.x SELECT
ALEGEREA CÂND Elementele de contabilitate rămase.Cantitatea rămasă ESTE NULĂ ȘI 0
Altfel Contabilizarea nomenclaturii rămase Cantitatea rămasă AS Cantitatea rămasă
DIN

UNDE

Funcţie ISNULL(valoare, ResultIfNULL) returnează valoarea primului său parametru dacă nu este NULL și valoarea celui de-al doilea parametru în caz contrar
Este restrâns SELECT...END, dar este preferat ISNULL.
Cod 1C v 8.x
ALEGE
ISNULL(Directory.Nomenclature.Article, "---") AS Articolul,
Director.Nomenclatura.Prezentarea AS Nomenclatura

alt exemplu:
Cod 1C v 8.x
ALEGE
Director de nomenclatură. Nume,
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS CantitateRemaining
DIN
Director.Nomenclatură AS DirectoryNomenclatures
CONEXIUNEA STÂNGA Registrul de acumulări Contabilitatea articolelor Solduri AS Solduri contabile a articolelor
Element software AccountingRemains.Nomenclature = Nomenclatură Directory.Link
UNDE
Nomenclatura Directory.ThisGroup = FALSE
În acest exemplu se obțin toate elementele directorului de articole, după care, pentru fiecare articol, se obțin soldurile curente din registrul de acumulare. Deoarece pentru un articol pentru care nu există solduri, tabelul virtual de solduri nu va returna o înregistrare, apoi ca urmare a conexiunii în câmpul „Item AccountingRemaining.QuantityRemaining” vor exista valori NULL pentru articolul pentru care există nu erau solduri. Pentru a ne asigura că în locul valorii NULL, rezultatul solicitării conține valoarea 0, am folosit funcția ISNULL(), care va efectua înlocuirea dorită.

ISNULL diferă de CHOICE din următoarele motive:
a) Dacă ISNULL, interogarea este mai ușor de citit (mai simplă)
b) Dacă ISNULL, dacă este bifată o expresie complexă, aceasta funcționează mai rapid deoarece este calculată o dată
c) Dacă ISNULL, expresia de înlocuire este convertită la tipul expresiei testate dacă este de tip String (lungime) sau Number (adâncime de biți).

Nu puteți verifica valorile pentru NULL folosind egalitatea obișnuită, deoarece SQL utilizează logica cu trei valori - Adevărat, Fals, NULL, iar rezultatul unei astfel de comparații va fi NECUNOSCUT, care în 1C 8.0 este similar cu FALSE.
NUL<>0, deci pentru stânga conexiuni externe Ref. Nomenclator cu tabele de solduri, preturi, Contrapartide cu decontari reciproce, in lipsa unor astfel de inregistrari, va exista NULL, care nu este egal cu 0. Cea mai bună decizie- ISNULL