itthon / Online szolgáltatások / Az "in hierarchy" operátor a lekérdezésben. Példák lekérdezésekre hierarchikus könyvtárakkal való munkához Az 1c lekérdezés kommunikációs hierarchiájában

Az "in hierarchy" operátor a lekérdezésben. Példák lekérdezésekre hierarchikus könyvtárakkal való munkához Az 1c lekérdezés kommunikációs hierarchiájában

Ez a rész példákat mutat be a hierarchikus könyvtárakkal végzett munka során felmerülő tipikus problémák megoldására.

Egy hierarchikus címtár elemeinek beszerzése, amelyek egy adott csoportnak vannak alárendelve

A hierarchikus címtár alárendelt elemeinek megszerzéséhez a lekérdezési nyelv az IN HIERARCHY konstrukciót biztosítja. Példa a HIERARCHIABAN való használatra:


VÁLASZT
Nomenclature.Code,
Nómenklatúra.Vételár
TÓL TŐL

Ebben a példában a rendszer megkapja a &Csoport csoportban található Nomenclature könyvtár összes rekordját, beleértve magát, az alárendelt csoportokat és az alárendelt csoportokhoz tartozó elemeket.

Ha csak az adott csoportban közvetlenül elhelyezkedő elemekre, csoportokra vagyunk kíváncsiak, akkor a Szülő mezőben feltétel megadásával kaphatunk ilyen elemeket. Példa:


VÁLASZT
Nomenclature.Code,
Nómenklatúra. Név AS Név,
Nómenklatúra.Vételár
TÓL TŐL
Directory.Nomenclature AS Nómenklatúra

AHOL
Nomenclature.Parent = &Csoport

Ez a lekérdezés a &Csoport hivatkozással alárendelt csoportokat és elemeket választja ki.

Egy címtárelem alárendelt elemeinek meglétének ellenőrzése

Egy címtárelem alárendelt rekordjainak meglétének ellenőrzéséhez a bemutatotthoz hasonló lekérdezést használhat:

Ebben a példában a Szülő lekérdezési paraméterbe írjuk az elemre mutató hivatkozást, amelynél ellenőrizni kívánjuk, hogy vannak-e gyermekek. Egy ilyen lekérdezés végrehajtása után ellenőriznie kell az eredmény ürességét. Ha az eredmény nem üres, akkor vannak alárendelt rekordok. Ellenkező esetben - nem. Példa:


Ha Request.Execute().Empty() Akkor
Jelentés("Nincs bejegyzés");
Másképp
Report("Elérhető rekordok");
endIf;

Egy elem összes szülőjének megszerzése

A lekérdezési nyelv nem biztosít speciális eszközöket egy elem összes szülőjének lekérésére. Használhat hierarchikus összegeket a feladat végrehajtásához, de a hierarchikus összegek lekérése nagyszámú rekord összegeinek összeállítására van optimalizálva, és nem teljesen hatékony egyetlen elem szülőinek megszerzéséhez. Egy elem összes szülőrekordjának hatékonyabb lekéréséhez ajánlatos kis részletekben végigpörgetni a szülőrekordokat. Példa:


CurrentItemItem = ItemItem;

