Računalniki Windows internet

Vrednosti so nič (obstaja nič in obstaja null()). Null vrednosti (obstajajo null in obstajajo null()) V zahtevi je 1s null

NIČ– manjkajoče vrednosti.
Ne zamenjati z null! NULL ni število, ni enako presledku, ničelna referenca, nedefinirana.

NULL je vrednost, ki tvori tipe, t.j. obstaja tip NULL in ena sama vrednost te vrste.

Vrednosti NULL se pojavijo v poizvedbi v naslednjih primerih:
a) Zunanji spoj, pri katerem v drugi tabeli ni bilo najdenega ustreznega zapisa (če je levo - v drugi, če desno - v prvi, če je polno - v obeh)
b) Dostop do atributov elementov za skupino in obratno.
c) NULL na seznamu izbirnih polj (IZBERI)
d) Dostop do podrobnosti za prekinjeno povezavo

JE NIČ uporabljen v stavku SELECT (kot da bi preverjali, ali je vrednost prazna (vrednost JE NULL)):
Koda 1C v 8.x
IZBIRA
KO JE vrednost NULL, THEN ResultIFNULL
DRUGO Pomen
KONEC

še en primer:
Koda 1C v 8.x IZBERI

IZBIRA, KO JE AccountingNomenclatureRemains.QuantityRemainder JE NULL, POTEM 0
ELSE AccountingNomenclatureRemains.QuantityRemaining AS Preostala količina
IZ



KJE

Funkcija ISNULL (vrednost, ResultIFNULL) vrne vrednost svojega prvega parametra, če ni nič, in vrednost drugega parametra v nasprotnem primeru
Je strnjeno SELECT…END, vendar je prednostna možnost ISNULL.
Koda 1C v 8.x
IZBERI
ISNULL(kataloška.Nomenklatura.Člen, "---") KOT člen,
Imenik.Nomenklatura.Representation AS Nomenklatura

še en primer:
Koda 1C v 8.x
IZBERI
Imenik nomenklature. Ime,
ISNULL(AccountingNomenclatureRemainders.QuantityRemaining, 0) AS Preostala količina
IZ
Imenik Nomenklatura AS Imenik nomenklature
LEVO PRIDRUŽI
Računovodska nomenklatura programske opremeRemains.Nomenclature = Nomenklatura imenika.Povezava
KJE
ReferenceNomenclature.ThisGroup = FALSE
IN ta primer pridobijo se vsi elementi referenčne knjige nomenklature, nato pa se za vsako nomenklaturo pridobijo tekoča stanja iz akumulacijskega registra. Ker za postavko, za katero ni stanja, navidezna tabela stanja ne bo vrnila zapisa, potem bodo kot rezultat povezave v polju "Obračun ostankov. Količina ostankov" vrednosti NULL za artikla, za katerega ni bilo stanja. Da bi imeli v rezultatu poizvedbe vrednost 0 namesto NULL, smo uporabili funkcijo ISNULL (), ki bo izvedla želeno zamenjavo.

JE NIČ razlikuje od SELECT iz naslednjih razlogov:
a) Če je NULL, je poizvedba bolje berljiva (preprostejša)
b) Ko je ISNULL, če se preverja zapleten izraz, deluje hitreje, saj je ovrednoten enkrat
c) Ko JE NULL, se nadomestni izraz pretvori v tip izraza, ki se preverja, če ima vrsto String (dolžina) ali Number (dolžina).

Vrednosti za NULL ne morete preveriti z navadno enakostjo, ker ima SQL logiko s tremi vrednostmi - True, False, NULL, rezultat takšne primerjave pa bo NEZNANO, kar je podobno FALSE v 1C 8.0.
NIČ<>0, torej za leve zunanje spoje, sp. Nomenklatura s tabelami stanja, cenami, nasprotnimi strankami z medsebojnimi poravnavami, če takšnih zapisov ni, bo NULL, kar ni enako 0. Najboljša rešitev– JE NIČ

