Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Željezo
  • 1c provjeri ima li praznu vrijednost niza. Rad s nultim vrijednostima u upitu

1c provjeri ima li praznu vrijednost niza. Rad s nultim vrijednostima u upitu

Što se podrazumijeva pod linijom u 1c

Stringovi u 1s, kako razlikovati string od drugih tipova, uostalom svi znakovi u modulu su tekst, a samim tim i niz. Svaki neprekidni skup znakova okružen dvostrukim navodnicima ("") smatra se nizom, prema zadanim postavkama u konfiguratoru je crn.

Izvještaj ("Zdravo, svijet!");

Također treba imati na umu da neke metode, i sustavne i vlastite, mogu vratiti vrijednost niza.

Da bismo saznali je li vrijednost koja nas zanima niz, možemo usporediti njen tip s tipom " Crta":

Ako je TypeZnch ("Neki tekst") = Vrsta ("String") Zatim izvješće ("Vrsta vrijednosti - String"); Završi ako;

Postoji nekoliko posebnih funkcija za rad sa nizovima koje pretvaraju druge vrste u nizove i obrnuto. Evo nekoliko primjera:

Niz do broja

Broj ("123,45");

Broj ("123,45");

Ako parametar sadrži nevažeće znakove, kao što su slova, to će uzrokovati pogrešku.

Niz do datuma

Datum ("20101220235959");

Vrijeme je izborno (zadnjih 6 znakova).

Provjera praznog niza

EmptyString () - ova funkcija provjerava sadrži li proslijeđeni niz značajne znakove (nebitni znakovi su uglavnom nevidljivi na ekranu: razmak, prijelom reda itd.)

Prazan redak(" ");
EmptyString ("a");

Broj u niz

Niz (123,45); Format (1253.25);

Za usporedbu nizova možete jednostavno koristiti znak jednakosti

Ako četvrtak = četvrtak Onda
Završi ako;

Znak plus (+) koristi se za spajanje nizova. Povezivanje nizova u programiranju naziva se konkatenacija.

Lukav! Ako se doda više varijabli različitih tipova, program će za osnovu uzeti tip prve varijable. Stoga, da biste dobili točnu vrijednost vrste niza, možete koristiti sljedeću notaciju:

WhatToString = "" + YearDay (TrenutniDatum ()) + DayWeek (TrenutniDatum ());

Ako dobijete rezultat iz prethodnog popisa, tada će prikaz biti otprilike ovakav:

Kao što vidite, nema dovoljno prostora za razdvajanje dana u godini i dana u tjednu, za to možete dodati razmak ("") na sljedeći način:

WhatToString = "" + Dan u godini (TrenutniDatum ()) + "" + Dan u tjednu (TrenutniDatum ());

Prijelom reda

Da biste prekinuli red, možete koristiti bilo koji znak prijeloma retka:

WhatToString = "" + Dan u godini (TrenutniDatum ()) + Symbols.PS + DayWeek (TrenutniDatum ());

ili ravnu liniju

WhatToString = "" + Dan u godini (TrenutniDatum ()) + "|" + Dan u tjednu (TrenutniDatum ());

Prilikom rada s upitima, svaki programer mora na ovaj ili onaj način komunicirati s praznim vrijednostima. Što podrazumijevamo pod praznom vrijednošću?

Prazna vrijednost je ili bez vrijednosti ili je zadana vrijednost za tip podataka. Kod primitivnih tipova sve je prilično jednostavno: zadana vrijednost je neka početna vrijednost koja služi kao početna točka.

Vrste nul vrijednosti

Razmotrimo vrste nul vrijednosti koje se mogu susresti ili zahtijevati u zahtjevu.

  • Za Broj - nula vrijednost je nula - 0.
  • Za tip String - prazan niz - "".
  • Za tip datuma - 1. siječnja prve godine - 01.01.0001 00:00:00. Od tog datuma vrijeme se računa u 1C. *
  • Za Boolean tip, zadana vrijednost je tehnički False, ali logično se ispunjavaju obje vrijednosti tipa. Stoga se odluka o tome je li prazna vrijednost False ili ne temelji se na logici određenog algoritma.

* Budite oprezni, izvan 1C postoje različiti sustavi brojanja datuma s različitim referentnim točkama.

