Dirbdamas su užklausomis, bet kuris programuotojas turi vienaip ar kitaip bendrauti su tuščios vertės. Ką turime omenyje sakydami tuščią vertę?

Nulinė reikšmė yra arba nėra reikšmės, arba yra numatytoji duomenų tipo reikšmė. Su primityviais tipais viskas yra gana paprasta: numatytoji reikšmė yra tam tikra pradinė reikšmė, kuri naudojama kaip atskaitos taškas.

Nulinių reikšmių tipai

Pažvelkime į tuščių reikšmių tipus, su kuriais gali susidurti arba kurių gali prireikti užklausoje.

  • Skaičiaus tipui tuščia reikšmė yra nulis – 0.
  • Stygos tipui – tuščia eilutė – „“.
  • Datos tipui – pirmųjų metų sausio 1 d. – 01/01/0001 00:00:00. Nuo šios datos laikas skaičiuojamas 1C.*
  • Būlio tipui numatytoji reikšmė techniškai yra False, bet logiškai abi tipo reikšmės yra užpildytos. Todėl sprendimas, ar tuščia reikšmė yra klaidinga, ar ne, yra pagrįsta konkretaus algoritmo logika.

*Būkite atsargūs, už 1C ribų yra skirtingos datų skaičiavimo sistemos su skirtingais pradžios taškais.

Trūksta reikšmė visiškai atitinka tik tipą Null.Šiame tipe yra tik viena reikšmė, kuri reiškia, kad reikšmės nėra.

Panašaus tipo Neapibrėžta taip pat yra tik viena reikšmė, tačiau neapibrėžta reiškia ne duomenų nebuvimą, o tik tai, kad neįmanoma nustatyti numatytosios tipo vertės. Neapibrėžta yra numatytoji sudėtinių tipų vertė, įskaitant tuos, kurie nėra aiškiai apibrėžti. Pavyzdžiui, vertė in nauja linija reikšmių lentelė stulpelyje, kurio tipas nėra aiškiai apibrėžtas.

Co nuoroda tipai yra daug mažiau neapibrėžtumo. Visi nuorodų tipai pateikia nulinę reikšmę. Tuščia reikšmė yra ta pati nuoroda su nurodytu duomenų tipu, bet be unikalus identifikatorius specifinę reikšmę. Dėl to tuščią nuorodą galime traktuoti taip, lyg tai būtų įprasta, ir pritaikyti jai visus platformos pateiktus metodus, dirbti su ja taip, lyg tai būtų visavertė vertybė.

Darbas su nulinėmis reikšmėmis užklausoje

Nesvarbu, ar jums reikia aiškiai įvesti nulinę reikšmę į užklausos rezultatą, ar palyginti esamas reikšmes su nuline verte, turite žinoti, kaip užklausoje apibūdinti nulines reikšmes.

Tipai Skaičius, eilutė, Būlio reikšmė yra aprašyti užklausoje kaip integruota kalba:

SELECT 0 AS exampleTypeNumber, "Hello world" AS exampleTypeString, True AS exampleTypeBoolean

Neapibrėžtas, iš esmės primityvus tipas, apibūdinamas panašiai:

Pasirinkite Batch.Period From Accumulation Register.Batch As Batch Where Remains.DocumentBatch = Neapibrėžta

Tuščias atskaitos vertes yra šiek tiek sunkiau apibrėžti. Visi nuorodos objektai turi iš anksto nustatytą paslaugos reikšmę EmptyReference. Dėl to tuščią nuorodą galima pasirinkti vienu būdu - per funkciją Vertė:

Pasirinkite Vertė(Directory.Nomenclature.EmptyLink) Kaip ištuštinti nomenklatūrą

Galimybės dirbti su Null reikšmėmis yra šiek tiek turtingesnės. Kaip ir kiti primityvūs tipai, Null aprašomas taip pat, kaip ir integruotoje kalboje. Be to, yra specialus operatorius Is Null ir funkcija IsNull.

  • Operatorius Is Null leidžia sukurti loginę išraišką, lyginančią pasirinktą reikšmę su reikšme Null.
  • Funkcija IsNull grąžina pirmąjį argumentą, jei jis nėra Null, ir antrąjį argumentą, jei jis nėra.