Query = Új lekérdezés("SELECT
| Nomenklatúra. Szülő,
| Nomenclature.Parent.Parent,
| Nomenclature.Parent.Parent.Parent,
| Nomenclature.Parent.Parent.Parent.Parent,
| Nomenclature.Parent.Parent.Parent.Parent.Parent
|FROM
| Directory.Nomenclature AS Nómenklatúra
|HOL
| Nomenclature.Link = &CurrentNomenclatureElement";

Míg az Igazság Ciklus
Request.SetParameter("CurrentItemItem", CurrentItemItem);
Eredmény = Query.Run();
Ha Eredmény.Empty() Akkor
Elvetél;
endIf;
Selection = Eredmény.Select();
Selection.Next();
Ha Oszlopszám = 0 Eredmény szerint.Oszlopok.Mennyiség() - 1 ciklus
CurrentItemItem = Kijelölés[OszlopSzám];
Elvetél;
Másképp
Jelentés(AktuálisTétel);
endIf;
EndCycle;

Ha CurrentItemItem = Directories.Nomenclature.EmptyLink() Akkor
Elvetél;
endIf;
EndCycle;

Ebben a példában az ElementNomenclature változóban rögzített hivatkozás összes szülője megjelenik a szolgáltatási üzenet ablakában. A ciklusban 5 linkszülő kerül kiválasztásra.

Ha a címtárban a szintek száma korlátozott és kicsi, akkor minden szülőt egy kéréssel meg lehet szerezni ciklus nélkül.

Hierarchikus könyvtár megjelenítése a jelentésben

Ha hierarchikus könyvtárat szeretne megjeleníteni a jelentésben, miközben megőrzi a hierarchiát, a következőhöz hasonló lekérdezést kell használnia:


VÁLASZT
Nomenclature.Code,
Nómenklatúra. Név AS Név,
Nómenklatúra.Vételár
TÓL TŐL
Directory.Nomenclature AS Nómenklatúra
RENDEZÉS
Név HIERARCHIA

Ez a lekérdezés kiválasztja az összes rekordot a könyvtárból, és hierarchia szerint rendezi őket. Az eredmény név szerint lesz rendezve, figyelembe véve a hierarchiát.

Ahhoz, hogy a címtárcsoportok az elemek fölé kerüljenek, a kérésben az ORDER BY záradékot a következőre kell cserélni:


RENDEZÉS
Nómenklatúra. Ez a csoport HIERARCHIA,
Név

Az eredmény továbbra is hierarchikusan rendeződik, de a csoportok az elemek felett jelennek meg.

Lehetőség van a MEGRENDELÉS SZERINT ajánlatot az AUTOMATIKUS RENDELÉS opcióval helyettesíteni. Ebben az esetben az eredmény a címtár beállításainak megfelelően lesz rendezve, pl. ha a címtár azt írja ki, hogy a csoportokat az elemek felett kell elhelyezni, akkor azok felett lesznek.

Az eredmények felhasználásával a címtár hierarchikus struktúráját is megkaphatjuk.


VÁLASZT
Nomenclature.Code,
Nómenklatúra. Név AS Név,
Nómenklatúra.Vételár

FROM Directory.Nomenclature AS Nomenclature

AHOL
(Nómenklatúra.ThisGroup = HAMIS)

RENDELÉS Név szerint

Összesítések lekérése hierarchia szerint

Ha egy lekérdezésben hierarchia szerinti összegeket szeretne lekérni, meg kell adnia a HIERARCHY kulcsszót a SOFTWARE TOTAL záradékban, miután megadta azt a mezőt, amely alapján a végösszegeket kiszámítja. Példa a „Cikk forgalma” jelentésre, amely hierarchia szerinti végösszegeket kap:


VÁLASZT

TÓL TŐL

Nómenklatúra HIERARCHIA

Ennek a kérésnek az eredményeként nem csak az egyes tételekre, hanem azon csoportokra is összeszámolunk, amelyekhez ez vagy az a cikk tartozik.

Abban az esetben, ha nincs szükségünk összegekre az elemekhez, hanem csak a csoportokhoz, akkor a HIERARCHY ONLY konstrukciót kell használnunk az összegeknél. Példa:


VÁLASZT
A nómenklatúra elszámolása.Nomenclature AS Nómenklatúra,
Nómenklatúra elszámolásaForgalom.Nómenklatúra.Presentation,
NomenclatureTurnover elszámolása.QuantityTurnover AS QuantityTurnover
TÓL TŐL
Felhalmozási nyilvántartás.Nómenklatúra Számvitel.Forgalom HOGYAN Nómenklatúra KönyvelésForgalom
EREDMÉNYEK ÖSSZEG (Mennyiségforgalom) PO
Nómenklatúra HIERARCHIA CSAK

A lekérdezés eredménye csak a cikkcsoportok összes rekordja lesz.

Mi az 1C címtár és miért van rá szükség? A címtár feltételesen állandó információkat tárol, pl. hosszú időn keresztül szinte változatlan információ. Például a „Nómenklatúra” címtár az eladott vagy előállított áruk listáját tartalmazza. Ezenkívül egy könyvtár számos tulajdonságot tartalmazhat, amelyek leírnak egy könyvtárelemet.

Ha egy személy nemét vesszük összehasonlításul, akkor a lista korlátozott és nem változik, ezért a felsorolás alkalmasabb rá.

Miután létrehoztunk egy új könyvtárat, a következő képet fogjuk látni.

Nézzük meg az összes könyvjelzőjét.

Alapvető

Itt a név (az adatbázis azonosítója) és a szinonimája (a címtár felhasználói neve) látható. Az opcionális megjegyzés olyan megjegyzés, amely elmagyarázza a címtár célját vagy leírja annak jellemzőit.

Hierarchia

Ezen a lapon konfigurálhatja a címtárelemek egymásba ágyazásának mélységét. Ezzel a beállítással kényelmes az elemek megkülönböztetése és részletezése bizonyos kritériumok szerint. Például a „Szekrények” termékek az egyik csoportba, az „Asztalok” pedig egy másik csoportba tartoznak. Alapértelmezés szerint létrehozásakor a könyvtár megjelenik elemek listája. Ha bejelöli a Hierarchikus könyvtár jelölőnégyzetet, akkor minden elem alárendelhető egy másik elemnek (csoportnak). Az alábbiakban bemutatjuk a könyvjelző testreszabásának és a megjelenítés egyéni módban történő módosításának lehetőségeit.

Hierarchia típusa:

Csoportok és elemek hierarchiája

Ezzel a beállítással az elemek csak csoportokba (mappákba) ágyazhatók be.

Itt, amint látható, minden elemnek és csoportnak ugyanazok az ikonjai vannak, és bármelyik elem beágyazható.

Helyezzen csoportokat a tetejére

Ha ez a jelölőnégyzet be van jelölve, a csoportok mindig a tetején lesznek, ellenkező esetben rendezési sorrendbe kerülnek, például így:

A hierarchiaszintek számának korlátozása

Ha itt nincs bejelölve a jelölőnégyzet, akkor a beágyazás korlátlan.

Ha a jelölőnégyzet be van jelölve, az alábbiakban megadhatja a szintek számát.

Tulajdonosok

A könyvjelzőn tulajdonosok más címtárak is feltüntethetők, amelyekhez képest ez alárendelt. Az alárendelt könyvtárak kapcsolati diagramja hasonló egy hierarchikus címtár kapcsolati diagramjához, csak itt egy másik könyvtár működik szülőként, és tulajdonosnak nevezik. Tipikus konfigurációkban erre jó példa a "Szerződések" könyvtár alárendelése a "Counterparties" könyvtárnak, mert Nem létezhet olyan megállapodás, amely nem tartozik egyik partnerhez sem.

A "Könyvtártulajdonosok listája" mező megadja azon könyvtárak listáját, amelyek a könyvtár elemeit birtokolják.

Az alábbiakban az „Alárendeltség használata” mezőben látható, hogy ennek a címtárnak milyen elemei lesznek alárendelve.

Hogyan lehet programozottan kideríteni, hogy egy könyvtár hierarchikus-e vagy sem

Ehhez hivatkoznia kell a metaadatokra

Ez HierarchicalDirectory = Metadata.Directories.Counterparties.Hierarchical;

Folytatjuk...

Figyelem! Ez a lecke bevezető változata, melynek anyagai hiányosak lehetnek.

Jelentkezzen be diákként az oldalra

Jelentkezzen be tanulóként az iskolai anyagok eléréséhez

Lekérdezési nyelv 1C 8.3 kezdő programozóknak: BETWEEN és IN operátorok

Logikai operátor BETWEEN

Operátor KÖZÖTT lehetővé teszi az ellenőrzést benne van az érték? tőle balra megadott kifejezés a jobbra megadott tartományba ( tartományhatárokkal együtt, azaz bezárólag).

Tehát ahelyett

Ha éppen ellenkezőleg, minden olyan élelmiszert ki kell választani, amelynek kalóriatartalma nem szerepel a tartományban, akkor a tagadás következő formája megfelelő (megjelent egy részecske NEM):

Operátor KÖZÖTT Nem csak numerikus tartományokra alkalmazható. Datolyákkal is jól működik:

Logikai operátor B

Egyezés keresése a felsoroltak egyikével

Operátor BAN BEN lehetővé teszi az ellenőrzést egyezik-e az érték a tőle balra jelzett kifejezés, valamelyik értékkel a jobb oldalon van leírva.

Tehát ahelyett

Tudnál valami tömörebbet írni?

És az eredmény ugyanaz lesz:

Ha éppen ellenkezőleg, minden olyan ételt ki kell választani, amelynek színe nem esik egybe a listából, akkor a tagadás következő formája megfelelő (megjelent egy részecske NEM):

Annak ellenőrzése, hogy egy érték egyezik-e a lekérdezés egyik eredményével

Tegyük fel, hogy csak azokat a színeket kell kiválasztanunk az adatbázisból, amelyek az étel leírásában szerepelnek. Így a kiválasztott lista nem tartalmazhatja például a fekete színt, mivel adatbázisunkban nincs fekete étel. Ön a lecke próbaverzióját olvassa, a teljes leckék elérhetők.

Ennek egyik módja a logikai operátor használata BAN BEN, amelynek jobb oldalán lesz egy allekérdezés, amely az összes címtárbejegyzés színnevét választja ki Étel:

SELECT Name FROM Directory. Színek WHERE Név IN ( SELECT Color. Name FROM Directory. Food )

Mellesleg megemlítem, hogy belső kérésből egy külső kérés mezőihez lehet hozzáférni.

Ismét az operátor ezen formájához BAN BEN, részecskehasználat is elérhető NEM vele szemben.

A címtárak hierarchiatagságának ellenőrzése

A címtárak esetében a hierarchiatagság ellenőrzése is elvégezhető.

Először nézzünk meg egy példát egy hierarchikus könyvtárra. Nyissa meg a "Városok" könyvtárat adatbázisunkban:

Kérjük, vegye figyelembe, hogy elemei eltérnek a többi könyvtártól ( Étel, Színek, Ízek) sárga mappák jelenléte. Ez címtárcsoportok.

A csoportok abban különböznek a közönséges elemektől, hogy másokat is tartalmazhatnak csoportok és elemek. Csakúgy, mint a mappák, más mappákat és fájlokat is tartalmaznak.

Egy csoport tartalmának megtekintéséhez kattintson rá duplán:

Ha egy szinttel feljebb szeretne lépni, kattintson ismét duplán a csoportra:

Így egy hierarchikus címtár tartalmazhat közönséges elemeket (például Rio de Janeiro, Salvador) és csoportokat (például Brazília, India). Ön a lecke próbaverzióját olvassa, a teljes leckék elérhetők.

Minden elemnek (legyen szó csoportról vagy közönséges elemről) lehet szülője. Például a Rio de Janeiro elem szülője a Brazília csoport:

És ez igaz, mert Rio de Janeiro a brazil csoport része a címtárhierarchiában:

Most írjunk egy lekérdezést, amely lekéri a kiválasztott országcsoportot és az abban szereplő összes városelemet.

Kérjük, vegye figyelembe, hogy a kérés szövegében a GroupCountry név előtt és (&) található. Az „és” jellel ellátott neveket a rendszer automatikusan paraméterként ismeri fel, amelyek értékét a lekérdezés végrehajtása előtt be kell állítani.

Miután beillesztjük ezt a lekérdezést a konzolba, és a Futtatás gombra kattintunk a frissítéshez, beállíthatjuk ezt a paramétert:

Válassza ki értékként az "Oroszország" csoportot (Kiválasztás gomb):

Ha most a "Futtatás" gombra kattintunk, a lekérdezés eredménye a következő lesz:

A felkérés eredménye maga a csoport (Oroszország) és az annak részét képező összes elem (Perm, Krasznojarszk és Voronyezs).

Ha Oroszország helyett a „Brazíliát” választja, az eredmény a következő lesz:

Így az operátor eredménye A HIERARCHIÁBAN akkor IGAZ lesz, ha a bal oldali kifejezés értéke egy könyvtárelemre hivatkozik, és benne van a jobb oldali értékkészletben (Brazília), vagy hierarchikusan egy ebben a halmazban található csoporthoz tartozik (Sao Paulo, Rio de Janeiro, Salvador).

A lekérdezés eredménye értékkészlet is lehet, amelyhez képest a rendszer ellenőrzi az egyezést. Ebben az esetben a kezelőtől jobbra BAN BEN meg kell adnia a kérés leírását:

Az üzemeltetőnek A HIERARCHIÁBAN részecskehasználat is elérhető NEM vele szemben.

Csináld meg a tesztet

Indítsa el a tesztet

1. A BETWEEN logikai operátor ellenőrzi az értéket

2. Logikai kifejezés 1 1 ÉS 1 KÖZÖTT

3. Logikai kifejezés 1 NEM 2 ÉS 2 KÖZÖTT

4. B logikai operátor ellenőrzi

5. A B logikai operátor lehetővé teszi az ellenőrzést

Az 1C könyvtárak egy speciális metaadat-fa objektum, amely statikus hivatkozási információk tárolására szolgál. Például tipikus konfigurációkban a következő nézetek láthatók: , Nómenklatúra, Alkalmazottak, Tárgyi eszközök stb. A könyvtárakban lévő információk általában nem változnak gyakran. A könyvtárakat ezt követően szinte minden számviteli objektumban könyvelési részként vagy referencia információként használják.

Az alábbiakban egy könyvtár beállítását és tervezését tekintjük meg a konfigurátorból, példaként a „Nómenklatúra” könyvtár használatával.

Alapvető lap

Az „Alap” lap megadja a nevet, a szinonimát, az objektumábrázolást és a cél leírását.

„Könyvtárhierarchia” lapon

Itt jön létre a címtár hierarchiája.

Az 1C 8.3 hierarchiája kétféle - " csoportok és elemek"És" elemeket". Abban különbözik, hogy az első esetben csak egy mappa (csoport) lehet szülő (mappa), a második esetben pedig egy elem is lehet szülő.

„Csoportok elhelyezése a tetején” - a zászló felelős a csoportok lista formában történő megjelenítéséért.

Szintén a beállításokban korlátozhatja a csoportok számát a címtárhierarchiában a megfelelő beállítás segítségével.

Tulajdonosok lap

Egy címtár alárendelhető egy másik könyvtárnak. Az 1C 8.3 konfigurálása szempontjából ez azt jelenti, hogy a „Tulajdonos” attribútum kötelezővé válik az alárendelt elemnél. Példa egy ilyen kapcsolatra a címtárak között szabványos konfigurációkban: „Nómenklatúra - Mértékegységek”, „Szerződéses felek – Vállalkozói szerződések”.

A címtár tulajdonosa a következő metaadat-objektumok is lehetnek: , .

Adatok fül

Szerezzen ingyen 267 videóleckét 1C-n:

A legfontosabb lap programozói szempontból. Ez tartalmazza a címtár részleteit.

A könyvtár szabványos részleteket tartalmaz, amelyeket az 1C 8.2 programozó nem szerkeszt; ezek listája a „Standard Details” gombra kattintva tekinthető meg:

Mindegyiknél részletesebben kitérek:

  • Ez a csoport— egy logikai típusú attribútum, amely jelzi, hogy csoportról vagy elemről van-e szó. Csak a hierarchikus könyvtárban érhető el. Jegyzet, ennek az attribútumnak az értéke nem módosítható 1C: Enterprise módban.
  • Kód— kellékek, típusszám vagy karakterlánc (általában karakterlánc). A rendszer által automatikusan kiosztott szám. Általában a következőképpen számítják ki (előző kód + 1). A karakterlánc típusát javaslom, mert a numerikus értékek rendezése nem a várt módon működik. Listában és beviteli mezőkben címtárbemutatóként használható. Általában egy elem keresésére szolgál karakterlánc beírásakor. Ha el kell távolítania a Kód mezőt, írjon be nullát a sor hosszába.
  • Név— kötelező adatok, karakterlánc típusa. A sor maximális hossza 150 karakter. Listában és beviteli mezőkben címtárbemutatóként használható. Általában egy elem keresésére szolgál karakterlánc beírásakor. Ha el kell távolítania a Név mezőt, írjon be nullát a sor hosszába.
  • Szülő— a DirectoryLink típusú attribútum.<ИмяТекущегоСправочника>. Csak a hierarchikus könyvtárban érhető el. A hierarchiában a fölérendelt szülőre mutat. Ha az elem vagy csoport a könyvtár gyökerében található, akkor a Könyvtár érték kerül megadásra.<ИмяТекущегоСправочника>.EmptyLink.
  • Tulajdonos— hivatkozás az aktuális címtárelem (csoport) tulajdonos elemére. Elérhető csak az alárendelt 1C könyvtárban.
  • FlagDeletion— Boolean típusú kellékek. Felelős a „törlési jel” megjelenítéséért a rendszerben. A törlésre megjelölt elem használhatatlannak minősül, de régi dokumentummozgások maradhatnak rajta.
  • Link— karakterlánc típusú mező. Ez az attribútum egy egyedi objektumazonosítót - GUID - tárol. Amit a rendszerben a „link” nevű vizuális megjelenítésben látunk, az csupán egy objektum reprezentációja. Nem módosítható.
  • Előre meghatározott— logikai típus, megjeleníti, hogy az elem előre definiált-e, erről később. Nem módosítható.

Az „Adatok” fül a könyvtár rendszerbeli reprezentációját is jelzi, a 8.2.16-os verzió előtt az ábrázolás csak Kód vagy Név lehetett. A platform legújabb verzióiban (8.3-tól kezdődően) a nézet önállóan leírható a menedzser modulban a „ViewReceivingProcessing” kezelő segítségével.

Számozás fül

Itt adhatja meg a címtár számozással kapcsolatos beállításait. Az automatikus számozás használata javasolt. Az egyediség ellenőrzése egy zászló, amely szükség esetén segít egyedivé tenni a kódot. Ha a beállított jelzővel megpróbál egy könyvtárelemet nem egyedi kóddal írni, az 1C-ben a „A címtárkód nem egyedivé vált” üzenet jelenik meg.

Kódsorozat - meghatározza a telefonkönyv számozásának módját; megadhatja a számozást tulajdonos szerint. Például a „Szarvak és paták” szerződő félnek saját szerződésszámozása lesz - „1, 2, 3” stb.

Űrlapok lap

A címtár űrlapjai itt találhatók. Ha a konfigurációt normál és felügyelt módban is elindítja, akkor alapértelmezés szerint két lap lesz űrlappal: „fő” és „haladó” - a normál és a felügyelt alkalmazások esetében eltérő.

Ezen az oldalon található a könyvtár egyik fontos jellemzője - „“. Ez az 1C 8 nagyon kényelmes funkciója, amely lehetővé teszi, hogy az adatok kitöltésekor a beviteli mezőben ne lépjen be a könyvtárba, hanem írja be a nevét, kódját stb. és válassza ki a kívánt elemet a legördülő listából. Ez így néz ki:

Egyéb lap

A lapon gyorsan hozzáférhet a címtár fő moduljaihoz - az objektummodulhoz és a kezelőmodulhoz.

Az oldalon előre meghatározott könyvtárelemek listáját is megadhatja. Ezek olyan elemek, amelyeket Vállalati módban nem lehet törölni. Az előre definiált elemek név szerint közvetlenül elérhetők a konfigurátorban, például: Directories.Nomenclature.Service.

Ez a lap határozza meg a blokkolási módot is - automatikus vagy vezérelt. 1C: Enterprise módban elérhető teljes szöveges keresés, valamint a címtár referenciainformációinak használata.

Ebben a cikkben mindent szeretnénk megbeszélni veled 1C lekérdezési nyelvi függvények, és lekérdező nyelvi konstrukciók. Mi a különbség a funkció és a design között? A függvényt zárójelekkel és a benne található lehetséges paraméterekkel hívjuk meg, a konstrukciót zárójelek nélkül írjuk. Kétségtelenül az 1C lekérdező nyelv összes struktúráját és funkcióját rugalmassá és multifunkcionálissá tenni az adatgyűjtési folyamatot. Ezek a függvények és konstrukciók a kérelmező mezőkre vonatkoznak, néhány pedig a feltételekre is.

1C lekérdezési nyelvi funkciók

Mert egyértelmű leírás 1C lekérdezési nyelvi függvények sokkal kevésbé gyakori, mint a struktúrák leírása, úgy döntöttünk, hogy elkezdjük a függvények vizsgálatát. Most nézzük meg mindegyiket külön-külön, leírva a célt, a szintaxist és a használati példát, tehát:

1. Funkció DÁTUM IDŐ- ez a függvény egy "Dátum" típusú konstans mezőt hoz létre.

Szintaxis: DÁTUM IDŐ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Használati példa:

2. DATE DIFFERENCE funkció- a két dátum közötti különbséget adja vissza az egyik dimenzióban (év, hónap, nap, óra, perc, másodperc). A mérés paraméterként kerül átadásra.

Szintaxis: DIFFERENCEDATE(<Дата1>, <Дата2>, <Тип>)

Használati példa:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Qty.Days";

3. VALUE függvény- beállít egy konstans mezőt egy előre meghatározott rekorddal az adatbázisból; bármilyen típusú üres hivatkozást is kaphat.

Szintaxis: VALUE(<Имя>)

Használati példa:

Request.Text = "SELECT //előre definiált elem | ÉRTÉK (Könyvtár. Pénznemek. Dollár) AS dollár, //üres hivatkozás | ÉRTÉK (Dokumentum. Áruk és szolgáltatások átvétele.EmptyLink) AS nyugta, //átutalási érték | ÉRTÉK (átutalás . Jogi magánszemély. Magánszemély) AS magánszemély, //előre meghatározott számla | ÉRTÉK (Számlatábla. Önfenntartó. Anyagok) AS Számla_10" ;

4. SELECT funkció- előttünk van a kódban használt IF konstrukció analógja, csak ezt használják az 1C lekérdezésekben.

Szintaxis: VÁLASZTÁS MIKOR<Выражение>AKKOR<Выражение>MÁSKÉPP<Выражение>VÉGE

Használati példa:

Request.Text = //ha az összeg meghaladja a 7500-at, akkor 300 rubel kedvezményt kell alkalmazni, //tehát ha a feltétel aktiválódik, akkor a //függvény a Sum - 300-at adja vissza //egyébként a kérés egyszerűen összeget ad vissza "KIVÁLASZT | KIVÁLASZT | WHEN TCR-bevételek.Összeg > 7500 | THEN TCR-bevételek.Összeg - 300 | EGYÉB TCR-bevételek.Összeg | VÉGE AS Összeg Kedvezménnyel |FROM | Dokumentum.Áruk átvételeSzolgáltatások.Áruk TCR-ként";

5. EXPRESS funkció- lehetővé teszi egy konstans mező kifejezését egy adott típussal.

Szintaxis: EXPRESS (Mezőnév AS Típusnév)

Használati példa:

Query.Text = "VÁLASZTÁS KÜLÖNBÖZŐ | Értékesítés.Regisztr.szám, | KIVÁLASZT | WHEN Értékesítés.Regisztrátor LINK Dokumentum.Fogyóeszközök | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | WHEN Értékesítés.Regisztrátor LINK Dokumentum.Implementation THEN EXPRESS(Sales.Registrar AS Document. Implementation) | END | ... | END AS Number | FROM | RegisterAccumulations.Purchases AS Purchases";

Van más lehetőség az EXPRESS függvény használatára vegyes típusú mezőkben, hol fordulnak elő? A legegyszerűbb példa a „Regisztrátor” bármely regiszterhez. Miért kell tehát minősítenünk a típust a regisztrátorban? Tekintsük azt a helyzetet, amikor az anyakönyvvezetőből kiválasztjuk a "Szám" mezőt, melyik táblázatból lesz kiválasztva a szám? A helyes válasz mindenkinek! Ezért, hogy a lekérdezésünk gyorsan működjön, meg kell adnunk egy explicit típust az EXPRESS függvény segítségével

Használati példa:

Query.Text = "SELECT | EXPRESS(Nómenklatúra.Megjegyzés AS sor(300)) AS megjegyzés, | EXPRESS(Nómenklatúra.Összeg AS szám(15,2)) AS Összeg |FROM | Címtár.Nómenklatúra AS Nómenklatúra";

6. ISNULL függvény(alternatív helyesírás ISNULL) - ha a mező NULL típusú, akkor a függvény második paraméterével helyettesítjük.

Szintaxis: NULLA(<Поле>, <ПодставляемоеЗначение>)

Használati példa:

Azt is érdemes megjegyezni, hogy a NULL típust célszerű MINDIG valamilyen értékre cserélni, mert A NULL típussal való összehasonlítás mindig FALSE-t ad vissza, még akkor is, ha a NULL értéket NULL-lal hasonlítja össze. Leggyakrabban a NULL értékek az összekapcsoló táblák eredményeként jönnek létre (minden típusú csatlakozás, kivéve a belsőket).

Query.Text = //Válassza ki a teljes tételt és egyenlegeit //ha valamelyik cikkben nincs egyenleg, akkor egy //NULL mező lesz, ami a 0 értékre lesz cserélve "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS maradék | FROM | Címtár.Nómenklatúra AS-szám | BAL KAPCSOLAT Felhalmozások regisztrálása. Áruk raktárban. Maradékok AS ÁrukRaktárokbanMaradványok | BE (GoodsInWarehouses) Linkek";

7. REPREZENTÁCIÓ funkció- lehetővé teszi a kérés mezőjének megjelenítését.

Szintaxis: TELJESÍTMÉNY(<НаименованиеПоля>)

Használati példa:

Query.Text = "SELECT | REPREZENTÁCIÓ(FreeRemainingRemains.Nomenclature) AS Nomenklatúra, | REPRESENTATION(FreeRemaining.Warehouse) AS Raktár, | FreeRemaining.InStockRemaining |FROM |Felhalmozási nyilvántartás.FreeRemainingASFreeing;FreeRemainingARemaining"

Konstrukciók az 1C lekérdezési nyelven

Fentebb megbeszéltük veled 1C lekérdezési nyelvi függvények, itt az ideje átgondolni konstrukciókat az 1C lekérdező nyelven, nem kevésbé fontosak és hasznosak, kezdjük.

1. Építés LINK- egy referenciatípus ellenőrzésére szolgáló logikai operátor. Leggyakrabban akkor fordul elő, amikor egy összetett típusú mezőt egy adott típushoz hasonlítanak. Szintaxis: LINK<Имя таблицы>

Használati példa:

Request.Text = //ha a rögzítő értéktípusa bizonylat Nyugta, //akkor a lekérdezés "Áru átvétele", ellenkező esetben "Árueladás" "SELECT | SELECT | WHEN Remainings.Registrar LINK Dokumentum.Áru átvétele és Szolgáltatások | AKKOR ""Átvétel" | EGYÉB ""Fogyasztás"" | END AS A mozgás típusa | FROM | Felhalmozási nyilvántartás. A raktárban lévő többi termék AS marad" ;

2. Tervezés KÖZÖTT- ez az operátor ellenőrzi, hogy az érték a megadott tartományon belül van-e.

Szintaxis: KÖZÖTT<Выражение>ÉS<Выражение>

Használati példa:

Request.Text = //a teljes nómenklatúra lekérése, amelynek kódja 1 és 100 között van "SELECT | Nomenclature.Link | FROM | Directory.Nómenklatúra AS Nomenklatúra | WHERE | Nomenclature.Code BETWEEN 1-100" ;

3. B és B konstrukció HIERARCHIA- ellenőrizze, hogy az érték benne van-e az átvitt listában (átvihetők listaként tömbök, értéktáblázatok stb.). Az IN HIERARCHY operátor lehetővé teszi a hierarchia megtekintését (példa a Számladiagram használatára).

Szintaxis: BAN BEN(<СписокЗначений>), HIERARCHIABAN(<СписокЗначений>)

Használati példa:

Request.Text = //válassza ki a fiók összes alszámláját "SELECT | Önfenntartó. Kapcsolja össze a fiókot Számlák. Önfenntartó. Áruk)";

4. Kialakítás HASONLÓ- Ez a funkció lehetővé teszi, hogy egy karakterláncot egy karakterlánc-mintával hasonlítsunk össze.

Szintaxis: MINT "<ТекстШаблона>"

Sorminta opciók:

% - tetszőleges számú karaktert tartalmazó sorozat.

Egy tetszőleges karakter.

[...] - bármely, szögletes zárójelben szereplő karakter vagy karaktersorozat. A felsorolás megadhat tartományokat, például a-z, ami egy tetszőleges karaktert jelent a tartományban, beleértve a tartomány végeit is.

[^...] - a szögletes zárójelben szereplő egyetlen karakter vagy karaktersorozat, kivéve a tagadójel után felsoroltakat.

Használati példa:

Query.Text = //keresse meg a teljes nómenklatúrát, amely tartalmazza a TABUR gyökeret és //kis vagy nagy t betűvel kezdődik "SELECT | Nomenclature. Link | FROM | Directory. Nomenclature AS Nomenclature | WHERE | Products. Name LIKE "" [Tt ]abur%""" ;

5. Tervezés ENGEDÉLYEZVE- ez az operátor lehetővé teszi, hogy csak azokat a rekordokat válasszuk ki az adatbázisból, amelyekhez a hívó olvasási jogosultsággal rendelkezik. Ezek a jogok rekordszinten (RLS) vannak konfigurálva.

Szintaxis: Az ALOWED a SELECT kulcsszó után van írva

Használati példa:

Request.Text = "KIVÁLASZTÁS ENGEDÉLYEZETT | Partnerek. Link | FROM | Címtár. Partnerek MINT szerződő felek";

6. Tervezés KÜLÖNBÖZŐ- lehetővé teszi olyan rekordok kiválasztását, amelyekben nincsenek ismétlődő rekordok.

Szintaxis: A SELECT kulcsszó után a VARIOUS szerepel

Használati példa:

Request.Text = //kiválasztja azokat a rekordokat, amelyekhez az olvasónak joga van "SELECT VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

Ezenkívül a KÜLÖNBÖZŐ konstrukció használható az ALOWED operátorral és más operátorokkal.

Használati példa:

Request.Text = //különféle rekordokat választ ki, amelyekhez az olvasónak joga van "SELECT ALOWED VARIOUS | Counterpartties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Tervezés ELŐSZÖR- a lekérdezés eredményéből kiválasztja a paraméterben megadott rekordok számát.

Szintaxis: FIRST<число>

Használati példa:

Request.Text = //válassza ki az első 4 CCD-számot a "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers" könyvtárból;

8. Tervezés VÁLTOZÁSRA- lehetővé teszi az asztal zárolását, csak tranzakciókban működik (csak az automatikus zárolásoknál releváns).

Szintaxis: VÁLTOZÁSRA<НаименованиеТаблицы>

Használati példa:

Query.Text = "SELECT | Szabad Maradék Maradék. Nómenklatúra, | Szabad Maradék. Raktár, | Szabad Maradék. Raktáron Maradt | FROM | Felhalmozások nyilvántartása. Ingyenes Maradványok. Maradványok, mint szabad maradványok Maradékok | VÁLTOZTATÁSI lajstrom | . Szabad Maradék. Maradék";

9. Tervezés MEGRENDELÉS- meghatározott mezők szerint rendezi az adatokat. Ha a mező hivatkozás, akkor a zászló beállításakor AUTOMATIKUS RENDELÉS A rendezés linkábrázolás szerint történik; ha a jelző ki van kapcsolva, akkor a hivatkozások a memóriában lévő hivatkozási cím rangja szerint vannak rendezve.

Szintaxis: RENDEZÉS<НаименованиеПоля>AUTOMATIKUS RENDELÉS

Használati példa:

Query.Text = "SELECT | Free Remainings Remainings. Nomenclature AS Nomenclature, | Free Remainings Remainings. Warehouse AS Raktár, | Free Remainings Remainings. Raktáron Maradvány | FROM | Regisztráljon Felhalmozások. Szabad Maradványok. Fennmaradó AS Free Remaining Remainings BY | | Nómenklatúra | AUTOMATIKUS MEGRENDELÉS";

10. Tervezés GROUP BY- a lekérdezési karakterláncok meghatározott mezők szerinti csoportosítására szolgál. A numerikus mezőket minden összesítő függvénynél használni kell.

Szintaxis: CSOPORTOSÍT<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Használati példa:

Query.Text = "SELECT | ItemsInWarehouses.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInWarehouses.Stock) AS KÉSZLET |FROM | RegisztrációAccumulations.ItemsInWarehouses AS | ItemsInWarehouses | ItemsInWarehouses | ItemsInWarehouses | ItemsInWarehouses |ItemsInWare | AtWarehouse ah.Warehouse" ;

11. Tervezés HAVING- lehetővé teszi, hogy a WHERE konstrukcióhoz hasonlóan összesítő függvényt alkalmazzon egy adatkiválasztási feltételhez.

Szintaxis: HAVING<агрегатная функция с условием>

Használati példa:

Query.Text = //csoportosított rekordokat választ ki, ahol az InStock mező nagyobb, mint 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS KÉSZLET |FROM | RegisztrációAccumulsTocklationsa. CSOPORTOSÍTÁS | TermékekRaktárokban.Nómenklatúra, | Raktártermékek.Raktár | |RENDELHETŐ | ÖSSZEG(TermékekRaktárban.Raktáron) > 3" ;

12. Építés INDEX BY- a lekérdezési mező indexelésére szolgál. Az indexeléssel rendelkező lekérdezések végrehajtása hosszabb ideig tart, de felgyorsítja az indexelt mezők közötti keresést. Csak virtuális táblákban használható.

Szintaxis: INDEX BY<Поле1, ... , ПолеN>

Használati példa:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Tervezés HOL- lehetővé teszi, hogy feltételt szabjon bármely kiválasztási mezőre. Az eredmény csak a feltételnek megfelelő rekordokat tartalmazza.

Szintaxis: AHOL<Условие1 ОператорЛогСоединения УсловиеN>

Használati példa:

Query.Text = //az összes CompensationRemaining rekord ki van választva<>0 és //AmountForCalcCompRemaining > 100 "SELECT | KompenzációRPORmarad.Különfél, |KártérítésRPORmarad.Gyermek, | KompenzációRPORmarad.CompensationRemains, | Kompenzáció ARPORmaradványok ensationRPRemains | WHERE |KompenzációRPORmarad.Kártérítés Maradék<>0 | És CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Tervezési EREDMÉNYEK... ÁLTALÁNOS- az összegek kiszámítására szolgál; a terv meghatározza azokat a mezőket, amelyek alapján az összegek kiszámításra kerülnek, és az összesítő függvényeket alkalmazza az összesített mezőkre. Ha az ÖSSZESEN konstrukciót követően minden mezőhöz összegeket használ, az adatok csoportosulnak. Van egy opcionális GENERAL konstrukció, ennek használata további csoportosítást is biztosít. Az alábbiakban láthat egy példát a kérés eredményére.

Szintaxis: EREDMÉNYEK<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>ÁLTAL<ОБЩИЕ> <Поле1, ... , ПолеN>

Használati példa:

Request.Text = "SELECT | Számítások. Ügyfélszerződés. Szerződés típusa AS szerződés típusa, | számítások. Partneri megállapodás AS szerződés, | számítások. szerződő fél, | számítások. kölcsönös elszámolási egyenleg összege AS egyenleg | FROM | Felhalmozási nyilvántartás. Kölcsönös Elszámolás szerződő felekkel. Egyenlegek AS számítások | ÖSSZESEN | ÖSSZEG (Egyenleg) | Szoftver | ÁLTALÁNOS, | Szerződés típusa";

Az ábra a kérés teljesítése során kialakult csoportosításokat vázolja, a felső az ÁLTALÁNOS, a második a Partnerszerződés-szerződés típusa mezőre vonatkozik.