Vrijednost koja nedostaje u punom smislu odgovara samo vrsti Null. Ovaj tip sadrži samo jednu vrijednost, što znači da nema vrijednosti.

Sličan tip njemu Nedefiniran također sadrži samo jednu vrijednost, ali Undefined ne znači izostanak podataka, već samo nemogućnost definiranja zadane vrijednosti za tip. Nedefinirano je zadana postavka za složene tipove, uključujući one koji nisu eksplicitno definirani. Na primjer, vrijednost u novom retku tablice vrijednosti u stupcu za koji tip nije eksplicitno definiran.

S referenca vrste su mnogo manje dvosmislene. Sve vrste referenci su null. Prazna vrijednost je ista referenca s naznakom tipa podataka, ali bez jedinstvenog identifikatora određene vrijednosti. Zahvaljujući tome, praznu vezu možemo tretirati kao normalnu i na nju primijeniti sve metode koje nudi platforma, radeći s njom kao s punom vrijednošću.

Rad s nultim vrijednostima u upitu

Bilo da trebate eksplicitno unijeti null vrijednost u rezultat upita ili usporediti postojeće vrijednosti s njom, morate znati kako opisati null vrijednosti u upitu.

Vrste Broj, niz, Boolean opisani su u zahtjevu kao na ugrađenom jeziku:

SELECT 0 KAO BROJ VRSTE PRIMJERA, "Hello world" KAO PRIMJER VRSTA String, TRUE KAO VRSTA PRIMJERA Boolean

Undefined, budući da je u biti primitivan tip, opisan je slično:

Odaberite Lots.Period iz registra akumulacije.Lots As Lots gdje Balances.DocumentBatches = Undefined

Prazne referentne vrijednosti malo je teže definirati. Svi referencirani objekti imaju unaprijed definiranu vrijednost usluge EmptyRef. Zahvaljujući tome, moguće je odabrati praznu vezu na jedinstven način - kroz funkciju Value:

Odaberite Vrijednost(Reference.Nomenclature.EmptyRef) Kao prazna nomenklatura

Mogućnosti za rad s nultim vrijednostima su nešto bogatije. Kao i drugi primitivni tipovi, Null je opisan na isti način kao i u ugrađenom jeziku. Osim toga, postoji poseban operator Yes Null i funkcija YesNull.

  • Operator Is Null omogućuje vam stvaranje Booleovog izraza koji uspoređuje odabranu vrijednost s nultom vrijednošću.
  • Funkcija YesNull vraća prvi argument ako nije Null, a drugi argument u suprotnom.

Izrazi koji specificiraju nulte vrijednosti mogu se koristiti u bilo kojoj klauzuli upita koja podržava izraze. Na primjer, možete dodati praznu vezu u odjeljak Odaberi ili provjeru nule u Uvjetu.

Praktični primjeri

Korištenje funkcije Value

Odaberite Products.Ref As Nomenclature, Products.Ref = Value (Directory.Nomenclature.EmptyRef) Like ThisLinkEmpty From TuProducts As TuProducts

Korištenje operatora Da Null

Odaberite Products.Ref As Nomenclature, Products.Link ima null kao što je ova veza je prazna od WTGoods poput TueProducts

Null na lijevoj ili punoj spojnici

Provjera Null

Primjer pokazuje uobičajenu praktičnu situaciju kada, s lijevim spojem, nema podudaranja za prvu tablicu u drugoj. U ovom slučaju, sva polja druge tablice bit će jednaka Null.

Odaberite TuProducts.Ref As Nomenclature, Balance.Quantity Balance As Quantity, Balance.Quantity Balance je Null jer nema salda TuProducts As TuProducts Lijeva veza Registar akumulacije.Proizvodi u skladištima.Stanja kao stanja By TuGoods.Ref = Stanja.Nomenklatura

Rukovanje nultim vrijednostima

Izmjena prethodnog upita kako bi se demonstrirala uobičajena tehnika za dobivanje nekih zadanih vrijednosti umjesto onih koje nedostaju. U ovom primjeru, korištenjem funkcije YesNull, vrijednost ostatka koja nedostaje zamjenjuje se logički ispravnom 0.

Odaberite TuProducts.Ref As Nomenclature, Have Null (Balance.QuantityLeft, 0) Kao količinu iz TuProducts kao TuProducts Lijeva veza Registar akumulacije.Proizvodi u skladištima.Stanja kao stanja By TuGoods.Ref = Stanja.Nomenklatura

