Ako získať typ (typ) dokumentu v žiadosti? 1s 8 napíšte hodnoty v požiadavke

V tomto článku budeme analyzovať možnosti konverzie typov v dopytovacom jazyku 1C, ktoré poskytuje funkcia „Express“.
Pozrime sa na niekoľko možností využitia tejto funkcie.
A prvou možnosťou je zaokrúhľovanie čísel.

Ak to chcete urobiť, musíte použiť funkciu Express v nasledujúcom formáte:

Expresné(<Число>ako číslo(<ДлинаЧисла>,<Точность>))

Kde:
číslo— pole, ktoré je potrebné zaokrúhliť
LengthNumbers— maximálna dĺžka čísla
Presnosť— presnosť zaokrúhľovania čísel

Parametre dĺžky aj presnosti musia byť kladné celé čísla.
Pozrite sa, ako táto funkcia funguje na obrázku nižšie.

Druhým prípadom použitia je odlievanie strún. Konfigurácie veľmi často používajú reťazce neobmedzenej dĺžky, čo ukladá určité obmedzenia. Nemôžeme napríklad porovnávať reťazce neobmedzenej dĺžky.
V dotaze nižšie je pole Celé meno typu reťazec neobmedzenej dĺžky a tento dotaz nebude fungovať.

Aby to fungovalo, je potrebné previesť pole neobmedzenej dĺžky na reťazec s určitou dĺžkou, a to pomocou funkcie Express v nasledujúcom formáte:

