Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Hekuri
  • 1s kontrolloni për një vlerë të vargut bosh. Puna me vlera null në një pyetje

1s kontrolloni për një vlerë të vargut bosh. Puna me vlera null në një pyetje

Çfarë nënkuptohet me një rresht në 1s

Linjat në 1, si të dalloni një rresht nga llojet e tjera, sepse në modul të gjitha karakteret janë tekst, dhe për rrjedhojë një rresht. Çdo grup karakteresh i vazhdueshëm i rrethuar me thonjëza të dyfishta ("") konsiderohet një varg, si parazgjedhje është i zi në konfigurues.

Show ("Përshëndetje botë!");

Duhet gjithashtu të mbahet mend se disa metoda, si sistemore ashtu edhe të shkruara vetë, mund të kthejnë një vlerë vargu.

Për të zbuluar nëse vlera që na intereson është një varg, mund të krahasoni llojin e tij me llojin " Linjë":

If TypeValue("Some text") = Type("String") Pastaj Report("Lloji i vlerës - String"); FundNëse;

Ekzistojnë disa funksione të veçanta për të punuar me një varg që konverton llojet e tjera në një varg dhe anasjelltas. Ketu jane disa shembuj:

Vargu në numër

Numri ("123.45");

Numri ("123.45");

Nëse parametri përmban karaktere të pavlefshme, të tilla si shkronja, kjo do të shkaktojë një gabim.

Vargu deri në datën

Data ("20101220235959");

Koha është fakultative (6 karakteret e fundit).

Po kontrollon për një varg bosh

EmptyString() - ky funksion kontrollon nëse vargu i kaluar si parametër përmban karaktere domethënëse (karakteret e parëndësishme janë kryesisht të padukshme në ekran: hapësira, ndërprerja e linjës, etj.)

Linja e zbrazët (" ");
EmptyString (" a ");

Numri në varg

Vargu (123.45); Format (1253.25);

Për të krahasuar vargjet, thjesht mund të përdorni shenjën e barabartë

If "Thursday" = "E Enjte" Pastaj
FundNëse;

Shenja plus (+) përdoret për bashkimin e vargjeve. Bashkimi i vargjeve në programim quhet lidhje.

Dinak! Nëse shtohen disa variabla të llojeve të ndryshme, atëherë programi do të marrë për bazë llojin e ndryshores së parë. Prandaj, për të marrë saktësisht vlerën e llojit të vargut, mund të përdorni shënimin e mëposhtëm:

SomeThingString = ""+DayYear(CurrentDate()) +DitaWeek(CurrentDate());

Nëse e merrni rezultatin nga lista e mëparshme, do të duket diçka si kjo:

Siç mund ta shihni, nuk ka hapësirë ​​të mjaftueshme që ndan ditën e vitit dhe ditën e javës, për këtë mund të shtoni një hapësirë ​​("") si më poshtë:

SomeString = ""+DayYear(CurrentDate()) + " " +DitaWeek(CurrentDate());

Prishja e linjës

Ju mund të përdorni ose karakterin break për të thyer një rresht:

SomeThingString = ""+DayYear(CurrentDate()) + Simbols.PS + DayWeek(CurrentDate());

ose vijë e drejtë

SomeThingString = ""+DayYear(CurrentDate()) + " |"+DayWeek(CurrentDate());

Gjatë punës me pyetje, çdo programues duhet të ndërveprojë me vlera boshe në një mënyrë ose në një tjetër. Çfarë kuptojmë me vlerë boshe?

Një vlerë boshe është ose mungesa e një vlere ose vlera e paracaktuar për një lloj të dhënash. Me llojet primitive, gjërat janë mjaft të thjeshta: vlera e paracaktuar është një vlerë fillestare që shërben si pikë referimi.

Llojet e Nullave