Išraiškos, apibrėžiančios tuščias reikšmes, gali būti naudojamos bet kurioje užklausos dalyje, kuri palaiko išraiškas. Pavyzdžiui, galite pridėti tuščią nuorodą prie skilties Pasirinkti arba nulinį patikrinimą prie sąlygos.

Praktiniai pavyzdžiai

Vertės funkcijos naudojimas

Pasirinkite Produktus.Nuoroda kaip nomenklatūra, Produktai.Nuoroda = vertė(Katalogas.Nomenklatūra.EmptyLink) Like ThisLinkEmpty From AntradienisProduktai Kaip AntradienisProduktai

Operatoriaus Is Null naudojimas

Pasirinkite produktus.Nuoroda kaip nomenklatūra, Produktai.Nuoroda yra nulinė, kaip ši NuorodaEmpty From AntradienisProduktai Kaip Antradieniai

Nulis kairėje arba pilnas sujungimas

Tikrinama, ar nėra Null

Pavyzdys parodo įprastą praktinę situaciją, kai su kairiuoju sujungimu nėra atitikmens pirmai lentelei antroje. Šiuo atveju visi antrosios lentelės laukai bus Null.

Pasirinkite AntradienisProduktai.Nuoroda kaip nomenklatūra, Likučiai.KiekisLieka kaip Kiekis, Likutis.Kiekis Likęs Null, Kaip Nelikęs Nuo Antradienių Produktų kaip AntradienisProduktai Kairysis ryšys RegistruotisAccumulations.ProductsInWarehouses.Remains As Remains By TueProducts.Link = Remains.Nomenclature

Nulinių verčių tvarkymas

Ankstesnės užklausos modifikavimas, siekiant parodyti bendrus metodus, kaip gauti kai kurias numatytąsias reikšmes, kurios pakeis trūkstamas. IN šiame pavyzdyje Naudojant funkciją IsNull, trūkstama likučio reikšmė pakeičiama logiškai teisinga 0.

Pasirinkite AntradienisProducts.Link kaip nomenklatūrą, IsNull (Remaining.QuantityRemaining, 0) Kaip kiekį iš AntradienisProduktai kaip AntradienisProduktai Kairysis ryšys RegistruotisAccumulations.ProductsInWarehouses.Remains As Remains By TueProducts.Link = Remains.Nomenclature

Šiame straipsnyje mes apžvelgėme įvairius tuščių verčių tipus ir jų savybes bei ištyrėme būdus, kaip nustatyti įvairių tipų tuščios reikšmės užklausose, o praktinėje dalyje įsitikinome, kad svarstoma medžiaga yra lengva pritaikyti.

Eilutė yra vienas iš primityvių duomenų tipų 1C:Enterprise 8 sistemose linija yra teksto.

Įveskite kintamųjų reikšmes linija yra įtrauktos į dvigubas kabutes. Keli kintamieji šio tipo galima sulankstyti.

Per1 = "1 žodis" ;
Per2 = "2 žodis" ;
Per3 = Per1 + " " + Per2;

Galų gale Per3 reikš " Žodis 1 Žodis 2 colių.

Be to, 1C:Enterprise 8 sistemos suteikia funkcijas, skirtas darbui su eilutėmis. Pažvelkime į pagrindinius:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funkcija skirta rodyti dialogo langą, kuriame vartotojas gali nurodyti tipo kintamojo reikšmę Linija. Parametras <Строка> yra būtinas ir jame yra kintamojo, į kurį bus įrašyta įvesta eilutė, pavadinimas. Parametras <Подсказка> neprivaloma – tai dialogo lango pavadinimas. Parametras <Длина> neprivaloma, rodo maksimalų įvesties eilutės ilgį. Numatytoji vertė yra nulis, o tai reiškia neribotą ilgį. Parametras <Многострочность> neprivaloma. Apibrėžiamas kelių eilučių teksto įvesties režimas: True – kelių eilučių teksto įvestis su eilučių skyrikliais; Netiesa – įveskite paprastą eilutę.

Galite įvesti eilutę, jei žinote simbolio kodą Unicode:

Simbolis (<КодСимвола>) — kodas įvedamas kaip skaičius.