Pri delu z jezikom poizvedb včasih pride do situacije, ko morate vrednost NULL zamenjati s kakšno drugo vrednostjo. Potreba po takšni operaciji se lahko pojavi na primer pri prejemu stanja v skladišču za celoten obseg. Ta članek opisuje, kako uporabiti funkcijo jezika poizvedb ISNULL() za reševanje takšnih težav, obravnava pa tudi druge rešitve.

Funkcija ISNULL

Jezik poizvedbe izvaja funkcijo ISNULL(), katere namen je zamenjati izraz z drugim izrazom, če je imel izraz vrednost NULL. Sintaktični diagram za to funkcijo je videti takole:

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

Ta funkcija bo vrnil vrednost prvega parametra, če ni NULL, in vrednost drugega izraza v nasprotnem primeru.


IZBERI
ISNULL(AccountingNomenclatureRemainders.QuantityRemaining, 0) AS Preostala količina
IZ

KJE

V tem primeru se pridobijo vsi elementi imenika postavk, nato pa se za vsako postavko pridobijo trenutna stanja iz registra akumulacije. Ker za postavko, za katero ni stanja, navidezna tabela stanja ne bo vrnila zapisa, potem bodo kot rezultat povezave v polju "Obračun ostankov. Količina ostankov" vrednosti NULL za artikla, za katerega ni bilo stanja. Da bi imeli v rezultatu poizvedbe vrednost 0 namesto NULL, smo uporabili funkcijo ISNULL (), ki bo izvedla želeno zamenjavo.

Uporaba operacije SELECT

Za rešitev težave, opisane prej, lahko uporabite operacijo SELECT poizvedbenega jezika. Primer, kako bi poizvedba, podobna prejšnji, izgledala takole:


IZBERI
Imenik nomenklature. Ime,
IZBIRA, KO JE AccountingNomenclatureRemains.QuantityRemainder JE NULL, POTEM 0
ELSE AccountingNomenclatureRemains.QuantityRemaining AS Preostala količina
IZ
Imenik Nomenklatura AS Imenik nomenklature
LEVO PRIDRUŽI
Računovodska nomenklatura programske opremeRemains.Nomenclature = Nomenklatura imenika.Povezava
KJE
ReferenceNomenclature.ThisGroup = FALSE

Rezultat te poizvedbe bo enak rezultatu poizvedbe, podani v prejšnjem razdelku.

Uporaba funkcije ISNULL() je boljša od uporabe operacije SELECT iz naslednjih razlogov: zapis z uporabo ISNULL() je nekoliko bolj kompakten, kar izboljša berljivost poizvedbe. Poleg tega je v primeru, ko je izraz, ki se preverja, zapletena funkcija, vključno z agregatno funkcijo, lahko izračun funkcije ISNULL () izveden hitreje kot analog, napisan s funkcijo SELECT.

Značilnosti funkcije ISNULL

Funkcija ISNULL(), čeprav je analog operacije SELECT s preverjanjem vrednosti za NULL, pa ima razliko. Razlika je v tem, da če ima izraz funkcije niz ali številski tip, bo nadomestni izraz pretvorjen v tip izraza, ki se preverja.

Torej, na primer, če je preizkušeni izraz tipa String(5) in je nadomestni izraz tipa String(10), bo tip rezultata pretvorjen v tip String(5). Kot rezultat, ko funkcija vrne nadomestni izraz, bo vrednost skrajšana na pet znakov.

Pri številskih izrazih je situacija podobna: vrednost zamenjanega izraza bo pretvorjena v vrsto preverjenega izraza, t.j. nadomestni izraz je lahko skrajšan. Če vrednosti ni mogoče pretvoriti, bo jezik poizvedbe končal poizvedbo z napako. Na primer, poskus pretvorbe števila 1000 v vrsto Number(2) ne bo uspel.