Konsideroni llojet e vlerave boshe që mund të hasen ose të kërkohen në një pyetje.

  • Për llojin Number - vlera boshe është zero - 0.
  • Për llojin String - një varg bosh - "".
  • Për llojin Data, data e parë e janarit të vitit të parë është 01.01.0001 00:00:00. Është nga kjo datë që koha llogaritet në 1C. *
  • Për llojin Boolean, vlera e paracaktuar është teknikisht False, por logjikisht të dyja vlerat e tipit janë të mbushura. Prandaj, vendimi nëse vlera e zbrazët është False apo jo bazohet në logjikën e një algoritmi të caktuar.

*Kini kujdes, jashtë 1C ka sisteme të ndryshme datash me pika referimi të ndryshme.

Vlera që mungon plotësisht korrespondon vetëm me llojin I pavlefshëm. Ky lloj përmban vetëm një vlerë, e cila tregon mungesën e një vlere.

Lloji i ngjashëm E papërcaktuar gjithashtu përmban vetëm një vlerë, por e papërcaktuar nuk do të thotë mungesë e të dhënave, por vetëm pamundësi për të përcaktuar vlerën e paracaktuar për llojin. E padefinuar është vlera e paracaktuar për llojet e përbëra, duke përfshirë ato që nuk janë përcaktuar në mënyrë eksplicite. Për shembull, një vlerë në një rresht të ri në një tabelë vlerash në një kolonë për të cilën lloji nuk është përcaktuar qartë.

Kështu që referencë Llojet janë shumë më pak të paqarta. Të gjitha llojet e referencës ofrojnë një vlerë boshe. Një vlerë boshe është e njëjta referencë me një lloj të dhënash, por pa një identifikues unik për një vlerë të caktuar. Falë kësaj, ne mund ta trajtojmë një referencë boshe si një normale dhe të zbatojmë të gjitha metodat e ofruara nga platforma në të, duke punuar me të si një vlerë të plotë.

Puna me vlera null në një pyetje

Pavarësisht nëse duhet të vendosni në mënyrë eksplicite një vlerë null në rezultatin e pyetjes ose të krahasoni vlerat ekzistuese me të, duhet të dini se si të përshkruani vlerat null në një pyetje.

Llojet Numri, vargu, Boolean përshkruhen në kërkesë si në gjuhën e integruar:

SELECT 0 AS ExampleTypeNumber, "Hello World" AS ExampleTypeString, True AS ExampleTypeBoolean

I papërcaktuar, duke qenë në thelb një lloj primitiv, përshkruhet në mënyrë të ngjashme:

Zgjidhni Lots.Period nga Regjistri i Akumulimit.Shumë si Lots Where Remains.BatchDocument = I Padefinuar

Vlerat e zbrazëta të referencës janë pak më të vështira për t'u përcaktuar. Të gjitha objektet e referencës kanë një vlerë shërbimi të paracaktuar të EmptyReference. Falë kësaj, është e mundur të zgjidhni një lidhje boshe në një mënyrë të vetme - përmes funksionit Vlera:

Zgjidhni vlerën(Referenca.Nomenklatura.EmptyReference) As Empty Nomenklature

Mundësitë për të punuar me vlera Null janë disi më të pasura. Ashtu si llojet e tjera primitive, Null përshkruhet në të njëjtën mënyrë si në gjuhën e integruar. Përveç kësaj, ofrohet operatori special Is Null dhe funksioni Is Null.

  • Operatori Is Null ju lejon të krijoni një shprehje Boolean që krahason vlerën e zgjedhur me vlerën Null.
  • Funksioni IsNull kthen argumentin e parë nëse nuk është Null, dhe argumentin e dytë ndryshe.

Shprehjet që përcaktojnë null mund të përdoren në çdo seksion të pyetjeve që mbështesin shprehjet. Për shembull, mund të shtoni një lidhje null në seksionin Select ose një test Null në Kusht.

Shembuj praktik

Duke përdorur funksionin Vlera