Raidė= Simbolis(1103) ;

// aš

Taip pat yra atvirkštinė funkcija, leidžianti sužinoti simbolio kodą.<Строка>, <НомерСимвола>) — Simbolio kodas(

grąžina nurodyto simbolio unikodo numerį kaip skaičių.

Teksto didžiųjų ir mažųjų raidžių konvertavimo funkcijos:<Строка>) VReg( - konvertuoja visus eilutės simbolius į.

didžiosios raidės<Строка>) NReg(

— Konvertuoja visus eilutės simbolius į mažąsias raides.<Строка>) TReg(

— konvertuoja visus eilutės simbolius į pavadinimo didžiąsias ir mažąsias raides. Tai yra, visų žodžių pirmosios raidės konvertuojamos į didžiąsias, o likusios raidės – į mažąsias.

Simbolių paieškos ir keitimo eilutėje funkcijos:<Строка>, <ПодстрокаПоиска>) Rasti (

— suranda paieškos poeilutės pasireiškimo simbolio numerį. Pavyzdžiui:

Rasti ("Styga" , "gerai" ) ;<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 StrFind( Ieškoti galima nuo eilutės pradžios arba pabaigos. Pavyzdžiui:

Skaičius4 atvejai = Str Rasti ( "Gynybiškumas", "apie" ,Paieškos kryptis. Nuo pradžios, 1, 4);

// 7<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) StrReplace(

– suranda visus paieškos poeilutės atvejus šaltinio eilutėje ir pakeičia ją pakaitine eilute.

StrReplace ("Eilutė" , "gerai" , "" ) ;<Строка>) // Puslapis EmptyString(– patikrina, ar eilutėje nėra reikšmingų simbolių. Jei reikšmingų simbolių nėra arba visai nėra, vertė grąžinama Tiesa.

. Kitaip -<Строка>, <ПодстрокаПоиска>) Melas