Zdravo.
V nadaljevanje primitivnih tipov podatkov, kot smo jih nedavno obravnavali, in danes bomo govorili o NULL tip.

Tip NULL je literal, ki lahko vsebuje samo eno vrednost - vrednost "NULL".
NULL — Ni enako ničelni referenci, presledku ali vrsti nedefinirano.

Uporablja se pri delu z bazo podatkov (pri združevanju tabel), uporablja se za ugotavljanje manjkajoče vrednosti pri delu z bazo podatkov.
Vrednost NULL lahko dobite tako, da to vrednost dodelite spremenljivki:
Spremenljivka =NULL.

Vrednosti tipa NULL se oblikujejo kot rezultat združevanja, ko element iz ene tabele po pogoju nima ustreznega elementa iz druge. Vrednost NULL ima posebne značilnosti:
- primerjava vrednosti NULL s katerim koli drugim argumentom vedno vrne false;

Za določitev vrednosti NULL se uporablja konstrukcija JE NIČ.
Če želite pretvoriti vrsto NULL, uporabite funkcijo ISNULL (isNULL).

Da bi kot rezultat poizvedbe odrezali polja, ki vsebujejo vrednosti NULL, se uporabljajo naslednje konstrukcije: - ni NULL - ni NULL

Primeri

Primer preverjanja vrednosti za NULL

IZBERI Imenik. Nomenklatura. Ime, imenik. Nomenklatura. Nabavna cena KJE Referenca. Nomenklatura. Nabavna cena Da NULL

Primer funkcije ISNULL().
Vrnjena vrednost funkcije ISNULL () : vrednost prvega parametra, če prvi parameter ne vsebuje ničelne vrednosti, sicer vrednost drugega parametra. Drugi parameter bo pretvorjen v vrsto prvega parametra, če je tip prvega parametra niz ali številka.

// Pridobite znesek v polju za količino. V primeru, da ni vnosov, dobite 0 IZBIRI ISNULL(SUM(Količina), 0 ) KOT Količina IZ dokumenta. Stroški Sestava

S spoštovanjem, programer 1C.
Pustite komentar, zanima me vaše mnenje.

NIČ- manjkajoče vrednosti.
Ne zamenjati z null! NULL ni število, ni enako presledku, ničelna referenca, nedefinirana.

NULL je vrednost, ki tvori tipe, t.j. obstaja tip NULL in ena sama vrednost te vrste.

Vrednosti NULL se pojavijo v poizvedbi v naslednjih primerih:
a) Zunanji spoj, pri katerem v drugi tabeli ni bilo najdenega ustreznega zapisa (če je levo - v drugi, če desno - v prvi, če je polno - v obeh)
b) Dostop do atributov elementov za skupino in obratno.
c) NULL na seznamu izbirnih polj (IZBERI)
d) Dostop do podrobnosti za prekinjeno povezavo

JE NIČ uporabljen v stavku SELECT (kot da bi preverjali, ali je vrednost prazna (vrednost JE NULL)):
Koda 1C v 8.x
IZBIRA
KO JE vrednost NULL, THEN ResultIFNULL
DRUGO Pomen
KONEC

še en primer:
Koda 1C v 8.x IZBERI
IZBIRA, KO JE AccountingNomenclatureRemains.QuantityRemainder JE NULL, POTEM 0
ELSE AccountingNomenclatureRemains.QuantityRemaining AS Preostala količina
IZ

KJE

Funkcija ISNULL (vrednost, ResultIFNULL) vrne vrednost svojega prvega parametra, če ni nič, in vrednost drugega parametra v nasprotnem primeru
Je strnjeno SELECT…END, vendar je prednostna možnost ISNULL.
Koda 1C v 8.x
IZBERI
ISNULL(kataloška.Nomenklatura.Člen, "---") KOT člen,
Imenik.Nomenklatura.Representation AS Nomenklatura