Zgjidh Goods.Reference As Nomenklature, Goods.Reference = Vlera(Catalog.Nomenclature.EmptyReference) Like thisReferenceEmpty From wGoods As wGoods

Përdorimi i operatorit është Null

Zgjidh Goods.Link si nomenklaturë, Goods.Link është Null si kjoLinkEmpty

Nul në të majtë ose bashkim i plotë

Kontroll nul

Shembulli demonstron një situatë praktike të shpeshtë kur, me një bashkim majtas, për tabelën e parë nuk ka përputhje në të dytën. Në këtë rast, të gjitha fushat e tabelës së dytë do të jenë të barabarta me Null.

Zgjidh WProducts.Reference si Nomenklaturë, Remains.QuantityRemainder As Quantity, Remains.QuantityRemainder Is Null As NoRemainder Nga WProducts As WProducts Majtas Bashkohu Regjistri i Akumulimit.MallratNë magazinat.Remainders As Balance By TueGoods.Referenca = Mbetet.Nomenklatura

Trajtimi i vlerave zero

Modifikimi i pyetjes së mëparshme për të demonstruar një teknikë të zakonshme për marrjen e disa vlerave të paracaktuara në vend të atyre që mungojnë. Në këtë shembull, duke përdorur funksionin IsNull, vlera e mbetur që mungon zëvendësohet me 0-në logjikisht të saktë.

Zgjidhni TueProducts.Reference si nomenklaturë, IsNull(Remains.QuantityRemainder, 0) Si sasi nga TueProducts si WProducts Majtas Bashkohu Regjistri i Akumulimit.MallratNë magazinat.Remainders As Balance By TueGoods.Referenca = Mbetet.Nomenklatura

Në këtë artikull, ne shikuam lloje të ndryshme vlerash boshe dhe vetitë e tyre, studiuam se si të përcaktojmë lloje të ndryshme të vlerave boshe në pyetje dhe në pjesën praktike, u bindëm për lehtësinë e përdorimit të materialit të konsideruar. .