U okviru ovog članka ispitali smo različite vrste nul vrijednosti i njihova svojstva, proučavali kako definirati različite vrste nul vrijednosti u upitima, a u praktičnom dijelu uvjerili smo se u jednostavnost aplikacije razmatranog materijala.

Query.Text = "SELECT | StorageUnits.Ref | FROM | Directory.UnitsStorageUnits AS StorageUnits // Primjer 1.usporedba s praznom booleovskom vrijednošću: | WHERE | StorageUnits.AllowChooseFrom BackupZone = False // Primjer 2.definiran, ali ako je definiran. boolean bolje ovako: // uvjet za negativan boolean: | WHERE | NOT STORAGE UNITS.AllowSelectionFrom the ReserveZone // Primjer 3. Odabir prema uvjetu praznog polja tipa "specific type reference" | WHERE | ) // Primjer 3a . Odabir po uvjetu praznog polja tipa "dokument određene vrste" | WHERE | OurRegisterData.Document = VRIJEDNOST (Document.OurDocument.EmptyLink) // Primjer 3b. Odabir po uvjetu praznog polja tipa " dokumenti od različite vrste "(složeno polje) | WHERE | (OurRegisterData.Document = VRIJEDNOST (Document.OurDocument1.EmptyLink) | OR OurRegisterRegister.Document = VRIJEDNOST (Dokument .OurDocument2.EmptyLink) | ILI ... (itd. - uzastopno nabrajamo uvjete za sve moguće vrste ovog složenog polja)) // Primjer 4. ili obrnuto, ako trebate odabrati popunjenu vrijednost tipa "string", tada uvjet pomoći će: | GDJE | unitStorage.Name> "" "" // Primjer 5. Ako trebate odabrati dokumente određene vrste, sa složenim tipom podataka, na primjer, u registru "Running Tasks", resurs "Task" ima složeni tip , među vrijednostima kojih je moguć dokument "Izbor" | GDJE | EXPRESS (InformationRegisterTasks Executed.Task AS Document.Selection) REFERENČNI dokument.Odabir // Primjer 5a. Još jedan sličan primjer, kada trebate odabrati dokumente određene vrste | IZBOR | KADA IZRAŽITI (agConformityDokumentov.DokumentBU KAO Dokument.PriplenieTovarovSlug) LINK Dokument.PriplenieGoodsServices | ONDA "" Prijem robe i usluga "| KADA IZRAŽITI (agConformityDokumentov.DokumentBU KAO Dokument.RealizatsiyaTovarovSlug) LINK Dokument.RealizatsiyaTovarovServices | ONDA "" Prodaja roba i usluga "| INAČE "" "" | END AS Vrsta dokumenta // Primjer 6. odabir po uvjetu nedefinirane vrijednosti: |WHERE | SavedSettings.User = NEDEFINED // Primjer 7. odabir registra akumulacije po tipu kretanja "Dolazak", "Potrošnja" - slično): | GDJE | RegGoodsVRaznitsa.MotionType = VALUE (AccumulationMotionKind.Arrival) // Primjer 8. Kako u zahtjevu navesti da ne trebate izvršiti zahtjev (na primjer, trebate programski vratiti prazan rezultat upita - Zahtjev. Text = StrReplace (Upit.Tekst, "GDJE Doc.Link = & DocumentLink", "WHERE FALSE");). Da biste to učinili, samo dodajte uvjet "Gdje je netočno". Usput, bez obzira na količinu podataka koja se traži u uzorku, takav će zahtjev biti izvršen odmah. | WHERE FALSE // Primjer 9. Provjera da rezultat upita sadrži podatke: Ako NIJE Upit Izvrši (). Prazno () Onda // Primjer 10. Odabir prema uvjetu praznog datuma: | WHERE | tbLines.CancelDate = DATUM VRIJEME (1, 1, 1)

U 1C, provjera prazne vrijednosti obavlja se posebnom funkcijom. Da biste provjerili jesu li vaši postojeći rekviziti ili varijabla popunjeni, trebali biste koristiti funkciju iz globalnog konteksta Ispunjeno vrijednošću (<Значение>) .