še en primer:
Koda 1C v 8.x
IZBERI
Imenik nomenklature. Ime,
ISNULL(AccountingNomenclatureRemainders.QuantityRemaining, 0) AS Preostala količina
IZ
Imenik Nomenklatura AS Imenik nomenklature
LEVO PRIDRUŽI
Računovodska nomenklatura programske opremeRemains.Nomenclature = Nomenklatura imenika.Povezava
KJE
ReferenceNomenclature.ThisGroup = FALSE
V tem primeru so pridobljeni vsi elementi imenika postavk, nato pa se za vsako postavko pridobijo trenutna stanja iz registra akumulacije. Ker za postavko, za katero ni stanja, navidezna tabela stanja ne bo vrnila zapisa, potem bodo kot rezultat povezave v polju "Obračun ostankov. Količina ostankov" vrednosti NULL za artikla, za katerega ni bilo stanja. Da bi imeli v rezultatu poizvedbe vrednost 0 namesto NULL, smo uporabili funkcijo ISNULL (), ki bo izvedla želeno zamenjavo.

JE NIČ razlikuje od SELECT iz naslednjih razlogov:
a) Če je NULL, je poizvedba bolje berljiva (preprostejša)
b) Ko je ISNULL, če se preverja zapleten izraz, deluje hitreje, saj je ovrednoten enkrat
c) Ko JE NULL, se nadomestni izraz pretvori v tip izraza, ki se preverja, če ima vrsto String (dolžina) ali Number (dolžina).

Vrednosti za NULL ne morete preveriti z navadno enakostjo, ker ima SQL logiko s tremi vrednostmi - True, False, NULL, rezultat takšne primerjave pa bo NEZNANO, kar je podobno FALSE v 1C 8.0.
NIČ<>0, torej za leve zunanje spoje, sp. Nomenklatura s tabelami stanja, cenami, nasprotnimi strankami z medsebojnimi poravnavami, če takšnih zapisov ni, bo NULL, kar ni enako 0. Najboljša rešitev je NULL

27.06.2017

NULL, ISNULL() in IS NULL v poizvedbah 1C

Kaj je NULL

NIČ kot rezultat zahteve pomeni odsotnost vrednosti (ni prazna vrednost, ni nič, ni ničelna referenca).
Na primer, zaradi združevanja tabel poizvedb v eni od tabel pri povezovanju s povezovalnimi polji ni bila najdena nobena vrednost. Ali pa se zahteva nanaša na neobstoječ atribut (lastnost).

NULL ni enako NULL!

Če želite naložiti izbor (pogoj) s preverjanjem NULL v poizvedbi 1C, se bo konstrukcija, kot je "WHERE VT.Field1 = NULL", vedno vrnila LAŽNO! Če želite preveriti, uporabite poseben operater

V zahtevi 1C JE NULL

Če želite preizkusiti vrednost (ali delati z vrednostmi) za NULL, morate uporabiti naslednjo konstrukcijo "WHERE VT.Field1 IS NULL" Ali drug primer, uporabite v konstrukciji IZBIRA"IZBIRA | KO JE VT.Field1 NULL | THEN" Omeniti velja, da je funkcija preverjanja polja za NULL ena izmed najbolj intenzivnih virov v poizvedbah 1C. Zato, če ga želite uporabiti v stanju poizvedbe, razmislite, ali je mogoče takšno preverjanje zamenjati notranja povezava(vrsta združevanja v poizvedbah, pri kateri v izboru ostanejo samo zapisi, ki so prisotni v obeh tabelah).

Funkcija ISNULL() v poizvedbi 1C

Funkcija ISNULL() omogoča zamenjavo manjkajoče vrednosti v polju zahteve z navedeno vrednostjo (standardna vrednost, škrbina).
Na primer, če ni informacij o stroških blaga, ga označimo enako 0 (nič) "IZBERI | HAVE NULL(T.Price, 0) AS Price | IZ preostalega blaga AS VT"

Zaključek

Poizvedbe pišite pravilno in optimalno. Ker je slaba zahteva koda zavore in sranja)