Query.Text = "ZGJEDH | meStorageUnits.Ref |FROM | Reference.usStorageUnits AS withStorageUnits // Shembulli 1. krahasimi me një vlerë boolean boolean: |WHERE | withStorageUnits.AllowFilterFromStandbyArea = False // Shembull është i përcaktuar boole. atëherë më mirë si ky: // kusht në një boolean negativ: | WHERE | NOT withStorageUnits.AllowFilterFromReserveZone // Shembulli 3. zgjedhja sipas kushteve të një fushe boshe të tipit "referencë e llojit konkret" | WHERE | withStorageUnit.ActiveFilterArea = VALUE(Catalog .cFilterArea.EmptyReference ) // Shembulli 3a. Zgjedhja sipas kushteve të një fushe boshe të tipit "dokument i një lloji specifik" | WHERE | Regjistri ynë i Informacionit. Dokumenti = VLERA(Dokumenti.Dokumenti ynë.NullReferenca) // Shembulli 3b. përzgjedhja sipas kushteve të një fushe të zbrazët të tipit "dokumente të llojeve të ndryshme" (fushë e përbërë) | KU | (Regjistrimi i Informacionit tonë. Dokumenti = VLERA(Dokumenti.Dokumenti ynë1.Referenca bosh) | OSE Regjistri i Informacionit tonë. Dokumenti = VLERA(Dokumenti .OurDocument2.EmptyLink) | OSE...(etj. - renditni në mënyrë sekuenciale kushtet për të gjitha llojet e mundshme të kësaj fushe të përbërë)) // Shembulli 4. ose anasjelltas, nëse duhet të zgjidhni një vlerë të mbushur të llojit "string", atëherë kushti do të ndihmë: |KU | usStorageUnits.Name > """" // Shembulli 5. nëse keni nevojë të zgjidhni dokumente të një lloji specifik, me një lloj të dhënash të përbërë, për shembull, në regjistrin "Detyrat e Ekzekutuara", burimi "Detyra" ka një lloj të përbërë , ndër vlerat e të cilave është i mundur dokumenti "Përzgjedhja" | KU | EXPRESS(InformationRegisterPunët që do të kryhen.Task AS Document.Selection) Dokumenti REF.Zgjedhja // Shembulli 5a. Një shembull tjetër i ngjashëm kur duhet të zgjidhni dokumente të një lloji specifik | ZGJEDHJA | KUR TË SHPREHET(agDocument Compliance.DocumentBU AS Document.Mallrat/Shërbimet hyrëse) Dokumenti REFERENCA.Mallrat/Shërbimet hyrëse | PASTAJ ""Marrja e Mallrave të Shërbimeve"" | KUR TË SHPREHET(ar Korrespondenca e Dokumenteve.DokumentiBU AS Dokumenti.Shitjet e Mallrave të Shërbimeve) Dokumenti REFERENCA.Shitjet e mallrave të shërbimeve | PASTAJ “Realizimi i Mallrave dhe Shërbimeve” | TJETER """" | FUND AS DocumentType // Shembulli 6. përzgjedhja sipas kushtit të një vlere të pacaktuar: |KU | SavedSettings.Përdoruesi = PASQYRTIM // Shembulli 7. përzgjedhja sipas llojit të lëvizjes "Incoming" e regjistrit të akumulimit, "Shpenzime" - në mënyrë të ngjashme): |KU | RegProductsRetail.MovementType = VALUE(MovementTypeAccumulation.Income) // Shembull 8. Si të tregohet në një pyetës që nuk është e nevojshme të ekzekutohet një pyetje (për shembull, ju duhet të ktheni në mënyrë programore një rezultat të pyetjes bosh në varësi të një kushti - Kërkesë. Text = StrReplace(Query.Text, "WHERE Doc.Link = &DocumentLink", "WHERE FALSE");). Për ta bërë këtë, thjesht shtoni kushtin "Ku është e rreme". Nga rruga, pavarësisht nga sasia e të dhënave të kërkuara në mostër, një kërkesë e tillë do të ekzekutohet në çast. |WHERE FALSE // Shembulli 9. Kontrollimi që rezultati i pyetjes përmban të dhëna: Nëse JO Query.Execute().Empty() Pastaj // Shembulli 10. përzgjedhja sipas kushtit të një date boshe: |KU | tbRows.CancellationDate = DATETIME(1, 1, 1)

Në 1C, kontrollimi për një vlerë boshe kryhet nga një funksion i veçantë. Për të kontrolluar nëse atributi ose ndryshorja që keni është e mbushur, duhet të përdorni funksionin nga konteksti global Vlera e Plotësuar(<Значение>) .

Në 1C 8, vlera konsiderohet e mbushur (jo bosh) nëse ndryshon nga vlera e paracaktuar për këtë lloj. Për shembull, për një lloj reference, vlera e paracaktuar është Lidhje bosh(të këtij doracaku, dokumenti etj.). Gjithashtu janë bosh variablat dhe kushtet që përmbajnë vlera I pavlefshëm Dhe E papërcaktuar.

1s kontrolloni për një vlerë boshe. Shembuj

Variabli = Referencat.Nomenklatura.EmptyReference(); Check = ValueFilled(Variable);

Në këtë rast, ndryshorja Ekzaminimi do të përmbajë vlerën Gënjeshtra. Gjithashtu funksion Vlera e Plotësuar(<Значение>) . mund të përdoret drejtpërdrejt në kushte.

Shembulli 1.1

If ValueFilled(Variable) then Report("Vlera në variabël nuk është bosh!"); FundNëse;

Variabli = Documents.Raporti i shpenzimeve.FindBy Number("000000001"); Check = ValueFilled(Variable);