Expresné(<Строка>ako reťazec (<ДлинаСтроки>)

Kde
Dĺžka čiary– maximálna dĺžka, na ktorú sa struna skráti.
Prepracujeme dotaz: v podmienke prevedieme neobmedzený reťazec na reťazec s určitou dĺžkou. Potom nebudú žiadne chyby.

Zoberme si poslednú a povedal by som najdôležitejšiu možnosť jeho aplikácie: pri práci s poľami zloženého typu.
Nižšie sú uvedené dva dotazy, ktoré používajú zložené polia. Prvý je nesprávny a druhý je správny.

Tie. Keď potrebujete získať pole nejakého komplexného typu, vždy získajte hodnotu tohto poľa až po pretypovaní typu pomocou funkcie Express. V tomto prípade budú mať dokumenty a referenčné knihy nasledujúci formát:

Expresné(<Документ>ako dokument.<ИмяТаблицы>)
Expresné(<Справочник>ako Adresár.< ИмяТаблицы >)
.

Kde
TableName— názov objektu v .

Pri práci s kompozitnými typmi vždy používajte expresnú funkciu, výrazne optimalizuje dopyt.

Ak stále „plávate“ v konštrukciách dopytovacieho jazyka a aj tie najjednoduchšie dopyty vám spôsobujú ťažkosti, potom vám odporúčam môj kurz „Dotazy v 1C od začiatočníka po profesionála“. Kde sa o týchto a mnohých ďalších problémoch diskutuje podrobnejšie.

Čo je špeciálne na tomto kurze:
Kurz je určený pre tých, ktorí nepoznajú dopytovací jazyk v 1C;
Vzdelávací materiál je dobre zostavený a ľahko sa učí;
Niekoľko desiatok lekcií;
Užitočné praktické príklady;
Všetky lekcie sú prezentované jasným a jednoduchým jazykom

Pre mojich čitateľov 25% zľavový kupón: hrW0rl9Nnx

Snažím sa čo najčastejšie vydávať rôzne zaujímavé bezplatné články a videonávody. Preto budem veľmi rád, ak môj projekt podporíte prevodom akejkoľvek sumy:

Môžete previesť akúkoľvek sumu priamo:
Yandex.Money - 410012882996301
Web Money - R955262494655

Pridajte sa k mojim skupinám.

43
NULL – chýbajúce hodnoty. Nezamieňať s nulovou hodnotou! NULL nie je číslo, nerovná sa medzera, prázdny odkaz alebo nedefinované. NULL je typotvorná hodnota, t.j. existuje typ NULL a jedna hodnota tohto typu. NULOVÝ... 26
Na generovanie a vykonávanie dotazov do databázových tabuliek na platforme 1C sa používa špeciálny objekt programovacieho jazyka Query. Tento objekt je vytvorený volaním konštrukcie New Request. Pohodlná požiadavka... 18
Článok poskytuje užitočné techniky pri práci s dopytmi 1C v.8.2, ako aj informácie, ktoré nie sú o jazyku dopytov také známe. Nesnažím sa poskytnúť úplný popis jazyka dopytu, ale chcem sa pozastaviť iba nad... 13
LIKE - Operátor na kontrolu podobnosti reťazca so vzorom. Analóg LIKE v SQL. Operátor SIMILAR vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom vzoru zadaným napravo. Význam výrazu...

Dotazovací jazyk 1C je jedným z hlavných rozdielov medzi verziami 7.7 a 8. Jedným z najdôležitejších bodov pri učení sa programovania 1C je dopytovací jazyk. V 1C 8.3 sú dotazy najvýkonnejším a najúčinnejším nástrojom na získavanie údajov. Dotazovací jazyk vám umožňuje získať informácie z databázy pohodlným spôsobom.

Samotná syntax veľmi pripomína klasický T-SQL, až na to, že v 1C pomocou dopytovacieho jazyka môžete prijímať údaje iba pomocou konštrukcie Select. Jazyk podporuje aj zložitejšie konštrukcie, napríklad (požiadavka v požiadavke). Dotazy v 1C 8 je možné písať v azbuke aj latinke.

V tomto článku sa pokúsim hovoriť o hlavných kľúčových slovách v dopytovacom jazyku 1C:

  • vybrať
  • povolený
  • rôzne
  • expresné
  • najprv
  • pre zmenu
  • význam
  • typ hodnoty (a operátor REFERENCE)
  • výber
  • skupina podľa
  • majúce
  • ISNULL
  • Áno NULL
  • prípojky - pravé, ľavé, vnútorné, plné.

Rovnako ako niekoľko malých trikov jazyka 1C, pomocou ktorých môžete optimálne zostaviť text požiadavky.

Na ladenie dotazov v systéme 1C 8.2 je k dispozícii špeciálny nástroj - konzola dotazov. Popis si môžete pozrieť a stiahnuť pomocou odkazu -.

Pozrime sa na najdôležitejšie a najzaujímavejšie operátory dopytovacieho jazyka 1C.

SELECT

V dopytovacom jazyku 1C Enterprise 8 každý dopyt začína kľúčovým slovom VYBERTE SI. V jazyku 1C neexistujú žiadne konštrukty UPDATE, DELETE, CREATE TABLE, INSERT, tieto manipulácie sa vykonávajú v objektovej technológii. Jeho účelom je iba čítanie údajov.

Napríklad:

VYBERTE SI
Aktuálny názov adresára
OD
Directory.Nomenclature AS Current Directory

Dotaz vráti tabuľku s názvami položiek.

V blízkosti konštrukcie VYBERTE SI môžete nájsť kľúčové slová PRE ZMENU, POVOLENÝ, RÔZNY, NAJPRV

POVOLENÝ— vyberie z tabuľky len záznamy, na ktoré má aktuálny používateľ práva.

RÔZNY— znamená, že výsledok nebude obsahovať duplicitné riadky.

VÝBER (prípad)

Veľmi často je tento dizajn programátormi podceňovaný. Príklad jeho použitia:

Aktuálny názov adresára,

KEĎ Aktuálny Directory.Service POTOM

"servis"

KONIEC AKO ZOBRAZIŤ Nomenklatúru

Directory.Nomenclature AS Current Directory

Príklad vráti textovú hodnotu v poli „Typ položky“ – „Produkt“ alebo „Služba“.

KDE

Dizajn dotazovacieho jazyka 1C, ktorý vám umožňuje uložiť výber na prijaté údaje. Upozorňujeme, že systém prijíma všetky údaje zo servera a až potom sa vyberie na základe tohto parametra.

VYBERTE SI
Adresár.Názov
OD
Aktuálny adresár.Nomenklatúra AS aktuálny adresár
WHERE CurrentDirectory.Service = TRUE

V príklade vyberieme záznamy, pre ktoré je hodnota atribútu „Service“ nastavená na „True“. V tomto príklade by sme si mohli vystačiť s nasledujúcou podmienkou:

"KDE JE SLUŽBA"

V podstate vyberáme riadky, v ktorých sa výraz za kľúčovým slovom rovná „pravda“.

Vo výrazoch môžete použiť priame podmienky:

WHERE kód = "005215"

Pomocou operátora „VALUE()“ v podmienkach použite prístup k preddefinovaným prvkom a enumeráciám v požiadavke 1C:

WHERE Typ položky = Hodnota (Vyčíslenie. Typy položiek. Produkt)

Časové hodnoty môžu byť špecifikované nasledovne:

WHERE Dátum prijatia > DATETIME(2012,01,01):

Najčastejšie sú podmienky špecifikované ako parametre odovzdané do požiadavky:

Získajte 267 video lekcií na 1C zadarmo:

WHERE NomenclatureGroup= &NomenclatureGroup

Na typ atribútu možno uložiť podmienku, ak ide o zložený typ:

Ak potrebujete obmedziť výber zo zoznamu hodnôt alebo poľa, môžete urobiť nasledovné:

KDE je Registrátor B (&Zoznam dokumentov na výber)

Podmienka môže byť aj zložitá a pozostáva z niekoľkých podmienok:

WHERE Dátum prijatia > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

GROUP BY

Návrh dotazovacieho jazyka 1C 8.2 použitého na zoskupenie výsledku.

Napríklad:

VYBERTE SI
Prevzatie tovaru a služieb Tovar,
SUM(Príjem tovaruSlužbyTovar.Množstvo) AS Množstvo,
SUM(Príjem tovaruSlužbyTovar.Suma) AS Suma
OD
Dokument Prevzatie tovaru a služieb AKO Prevzatie tovaru a služieb Tovar

GROUP BY
Príjem tovaruSlužbyTovar.Tovar

Táto požiadavka zhrnie všetky príjmy podľa množstva a množstva podľa položky.

Okrem kľúčového slova SUM Môžete použiť ďalšie agregačné funkcie: MNOŽSTVO, POČET RÔZNYCH, MAXIMÁLNE, MINIMÁLNE, PRIEMERNÝ.

MAJÚCE

Dizajn, na ktorý sa často zabúda, no je veľmi dôležitý a užitočný. Umožňuje špecifikovať výber formou súhrnnej funkcie, v návrhu to nie je možné KDE.

Príklad použitia HAVING v požiadavke 1C:

VYBERTE SI
Prevzatie tovaru a služieb Tovar,
SUM(Príjem tovaruSlužbyTovar.Množstvo) AS Množstvo,
SUM(Príjem tovaruSlužbyTovar.Suma) AS Suma
OD
Dokument Prevzatie tovaru a služieb AKO Prevzatie tovaru a služieb Tovar

GROUP BY
Príjem tovaru a služieb tovaru

SUM(Príjem tovaruSlužbyTovar.Množstvo) > 5

Vyberieme teda počet produktov, ktorých prišlo viac ako 5 kusov.

VÝZNAM()

Napríklad:

WHERE banka = hodnota(adresár.banky.prázdny odkaz)

WHERE Typ nomenklatúry = Hodnota (Adresár.Typy nomenklatúry.Produkt)

WHERE Typ položky = Hodnota (Enumeration.Item Types.Service)

TYPE v žiadosti

Typ údajov možno skontrolovať pomocou funkcií TYPE() a VALUETYPE() alebo pomocou logického operátora REFERENCE.

EXPRESNÉ()

Operátor Express v dotazoch 1C sa používa na konverziu dátových typov.

Syntax: EXPRESNÉ(<Выражение>AKO<Тип значения>)

Pomocou neho môžete previesť hodnoty reťazca na dátum alebo referenčné hodnoty na údaje reťazca atď.

V praktických aplikáciách sa operátor Express() veľmi často používa na prevod polí neobmedzenej dĺžky, pretože polia neobmedzenej dĺžky nemožno vyberať, zoskupovať atď. Ak takéto polia nie sú skonvertované, zobrazí sa chyba Nemôžete porovnávať polia neobmedzenej dĺžky a polia nekompatibilných typov.

VYBERTE SI
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
OD
Register kontaktných informácií AKO Kontaktné informácie

GROUP BY
EXPRESS(ContactInfo.Representation AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Celkom užitočná funkcia dopytovacieho jazyka 1C, ktorá kontroluje hodnotu v zázname a či je rovnaká NULOVÝ, To vám umožní nahradiť ho vlastnou hodnotou. Najčastejšie sa používa pri získavaní virtuálnych tabuliek zostatkov a obratov za účelom skrytia NULOVÝ a vložte jasnú 0 (nulu).

ISNULL(Predmesačné dane. Benefit AppliedFSS, 0)

Takáto funkcia dopytovacieho jazyka 1C ISNULL vráti nulu, ak neexistuje žiadna hodnota, čím sa zabráni chybe.

PRIPOJTE SA

Existujú 4 typy spojení: LEFT, SPRÁVNY, KOMPLETNÉ, VNÚTORNÉ.

ĽAVÉ a PRAVÉ PRIPOJENIE

Spojenia sa používajú na prepojenie dvoch tabuliek na základe konkrétnej podmienky. Funkcia kedy ĽAVÉ PRIPOJENIE je, že zoberieme prvú špecifikovanú tabuľku celú a podmienečne zviažeme druhú tabuľku. Polia druhej tabuľky, ktoré nebolo možné zviazať podmienkou, sú vyplnené hodnotou NULOVÝ.

Príklad ľavého spojenia v požiadavke 1C:

Vráti celú tabuľku a pole „Banka“ vyplní len na tých miestach, kde je splnená podmienka „Protistrany.Názov = Banky.Názov“. Ak podmienka nie je splnená, pole Banka bude nastavené na NULOVÝ.

RIGHT JOIN v jazyku 1C 8.3úplne podobné ĽAVÉ pripojenie, s výnimkou jedného rozdielu: v PRÁVO PRIPOJENIA"Hlavná" tabuľka je druhá, nie prvá.

ÚPLNÉ PRIPOJENIE

ÚPLNÉ PRIPOJENIE od ľavej a pravej sa líši tým, že zobrazuje všetky záznamy z dvoch tabuliek a spája len tie, ktoré dokáže spojiť podľa podmienky.

Napríklad:

ÚPLNÉ PRIPOJENIE
Adresár.Banky AKO Banky

BY

Jazyk dotazu vráti obe tabuľky úplne iba vtedy, ak je splnená podmienka spojenia záznamov. Na rozdiel od ľavého/pravého spojenia je možné, že NULL sa objaví v dvoch poliach.

VNÚTORNÉ SPOJENIE

VNÚTORNÉ SPOJENIE sa od plnej líši tým, že zobrazuje len tie záznamy, ktoré bolo možné podľa danej podmienky spojiť.

Napríklad:

OD
Adresár Klientov protistrany

VNÚTORNÉ SPOJENIE
Adresár.Banky AKO Banky

BY
Klienti.Názov = Banky.Názov

Tento dotaz vráti iba riadky, v ktorých majú banka a protistrana rovnaký názov.

Záver

Toto je len malá časť syntaxe z dopytovacieho jazyka 1C 8 v budúcnosti sa pokúsim podrobnejšie zvážiť niektoré body, ukázať a oveľa viac;

Pozrime sa teraz na zvyšok.

Funkcie pre prácu s reťazcami v 1C dotazoch

Existuje málo funkcií a operátorov na prácu s údajmi reťazca v dotazoch 1C.

Po prvé, reťazce v dopytoch môžu byť pridané. Ak to chcete urobiť, použite operátor „+“:

Žiadosť. Text = "VYBRAŤ
""Riadok: " " + Zdroj. Názov
;

Po druhé, môžete vybrať časť riadku. Ak to chcete urobiť, použite funkciu SUBSTRUCTION. Funkcia je podobná vstavanému jazyku 1C. Má tri parametre:

  1. Zdrojový reťazec.
  2. Číslo znaku, ktorým má začínať vybraný riadok.
  3. Postavy.

Žiadosť. Text= "VYBERTE si
SUBSTRING("
"Riadka: " ", 4, 3) ako výsledok"; // Výsledok: dobre

Funkcia ISNULL

NULL je špeciálny dátový typ na platforme 1C:Enterprise. Je to zároveň jediná možná hodnota tohto typu. NULL sa môže objaviť v dotazoch v niekoľkých prípadoch: pri pripájaní zdrojov dotazov, ak sa v jednej z tabuliek nenašla zodpovedajúca hodnota; pri prístupe k detailom neexistujúceho objektu; ak bola v zozname polí dotazu zadaná hodnota NULL (napríklad pri kombinovaní výsledkov výberu z viacerých tabuliek) atď.

Pretože NULL nie je ani null, ani prázdny reťazec, dokonca ani hodnota Nedefinované,často je užitočné nahradiť ho nejakým užitočnejším typom údajov. Na to je funkcia určená. ISNULL.

Má dva parametre:

  1. Hodnota, ktorá sa kontroluje.
  2. Hodnota, ktorou sa má nahradiť prvý parameter, ak sa ukáže, že je NULL.

Žiadosť. Text= "VYBERTE si
ISNULL(Source.Remainder, 0) AS Remainder"
; // Ak je výsledkom požiadavky pole zvyšok = NULL,
// potom bude nahradená 0 ​​a môžete s ňou vykonávať matematické operácie

Funkcie VÝKON A ODKAZY NA ÚVOD

Tieto funkcie sú navrhnuté tak, aby získali reťazcové reprezentácie rôznych hodnôt. To znamená, že konvertujú odkazy, čísla, booleany atď. do obyčajného textu. Rozdiel medzi nimi je vo funkcii VÝKON skonvertuje všetky typy údajov na text (reťazec) a funkciu ODKAZY NA ÚVOD- iba odkazy a vráti zostávajúce hodnoty tak, ako sú, neprevedené.

Žiadosť. Text= "VYBERTE si
REPREZENTÁCIA (PRAVDA) AKO boolovská,
REPREZENTÁCIA (4) AKO číslo,
REPREZENTÁCIA (Source.Link) AKO odkaz,
REPRESENTATION(DATETIME(2016,10,07)) AS Date"
;
// Boolean = "Yes", Number = "4", Link = "Document Cash order order No.... from..."
// Dátum="07.10.2016 0:00:00"

Žiadosť. Text= "VYBERTE si
REPREZENTAČNÁ REFERENCIA (PRAVDA) AKO boolovská,
REPREZENTAČNÁ REFERENCIA(4) AKO ČÍSLO
PRESENTINGLINK(Source.Link) AS Link,
REPRESENTATIONREFERENCE(DATETIME(2016,10,07)) AS Date"
;
// Boolean = TRUE, Number = 4, Link = "Document Cash order order No... from..."
// Dátum=07.10.2016 0:00:00

Funkcie TYP A HODNOTY TYPU

Funkcia TYP vráti dátový typ platformy 1C:Enterprise.

Žiadosť. Text= "VYBERTE si
TYPE (číslo)
TYPE (reťazec),
TYP (Dokument. Výdavkový hotovostný príkaz)“
;

Funkcia HODNOTY TYPU vráti typ hodnoty, ktorá mu bola odovzdaná.

Žiadosť. Text= "VYBERTE si
VALUES TYPE (5) AS Číslo,
TYP ("
"čiara" ") AS reťazec,
TYPE (Source.Link) AS Reference
Zo zdroja Directory.Source ako zdroja"
;
//Číslo=Číslo, Reťazec=Reťazec, Adresár = DirectoryLink.Source

Tieto funkcie je vhodné použiť napríklad vtedy, keď potrebujete zistiť, či pole prijaté v požiadavke je hodnotou nejakého typu. Napríklad získajme kontaktné informácie protistrán z informačného registra ContactInformation (sú tam uložené kontakty nielen protistrán, ale aj organizácií, jednotlivcov atď.):

Žiadosť. Text= "VYBERTE si

OD

KDE
VALUES TYPE(ContactInformation.Object) = TYPE(Adresár.Protistrany)“
;

Funkcia VÝZNAM

Funkcia Význam umožňuje použiť konfiguračné objekty 1C priamo v požiadavke bez použitia .

K predchádzajúcemu príkladu pridajme ešte jednu podmienku. Potrebujete získať iba telefónne čísla svojich protistrán.

Žiadosť. Text= "VYBERTE si
Kontaktné informácie.Úvod
OD
Register kontaktných informácií AKO Kontaktné informácie
KDE
VALUES TYPE(ContactInformation.Object) = TYPE(Adresár.Protistrany)
AND ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Treba si uvedomiť, že túto funkciu je možné použiť len s preddefinovanými hodnotami, t.j. s hodnotami, ktoré sú prístupné priamo z konfigurátora. Teda funkcia VÝZNAM nemožno použiť s prvkami adresára vytvorenými používateľmi, ale môže pracovať s enumeráciami, s preddefinovanými prvkami adresára, s hodnotami EmptyLink.

Operátor LINK

Operátor LINK je navrhnutý tak, aby kontroloval hodnoty vrátené požiadavkou, či patria ku konkrétnemu referenčnému typu. Rovnakú úlohu je možné vykonať pomocou funkcií TYP A HODNOTY TYPU(ktoré majú širší rozsah a boli diskutované vyššie).

Napríklad úloha výberu kontaktných informácií pre protistrany by sa dala vyriešiť takto:

Žiadosť. Text= "VYBERTE si
Kontaktné informácie.Úvod
OD
Register kontaktných informácií AKO Kontaktné informácie
KDE
ContactInformation.Object LINK Adresár.Protistrany"
;

Operátor EXPRESNÉ

Operátor EXPRESNÉ používané v dopytoch 1C v dvoch prípadoch:

  • keď potrebujete zmeniť vlastnosti primitívneho typu;
  • keď potrebujete zmeniť pole so zloženým typom údajov na pole s jedným typom.

Primitívne typy údajov zahŕňajú: číslo, reťazec, dátum, boolean. Niektoré z týchto typov údajov majú ďalšie charakteristiky. Typ číslo má dĺžku a presnosť, typ Riadok - dĺžka alebo neobmedzená.

Operátor EXPRESNÉ umožňuje zmeniť nie typ údajov, ale ďalšie charakteristiky. Napríklad dokáže premeniť šnúrku s neobmedzenou dĺžkou na šnúrku s obmedzenou dĺžkou. To môže byť užitočné, ak potrebujete zoskupiť výsledky dotazu podľa takéhoto poľa. Nemôžete zoskupovať podľa polí s neobmedzenou dĺžkou, preto to prevedieme na reťazec s dĺžkou 200 znakov.

Žiadosť. Text= "VYBERTE si
MNOŽSTVO (ODLIŠNÝ príchod tovaru a služieb. Odkaz) AKO Odkaz
OD
Dokument Prevzatie tovaru a služieb AKO Prevzatie tovaru a služieb
GROUP BY
EXPRES (Prijatie tovaru a služieb. Komentár AKO RIADOK (200))“
;

V niektorých prípadoch nemusia byť dotazy na polia s typom zložených údajov platformou 1C spracované optimálne. To má za následok dlhší čas dopytu, takže môže byť užitočné vopred skonvertovať zložený typ na jeden typ.

Žiadosť. Text= "VYBERTE si
EXPRESS(Pohyb tovaruObrat. Objednávka AKO doklad. Objednávka zákazníka). Dátum AKO Dátum objednávky,
Pohyb tovaruObrat.Nomenklatúra
OD
RegisterAkumulácie.Pohyb tovaru.Obrat AS Pohyb tovaruObrat
KDE
Pohyb tovaruObrat. ODKAZ na objednávku Dokument. Objednávka klienta"
;

Operátori VOĽBA A JE NULL

Operátor VOĽBA podobne ako operátor AK vo vstavanom jazyku 1C, ale má trochu obmedzenú funkčnosť.

Povedzme, že chceme dostávať kontaktné informácie z informačného registra ContactInformation a zároveň v samostatnom poli žiadosti uviesť, či patria protistrane alebo jednotlivcovi.

Žiadosť. Text= "VYBERTE si
Kontaktné informácie.Úvod,
VOĽBA
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Adresár.Protistrany)
POTOM "
Protistrana "
INÝ VÝBER
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
POTOM "
jednotlivec"
ELSE "Niekto iný" "
KONIEC
KONIEC AKO VLASTNÍK
OD
Register informácií Kontaktné informácie AS"
;

Ako je zrejmé z príkladu, v dizajne VOĽBA za slovom je vždy podmienka KEDY; hodnota použitá, ak je podmienka pravdivá za slovom POTOM a hodnota, ktorá sa použije, ak podmienka nie je splnená, za slovom INAK. Všetky tri dizajnové prvky VOĽBA sú povinné. Vynechať prvok INAK, rovnakým spôsobom ako pri použití operátora AK v zabudovanom jazyku 1C je to nemožné. Aj od operátora VOĽBA neexistuje žiadny analóg dizajnu INÁČ AK, ale môžete jeden investovať VOĽBA v inom, ako to bolo urobené v našom príklade.

Operátor JE NULL používané v dizajne VOĽBA na porovnanie poľa dotazu s typom NULL.

Žiadosť. Text= "VYBERTE si
VOĽBA
KEĎ JE HODNOTA NULL, POTOM 0
ELSE Význam
KONIEC"
;

Okrem toho operátor JE NULL možno použiť v podmienkach dopytu, napríklad vo vete KDE.

Pozor! Toto je úvodná verzia lekcie, ktorej materiály môžu byť neúplné.

Prihláste sa na stránku ako študent

Ak chcete získať prístup k školským materiálom, prihláste sa ako študent

Dotazovací jazyk 1C 8.3 pre začínajúcich programátorov: funkcie a operátory pre prácu s typmi (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Pripomeňme si, že každý atribút (vlastnosť, pole) adresára, dokumentu alebo akéhokoľvek iného aplikačného objektu má svoj vlastný typ. A na tento typ sa môžeme pozrieť v konfigurátore:

V dopytovacom jazyku existuje celá trieda funkcií a operátorov na prácu s typmi detailov. Pozrime sa na ne.

Funkcia VALUE TYPE

Táto funkcia preberá jeden parameter (hodnotu) a vracia jeho typ. Pre rekvizity opísané na obrázku (vyššie) Ochutnajte adresár Jedlo vráti sa nasledovné:

Teraz sa pozrime na rekvizity Výrazná vlastnosť v adresári Mestá:

Vidíte, že tento atribút môže byť jedným z niekoľkých typov: Linka, Adresár.Chute, Adresár.Farby. Tento typ detailov sa nazýva COMPOSITE.

Ak sa pokúsime vyplniť hodnotu takéhoto detailu v režime 1C:Enterprise, systém sa nás opýta, aký typ hodnoty bude zadaný:

A až po našom výbere nám umožní zadať hodnotu zvoleného typu.

Takže prvky adresára rovnakého typu ( Adresár.Mestá) bude možné uložiť do rovnakého atribútu ( Výrazná vlastnosť) hodnoty rôznych typov (reťazec, farby alebo príchute).

Môžete sa o tom presvedčiť kliknutím na prvky adresára Mestá v režime 1C:Enterprise. Čítate skúšobnú verziu lekcie, k dispozícii sú celé lekcie.

Hodnotou rozlišovacej funkcie je tu prvok adresára Príchute:

Tu je riadok:

A tu je vo všeobecnosti prvok referenčnej knihy Farby:

Toto sú možnosti, ktoré nám otvára zložený dátový typ!

Som zvedavý ako sa bude funkcia správať HODNOTY TYPU na rekvizitách Výrazný prvok, ktorý má zložený typ údajov:

Toto je už veľmi zaujímavé. Pozrime sa na každý riadok jednotlivo.

Typ hodnoty rozlišovacieho znaku pre prvok Rusko sa rovná NULOVÝ. S týmto typom sa stretávame prvýkrát. Hodnoty tohto typu sa používajú výlučne na určenie chýbajúcej hodnoty pri práci s databázou.

To je pravda, pretože prvok Rusko je skupina a nie obyčajný prvok adresára Mestá, takže nemá žiadne pole Výrazná vlastnosť. A typ chýbajúcej hodnoty, ako sme čítali vyššie, sa vždy rovná NULOVÝ.

Typ hodnoty rozlišovacieho znaku pre Perm sa rovná Príchute. To je pravda, pretože hodnota charakteristického znaku zadaného v databáze pre mesto Perm je odkaz na prvok adresára Príchute.

Pre Krasnojarsk sa typ atribútu rovná Farby, pretože hodnota vybraná v databáze je odkaz na prvok adresára Farby.

Pre Voronež sa typ atribútu rovná Linka, pretože hodnota zadaná v databáze je obyčajný reťazec.

India je opäť skupina, takže to nemá význam. A typ chýbajúcej hodnoty, ako si pamätáme, sa rovná NULOVÝ.

Tu je vec. Ak prejdete na prvok adresára Mestá s menom Sao Paulo, potom uvidíte, že pole Výrazná vlastnosť absolútne vôbec nevyplnené. Je to prázdne. A všetky prázdne polia zloženého typu majú osobitný význam NEDEFINOVANÉ .

S NEDEFINOVANÝ tiež sa stretávame prvýkrát. Význam NEDEFINOVANÝ používa sa, keď je potrebné použiť prázdnu hodnotu, ktorá nepatrí žiadnemu inému typu. Toto je presne naša situácia. A typ hodnoty NEDEFINOVANÝ, ako ste už pravdepodobne uhádli, sa rovná NULOVÝ.

Funkcia TYPE

Vyžaduje iba jeden parameter - názov primitívneho typu ( ČIARA, NUMBER, DÁTUM, BOOLEAN), alebo názov tabuľky, ktorej typ prepojenia chcete získať.

Výsledkom tejto konštrukcie bude hodnota typu Typ pre zadaný typ.

Znie to nejasne, však?

Pozrime sa na aplikáciu tohto dizajnu a všetko okamžite padne na svoje miesto.

Predpokladajme, že musíme vybrať všetky položky adresára Mestá, ktoré majú kompozitné rekvizity Výrazná vlastnosť má hodnotu typu ČIARA:

Teraz vyberme všetky záznamy, ktoré majú hodnoty atribútov Výrazná vlastnosť sú odkazy na prvky adresára Farby(tabuľka Adresár.Farby):

Ustúpiť

Ako si pamätáte, niektoré prvky adresára Mestá nemať rekvizity Výrazná vlastnosť. Funkcia HODNOTY TYPU pre takéto prvky vyrába NULOVÝ.

Ako môžete vybrať takéto prvky v dotaze? Na tento účel je k dispozícii špeciálny logický operátor JE NULL(nezamieňať s funkciou ISNULL, na ktoré sa pozrieme nižšie). Čítate skúšobnú verziu lekcie, k dispozícii sú celé lekcie.

Tu je príklad jeho použitia:

Skvelé. Ale všimli ste si, že tu nie je žiadny prvok typu Sao Paulo, rekvizity Výrazná vlastnosť ktorého tiež vydal NULOVÝ. Prečo sa to stalo?

Ide však o to, že situácia pre skupiny (Rusko, India, Brazília), pre ktoré sa vypĺňajú podrobnosti Výrazná vlastnosť v zásade nemožné, keďže ho vôbec nemajú, sa líši od situácie pre prvok Sao Paulo, pre ktorý je vyplnenie rekvizít možné, ale jednoducho sa nevyplní a rovná sa, ako si pamätáme, osobitnú hodnotu NEDEFINOVANÝ.

Ak chcete vybrať všetky záznamy, ktoré majú požadované Výrazná vlastnosť prítomný, ale nevyplnený, mala by sa použiť iná konštrukcia:

Ale porovnanie s UNDEFINED na určenie prázdnych (nevyplnených) atribútov bude fungovať len pre zložené typy.

Mimochodom, logický operátor IS NULL má formu negácie, ktorá vyzerá takto:

Logický operátor LINK

Vyberme si napríklad z adresára Mestá len tie záznamy, ktoré majú hodnotu zloženého atribútu Výrazná vlastnosť sú odkazom na prvok adresára Príchute:

Ako si pamätáte, rovnaký problém by sme mohli vyriešiť pomocou HODNOTY TYPU A TYP:

Funkcia ISNULL

Funkcia je navrhnutá tak, aby nahradila hodnotu NULOVÝ na iný význam.

Pamätáme si ten význam NULOVÝ vráti, ak požadovaný atribút (pole, vlastnosť) neexistuje.

Napríklad rekvizity Výrazná vlastnosť pre skupiny adresárov Mestá:

Funkcia ISNULL pomôže nám vypísať inú hodnotu, ak sa táto hodnota rovná NULOVÝ. Čítate skúšobnú verziu lekcie, k dispozícii sú celé lekcie. Nech je v tomto prípade riadok „Takáto rekvizita neexistuje!“:

Ukazuje sa, že ak prvý parameter funkcie ISNULL nerovná sa NULOVÝ, potom sa vráti. Ak je NULL, vráti sa druhý parameter.

Funkcia EXPRESS

Táto funkcia je len pre polia, ktoré majú zložený typ. Výborným príkladom takéhoto poľa je nehnuteľnosť Výrazná vlastnosť pre prvky adresára Mestá.

Ako si pamätáme, zložené polia môžu byť jedným z niekoľkých typov špecifikovaných v konfigurátore.

Pre pole Výrazná vlastnosť takéto platné typy sú ČIARA, Adresár.Farby A Adresár.Chute.

Niekedy je potrebné preniesť hodnoty zloženého poľa na konkrétny typ.

Uveďme zoznam všetkých hodnôt polí Výrazná vlastnosť písať Referencie.Farby:

Výsledkom je, že všetky hodnoty prvkov, ktoré boli typu Directory.Colors, zostali naplnené a boli prevedené na určený typ. Všetky hodnoty iných typov ( ČIARA, Adresár.Chute) sú teraz rovnaké NULOVÝ. Toto je zvláštnosť pretypovania pomocou funkcie EXPRESNÉ.

Typ môžete pretypovať buď na primitívny typ ( BOOLEAN, NUMBER, ČIARA, DÁTUM) alebo na referenčný typ. Čítate skúšobnú verziu lekcie, k dispozícii sú celé lekcie. Ale typ, na ktorý je odliatok vyrobený, musí byť uvedený v zozname typov pre toto zložené pole, inak systém vyhodí chybu.

Urobte si test

Spustiť test

1. Vyberte najsprávnejšie tvrdenie

2. Podrobnosti, ktoré môžu nadobúdať hodnoty jedného z niekoľkých typov, sa nazývajú

3. Na určenie typu hodnoty atribútu použite funkciu

4. Dôležité sú prázdne detaily zloženého typu