U 1C 8 vrijednost se smatra ispunjenom (ne praznom) ako se razlikuje od zadane vrijednosti za ovu vrstu. Na primjer, za tip reference, zadana je vrijednost Prazna poveznica(ovaj vodič, dokument, itd.). Varijable i atributi koji sadrže vrijednosti također su prazni. Null i Nedefiniran.

1c provjeri praznu vrijednost. Primjeri za

Varijabla = Directories.Nomenclature.EmptyRef (); Provjera = ValueFilled (Varijabla);

U ovom slučaju, varijabla Ispitivanje sadržavat će vrijednost Laž... Također funkcija Ispunjeno vrijednošću (<Значение>) ... može se koristiti izravno u uvjetima.

Primjer 1.1

Ako je ValueFilled (Variable) Then Report ("Vrijednost u varijabli nije prazna!"); Završi ako;

Varijabla = Documents.AvailableReport.FindByNumber ("000000001"); Provjera = ValueFilled (Varijabla);

U ovom primjeru, ako dokument Prethodno izvješće s brojem 000000001 postoji, zatim u varijabli Ispitivanje sadržavat će vrijednost Pravi, inače Laž.

Koristite funkciju ValueFilled nije moguće za promjenjive tipove varijabli kao npr Tablica vrijednosti, Stablo vrijednosti itd. Funkcija radi za sve konfiguracije.

Kako provjeriti da je tablica vrijednosti prazna u 1c? Da biste to učinili, koristite metodu Količina(), može se koristiti za provjeru koliko redaka ima u tablici vrijednosti.

Primjer 3. Neka MyTable- tablicu vrijednosti definirane gore u kodu.

Ako je MyTable.Quantity () = 0 Onda Return; Završi ako;

Ista metoda se može koristiti za određivanje punoće stabla vrijednosti i odabir rezultata upita.

Primjer 4. Neka Moje drvo- stablo vrijednosti definirano gore u kodu.

Ako je MyTree.Strings.Number () = 0 Onda Return; Završi ako;

Kao što vidite, u stablu vrijednosti provjeravamo prisutnost redaka prve razine, ako ih nema, onda je stablo prazno.

Primjer 5. Neka Upit- upit bazi podataka 1C 8, kako je gore definirano.

Ovaj će članak pogledati načine za provjeru null vrijednosti ovisno o vrsti atributa koji se provjerava, uključujući null vezu.

NULL vrijednost se vraća kada jednostavno nema rekvizita. Tip će u ovom slučaju također biti NULL. Na primjer, spajate dvije tablice kroz lijevo spajanje. U slučaju kada se u desnoj tablici za lijevu tablicu ne pronađu vrijednosti, vratit će se NULL.

Provjera ove vrijednosti može se provesti pomoću konstrukcija "IS NULL" i "". U prvom slučaju, vraća True ili False. U drugom slučaju, možete odmah postaviti drugu vrijednost u slučaju kada se vrati NULL.

Zahtjev 1C 8.3 u nastavku vratit će popis osoba za kontakt za one partnere koji nemaju određeni segment.

ODABERI
ContactPartners.Link
IZ
Imenik.Osobe za kontakt partnera KAO KONTAKT OSOBE PARTNERA
INTERNA VEZA Imenik.SegmentsPartners AS SegmentsPartners
Kontakti softverskog partnera.Vlasnik = Partnerski segmenti.Roditelj
GDJE
Partnerski segmenti. Ref JE NULL

Prazan datum

Provjera valjanosti praznog datuma se izvodi usporedbom s konstrukcijom DATE TIME (1, 1, 1, 0, 0, 0). Primjer upotrebe je dat u nastavku:

Prazna veza u 1C zahtjevu

U slučaju kada vraćeni atribut ima tip reference, na primjer, to je element nekog rječnika, dokumenta itd., koristi se sljedeća konstrukcija: VALUE (Directory.ReferenceName.EmptyRef).

U donjem primjeru upit odabire sve partnere koji nemaju navedenu poslovnu regiju.

Da biste provjerili ima li "ValueFilled", morate izvršiti suprotan uvjet:

Partneri.BusinessRegion<>VALUE (Directory.BusinessRegions.EmptyLink)

Prazna linija

Za provjeru tipova nizova vrši se usporedba s drugim uzorkom. U ovom slučaju - "".

Upit u nastavku će odabrati sve partnere s praznim imenom.

Vrhunski povezani članci