Në këtë shembull, nëse dokumenti Raport paraprak me numër 000000001 ekziston, atëherë në ndryshore Ekzaminimi do të përmbajë vlerën E vërtetë, ndryshe Gënjeshtra.

funksionin e përdorimit Vlera e Plotësuar nuk është e mundur për variabla të llojeve të ndryshueshme si p.sh Tabela e vlerave, Pema e vlerës etj. Funksioni funksionon për të gjitha konfigurimet.

Si të kontrolloni që në 1 tabela e vlerave është bosh? Për këtë përdoret metoda Sasi(), me të mund të kontrolloni se sa rreshta ka në tabelën e vlerave.

Shembulli 3. Le Tabela ime- tabela e vlerave të përcaktuara më sipër në kod.

Nëse MyTable.Count() = 0 Pastaj Kthehu; FundNëse;

E njëjta metodë mund të përdoret për të përcaktuar plotësinë e pemës së vlerave dhe zgjedhjen e rezultatit të pyetjes.

Shembulli 4. Le Pema imeështë pema e vlerave e përcaktuar më sipër në kod.

Nëse MyTree.Rows.Count() = 0 Pastaj Kthehu; FundNëse;

Siç mund ta shihni, në pemën e vlerave, ne kontrollojmë praninë e vargjeve të nivelit të parë, nëse nuk janë, atëherë pema është bosh.

Shembulli 5. Le hetim- kërkoni në bazën e të dhënave 1C 8, të përcaktuar më sipër.

Ky artikull do të diskutojë mënyrat për të kontrolluar për një vlerë boshe, në varësi të llojit të atributit që kontrollohet, duke përfshirë një referencë nule.

Vlera NULL kthehet kur atributi thjesht nuk ekziston. Lloji në këtë rast do të jetë gjithashtu NULL. Për shembull, ju po bashkoni dy tabela nëpërmjet një bashkimi majtas. Në rast se nuk gjendet asnjë vlerë për tabelën e majtë në të djathtën, NULL do të kthehet.

Kontrollimi i kësaj vlere mund të bëhet duke përdorur konstruksionin "IS NULL" dhe "". Në rastin e parë, kthehet e vërtetë ose e gabuar. Në rastin e dytë, mund të vendosni menjëherë një vlerë tjetër në rastin kur kthehet NULL.

Pyetja 1C 8.3 më poshtë do të kthejë një listë të personave kontaktues për ata partnerë që nuk kanë një grup segmentesh.

ZGJIDH
Kontakt Partnerët.Lidhja
NGA
Drejtoria.Personat e Kontaktit të Partnerëve AS Personat e Kontaktit të Partnerëve
BASHKIMI I BRENDSHËM
PO ContactPartners.Owner = SegmentsPartners.Parent
KU
SegmentsPartners.Referenca ËSHTË NULL

datë bosh

Vlera kontrollohet për një datë boshe duke e krahasuar atë me konstruksionin DATETIME(1, 1, 1, 0, 0, 0). Një shembull i përdorimit është dhënë më poshtë:

Lidhja bosh në kërkesën 1C

Në rastin kur atributi i kthyer ka një lloj referimi, për shembull, është një element i ndonjë drejtorie, dokumenti etj., përdoret ndërtimi i mëposhtëm: VALUE(Catalog.CatalogName.EmptyReference).

Në shembullin e mëposhtëm, pyetja zgjedh të gjithë partnerët që nuk kanë një rajon biznesi të specifikuar.

Për të kontrolluar për "ValueFilled", duhet të bëni kushtin e kundërt:

Partnerët.Rajoni i Biznesit<>VALUE(Catalog.BusinessRegions.EmptyReference)

Linjë bosh

Për të kontrolluar llojet e vargjeve, bëhet një krahasim me një model tjetër. Në këtë rast - "".

Pyetja më poshtë do të zgjedhë të gjithë partnerët me një emër bosh.

Artikujt kryesorë të lidhur