StrNumberOccurrences( – Skaičiuoja paieškos poeilutės pasikartojimų skaičių šaltinio eilutėje. StrNumberCurrences (

„mokykis, mokykis ir dar kartą mokykis“<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — , "studija" , "" ) ; // 3 StrTemplate( pakeičia parametrus į eilutę pagal skaičių. Eilutėje turi būti pakeitimo žymenys, tokios formos: „%1..%N“. Žymeklių numeracija prasideda nuo 1. Jei parametro reikšmė

Neapibrėžta , pakeičiama tuščia eilutė., "1" , "2" ) ; StrTemplate (

"1 parametras = %1, 2 parametras = %2"

// 1 parametras = 1, 2 parametras = 2<Строка>, <ЧислоСимволов>) Eilučių konvertavimo funkcijos:

Liūtas (<Строка>, <ЧислоСимволов>) – grąžina pirmuosius eilutės simbolius.

Teisingai (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – grąžina paskutinius eilutės simbolius.<ЧислоСимволов>trečiadienis (<НачальныйНомер>.

– grąžina ilgio eilutę<Строка>) , pradedant nuo simbolio

AbbrL(<Строка>) apkarpo nereikšmingus simbolius į kairę nuo pirmojo reikšmingo simbolio eilutėje.

Santrumpa (<Строка>) — nupjauna nereikšmingus simbolius į dešinę nuo paskutinio reikšmingo simbolio eilutėje.

AbbrLP(<Строка>, <НомерСтроки>) – nupjauna nereikšmingus simbolius į kairę nuo pirmojo reikšmingo simbolio eilutėje ir į dešinę nuo paskutinio reikšmingo simbolio eilutėje.

StrGetString(

– Gauna kelių eilučių eilutę pagal skaičių.<Строка>) Kitos funkcijos:

Stiprumas(<Строка>) – grąžina simbolių skaičių eilutėje.

StrNumberRow(<Строка1>, <Строка2> ) – grąžina kelių eilučių eilutės eilučių skaičių. Eilutė laikoma nauja, jei ji nuo ankstesnės atskirta naujos eilutės simboliu. StrCompare(– lygina dvi eilutes neskiriant didžiųjų ir mažųjų raidžių. Funkcija veikia kaip objektas

  • Vertybių palyginimas
  • . Grąžinimai:
  • 1 - jei pirmoji eilutė yra didesnė už antrąją

-1 - jei antroji eilutė didesnė už pirmąją

0 - jei eilutės yra lygios StrCompare("Pirma eilutė" , "Antra eilutė") ;<Значение>) .

// 1 1C atveju tuščios vertės tikrinimas atliekamas naudojant specialią funkciją. Norėdami patikrinti, ar jūsų atributas arba kintamasis yra užpildytas, naudokite funkciją iš pasaulinio konteksto(šią žinyną, dokumentą ir kt.). Kintamieji ir detalės, kuriose yra reikšmės, taip pat tušti. Null Ir StrTemplate(.

1s patikrinkite, ar nėra tuščios vertės. Pavyzdžiai

Kintamasis = Directories.Nomenclature.EmptyLink();

Check = ValueFilled(Variable); Šiuo atveju kintamasis Apžiūra Tiesa bus nurodyta vertė StrCompare("Pirma eilutė" , "Antra eilutė") ;<Значение>) . Taip pat funkcija

. gali būti naudojamas tiesiogiai tam tikromis sąlygomis.

1.1 pavyzdys

Jei reikšmė užpildyta(kintamasis) tada Report("Kintamojo reikšmė nėra tuščia!"); endIf;

Kintamasis = Documents.AdvanceReport.FindByNumber("000000001"); Check = ValueFilled(Variable); Šiame pavyzdyje, jei dokumentas Išankstinė ataskaita 000000001 su numeriu Šiuo atveju kintamasis egzistuoja, tada kintamajame EmptyString( bus nurodyta vertė Tiesa.

, kitaip Naudokite funkciją Vertė užpildyta negalima kintamų tipų kintamiesiems, pvz, Vertybių lentelė Vertybių medis

ir tt Funkcija veikia visoms konfigūracijoms. Kaip galite patikrinti, ar 1C verčių lentelė tuščia? Šiuo tikslu naudojamas metodas Kiekis ()

, galite jį naudoti norėdami patikrinti, kiek eilučių yra verčių lentelėje. 3 pavyzdys. Leiskite Mano lentelė

— pirmiau kode apibrėžtų verčių lentelė.

Jei MyLentelė.Kiekis() = 0 Tada Grąžinti; endIf;

Tas pats metodas gali būti naudojamas norint nustatyti verčių medžio išsamumą ir užklausos rezultato pasirinkimą. 4 pavyzdys. Leiskite Mano medis

— pirmiau kode apibrėžtų verčių medis.

Jei MyTree.Rows.Quantity() = 0 Tada Return; endIf;

Kaip matote, verčių medyje tikriname, ar nėra pirmojo lygio eilučių, jei jų nėra, tada medis yra tuščias. 5 pavyzdys. Leiskite Prašymas

— užklausa pirmiau apibrėžtoje 1C 8 duomenų bazėje.

Šiame straipsnyje bus nagrinėjami būdai, kaip patikrinti, ar nėra tuščios reikšmės, atsižvelgiant į tikrinamo atributo tipą, įskaitant tuščią nuorodą.

NULL reikšmė grąžinama tuo atveju, kai atributo tiesiog nėra. Tipas šiuo atveju taip pat bus NULL. Pavyzdžiui, jūs sujungiate dvi lenteles naudodami kairįjį sujungimą. Jei kairiosios lentelės dešinėje lentelėje nerasta reikšmės, bus grąžinta NULL. Patikrinkite duota vertė

galima atlikti naudojant konstrukciją „IS NULL“ ir „“. Pirmuoju atveju grąžinama True arba False. Antruoju atveju galite iš karto nustatyti kitą reikšmę tuo atveju, kai grąžinama NULL.

Toliau pateikta 1C 8.3 užklausa pateiks kontaktinių asmenų sąrašą tiems partneriams, kurie nenurodė segmento.
PASIRINKTI
Kontaktiniai asmenysPartneriai.Nuoroda
NUO
INTERNAL JOIN Directory.Partner Segments AS Partner Segments
Programinės įrangos kontaktiniai asmenys partnerių.Savininkas = Partnerių segmentai.Parent
KUR
Partnerių segmentai NULL

Tuščia data

Vertė patikrinama, ar data tuščia, lyginant ją su DATETIME(1, 1, 1, 0, 0, 0) konstrukcija. Toliau pateikiamas naudojimo pavyzdys:

Tuščia nuoroda 1C užklausoje

Tuo atveju, kai grąžinamas atributas yra nuorodos tipo, pavyzdžiui, tai yra katalogo, dokumento ir pan. elementas, naudojama tokia konstrukcija: VALUE(Katalogas.Katalogo pavadinimas.EmptyLink).

Toliau pateiktame pavyzdyje užklausa parenka visus partnerius, kurie nenurodo verslo regiono.

Norėdami patikrinti, ar yra „ValueFilled“, turite atlikti priešingą sąlygą:

Partneriai.Verslo regionas<>VERTĖ (Katalogas.Verslo regionai.EmptyLink)

Tuščia eilutė

Norėdami patikrinti eilučių tipus, lyginama su kitu pavyzdžiu. Šiuo atveju - "".

Toliau pateiktoje užklausoje bus pasirinkti visi partneriai tuščiais vardais.

Ką reiškia eilutė 1c

1C eilutės, kaip atskirti eilutę nuo kitų tipų, nes modulyje visi simboliai yra tekstas, taigi ir eilutė. Kiekvienas ištisinis simbolių rinkinys, apsuptas dvigubomis kabutėmis (""), pagal numatytuosius nustatymus konfigūravimo priemonėje yra juodas.

Pranešimas ("Sveikas, pasauli!");

Taip pat turėtumėte atsiminti, kad kai kurie metodai, tiek sisteminiai, tiek patys parašyti, gali grąžinti eilutės reikšmę.

Norėdami sužinoti, ar mus dominanti reikšmė yra eilutė, galime palyginti jos tipą su tipu " Linija":

Jei TypeValue("Kažkas tekstas") = Tipas("Eilutė") Tada Report("Vertės tipas - eilutė"); endIf;

Yra keletas specialių funkcijų, skirtų darbui su eilute, kurios konvertuoja kitus tipus į eilutę ir atvirkščiai. Štai keletas pavyzdžių:

Eilutę į skaičių

Skaičius ("123,45");

Skaičius ("123,45");

Jei parametre yra neteisingų simbolių, pvz., raidžių, tai sukels klaidą.

Eilutė iki datos

Data("20101220235959");

Laiko nurodyti nebūtina (paskutiniai 6 simboliai).

Tikrinama, ar nėra tuščios eilutės

EmptyString() – ši funkcija patikrina, ar eilutėje, perduotoje kaip parametras, yra reikšmingų simbolių (nereikšmingi simboliai dažniausiai nematomi ekrane: tarpas, eilutės lūžis ir kt.)

EmptyString(" ");
EmptyString(" a ");

Skaičius į eilutę

Eilutė(123,45); Formatas(1253.25);

Norėdami palyginti eilutes, galite tiesiog naudoti lygybės ženklą

Jei „ketvirtadienis“ = „ketvirtadienis“, tada
endIf;

Pliuso ženklas (+) naudojamas eilutėms sujungti. Stygų sujungimas programuojant vadinamas sujungimu.

Gudrus! Jei pridedami keli skirtingi kintamųjų tipai, programa remsis pirmojo kintamojo tipą. Todėl norėdami tiksliai gauti eilutės tipo reikšmę, galite naudoti šį žymėjimą:

SomeString = ""+Metų diena(Dabartinė data()) +Savaitės diena(Dabartinė data());

Jei gausite rezultatą iš ankstesnio sąrašo, jis atrodys maždaug taip:

Kaip matote, nėra pakankamai vietos, skiriančios metų dieną ir savaitės dieną, galite pridėti tarpą (““):

SomeString = ""+Metų diena(Dabartinė data()) + " " +Savaitės diena(Dabartinė data());

Eilutės lūžis

Norėdami nutraukti eilutę, galite naudoti bet kurį naujos eilutės simbolį:

SomeString = ""+Metų diena(Dabartinė data()) + Simboliai.PS +Savaitės diena(Dabartinė data());

arba tiesia linija

SomeString = ""+Metų diena(Dabartinė data()) + " |"+Savaitės diena(Dabartinė data());