1c definujte typ v požiadavke. Ako získať Typ (typ) dokumentu v žiadosti? Typ funkcie a typ hodnoty

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 štúdiu programovania 1C je dotazovací 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 napríklad aj zložitejšie konštrukcie (request in request). Žiadosti v 1C 8 je možné podávať v cyrilike aj latinke.

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

  • vybrať
  • povolenej
  • rôzne
  • vyjadriť
  • prvý
  • pre zmenu
  • význam
  • typ hodnoty (a operátor REFERENCE)
  • výber
  • skupina podľa
  • majúci
  • JE NULL
  • Je tam NULL
  • spojenia - pravé, ľavé, vnútorné, plné.

Rovnako ako drobné triky 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ť na odkaze -.

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

VYBRAŤ

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

Napríklad:

VYBRAŤ
Aktuálny adresár.
OD
Adresár.Nomenklatúra AKO aktuálna

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

Vedľa konštrukcie VYBRAŤ možno nájsť kľúčové slová PRE ZMENU, POVOLENÝ, RÔZNY, NAJPRV

POVOLENÝ- vyberie z tabuľky len záznamy, ku ktorým má aktuálny užívateľ práva.

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

SELECT (CASE)

Tento konštrukt programátori často podceňujú. Príklad jeho použitia:

Aktuálny názov adresára,

KEĎ Aktuálny adresár. Služba POTOM

"servis"

KONIEC AKO druh nomenklatúry

Adresár.Nomenklatúra AKO aktuálna

Príklad vráti textovú hodnotu v poli "Typ nomenklatúry" - "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 vyberajú podľa tohto parametra.

VYBRAŤ
Referenčný názov
OD
CurrentDirectory.Nomenclature AS CurrentDirectory
WHERE CurrentDirectory.Service = TRUE

V príklade vyberáme záznamy, pre ktoré je hodnota premennej „Service“ nastavená na pozíciu „True“. V tomto príklade je možné upustiť od nasledujúcej podmienky:

"KDE je služba"

V podstate vyberáme riadky, pre ktoré je výraz za kľúčovým slovom „True“.

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

WHERE kód = "005215"

Použitím operátora „VALUE ()“ v podmienkach použite volanie preddefinovaných prvkov a enumerácií v požiadavke 1C:

WHERENomenclatureType = Hodnota (Enumeration.NomenclatureTypes.Product)

Časy je možné určiť nasledovne:

KDE Dátum prijatia> DÁTUM ČAS (2012.01.01):

Podmienky sú najčastejšie špecifikované vo forme parametrov odovzdaných do požiadavky:

Získajte bezplatné videonávody 267 1C:

WHERE ItemGroup = & ItemGroup

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 postupovať takto:

WHERE Accumulation Register.Recorder IN (a zoznam dokumentov na výber)

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

KDE Dátum prijatia> DÁTUM ČAS (2012.01.01) A Nomenklatúrna skupina = & Nomenklatúrna skupina A NIE Služba

GROUP BY

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

Napríklad:

VYBRAŤ
Príjem tovaru, služieb, tovaru, tovaru,
SUMA (Príjem tovaruSlužbyTovar. Množstvo) AS Množstvo,
AMOUNT (Prijatie tovaruSlužbyTovar.Suma) AS Suma
OD
Dokument.Príchod tovaruSlužby.Tovar AS Príjem tovaruSlužby

LOAD BY
Príchod tovaru

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 možno použiť ďalšie agregačné funkcie: NUMBER, POČET RÔZNYCH, MAXIMÁLNE, MINIMÁLNE, PRIEMERNÝ.

MAJÚCI

Konštrukcia, ktorá je často prehliadaná, no veľmi dôležitá a užitočná. Umožňuje špecifikovať výber formou súhrnnej funkcie, v konštrukcii to nie je možné KDE.

Príklad použitia, ktorý MÁ v požiadavke 1C:

VYBRAŤ
Príjem tovaru, služieb, tovaru, tovaru,
SUMA (Príjem tovaruSlužbyTovar. Množstvo) AS Množstvo,
AMOUNT (Prijatie tovaruSlužbyTovar.Suma) AS Suma
OD
Dokument.Príchod tovaruSlužby.Tovar AS Príjem tovaruSlužbyTovar

LOAD BY
Príchod tovaru

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

Vyberieme teda počet tovaru, ktorý dostal viac ako 5 kusov.

VÝZNAM()

Napríklad:

KDE Banka = Hodnota (Adresár.Banky.Prázdny odkaz)

WHERENomenclatureType = Hodnota (Directory.NomenclatureTypes.Product)

WHERENomenclatureType = Hodnota (Enumeration.NomenclatureTypes.Service)

TYPE v žiadosti

Typ údajov možno skontrolovať nasledovne: pomocou funkcií TYPE () a TYPE () 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<Тип значения>)

Môže sa použiť na prevod hodnôt reťazca na dátum alebo referenčné hodnoty na údaje reťazca atď.

V praktickom použití sa operátor Express () veľmi často používa na transformáciu polí neobmedzenej dĺžky, pretože polia neobmedzenej dĺžky nemožno vyberať, zoskupovať atď. Ak takéto polia neprevediete, zobrazí sa chyba Nemôžete porovnávať polia neobmedzenej dĺžky a polia nekompatibilných typov.

VYBRAŤ
Kontaktné informácie. Objekt,
EXPRESS (ContactInformation.View AS STRING (150)) AS View
OD
Informácie Register.Contact Information AS Kontaktné informácie

LOAD BY
EXPRESS (Kontaktné informácie. Prezentácia AKO STRING (150)),
Kontaktné informácie.Objekt

ISNULL (ISNULL)

Pomerne užitočná funkcia dopytovacieho jazyka 1C, ktorá kontroluje hodnotu v zázname a či sa rovná NULOVÝ, To vám umožní nahradiť ho vašou hodnotou. Najčastejšie sa používa pri získavaní virtuálnych tabuliek zostatkov a obratov na skrytie NULOVÝ a vložte zrozumiteľnú 0 (nulu).

ISNULL (TaxPremonth.AppliedFSS Benefit, 0)

Takáto funkcia dopytovacieho jazyka 1C IS NULL vráti nulu v prípade absencie hodnoty, čím sa zabráni chybe.

PRIPOJTE SA

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

PRIPOJTE SA VĽAVO a VPRAVO

Spojenia slúžia na prepojenie dvoch tabuliek podľa konkrétnej podmienky. Funkcia v ĽAVÝ KĹB v tom, že vezmeme prvú špecifikovanú tabuľku celú a naviažeme druhú tabuľku podľa podmienky. Polia druhej tabuľky, ktoré nebolo možné zviazať podmienkou, sú vyplnené hodnotou NULOVÝ.

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

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

PRAVÝ SPÁR v jazyku 1C 8.3úplne to isté ĽAVÉ pripojenie, s výnimkou jedného rozdielu: v SPRÁVNE PRIPOJENIE"Hlavná" tabuľka je druhá, nie prvá.

ÚPLNÉ PRIPOJENIE

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

Napríklad:

ÚPLNÉ PRIPOJENIE
Adresár Banky AS Banky

ON

Jazyk dotazu vráti obe tabuľky v plnom rozsahu iba vtedy, ak je splnená podmienka Pripojiť záznamy. Na rozdiel od ľavého/pravého spojenia sa hodnoty NULL môžu objaviť v dvoch poliach.

VNÚTORNÉ PRIPOJENIE

VNÚTORNÉ PRIPOJENIE sa od úplného líši tým, že zobrazuje len tie záznamy, ktoré by mohli byť prepojené zadanou podmienkou.

Napríklad:

OD
Adresár Dodávatelia AS Klienti

VNÚTORNÉ PRIPOJENIE
Adresár Banky AS Banky

ON
Klienti.Názov = Banky.Názov

Táto požiadavka 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!

1C vám umožňuje výrazne zjednodušiť účtovníctvo alebo jednoducho riadiť akúkoľvek organizáciu, či už je to malý obchod alebo veľký podnik. Program je rozsiahly systém správy databáz. Aby ste sa v tom všetkom nezamotali, musíte byť schopní vykonávať rôzne jednoduché úkony a pochopiť podstatu. Ďalej pochopíte, ako skontrolovať typ hodnoty v žiadosti v 1C, ako aj to, čo sú vo všeobecnosti a ako ich rozlíšiť.

Typy hodnôt

1C: Enterprise zahrnula do nových verzií špeciálnu funkciu (platforma 8.2). Pomocou nej môžete k ľubovoľným menám, prvkom dátového systému pridať akékoľvek špeciálne parametre. Toto bolo urobené, aby sa systém ľahšie upravoval a pridával tam nové prvky. Táto funkcia sa nazýva "Typ hodnoty".

V skutočnosti je to jeden zo základných konceptov, ktoré väčšina programovacích jazykov obsahuje. Pomocou neho môžete klasifikovať rôzne údaje. Napríklad: dátumy, čísla, reťazce, odkazy. Toto sú len základné klasifikácie. Môže ich byť oveľa viac. Ak do svojho systému zadáte napríklad informácie o mestách, môžete použiť: pevnina, krajina, región atď.

Vyšetrenie

Pomocou jazyka dotazu môžete skontrolovať konkrétne pole. Presnejšie, jeho funkcie: TYPOVÉ HODNOTY. To znamená, že ak chceme zistiť, aký druh informácií obsahuje bunka, ktorá nás zaujíma, musíme použiť príkaz.

TYPE (hodnota) = TYPE (reťazec)

Vo vyššie uvedenom príklade sme pomocou príkazu určili najjednoduchší pohľad. Ďalší príklad overenia požiadavky:

Dokumentácia

Samotných typov je pomerne veľa, používatelia si vystačia s oboma pôvodnými a zadajú svoje vlastné, aby zlepšili informačnú základňu. Tu sú niektoré z nich.

  • Odkaz na dokument. Slúži na pohodlné ukladanie referencií na rôzne objekty v rámci iných častí systému.
  • DocumentObject - úprava dokumentov.
  • DocumentSetup je opätovné zostavenie objektov z databázy.

Okrem toho existujú špeciálne výrazy, ktoré popisujú akékoľvek údaje:

  • forma;
  • linka;
  • boolean;
  • číslo;
  • dátum;
  • pole;
  • zaškrtávacie políčko;
  • obrázok.

Toto je len niekoľko z nich. Akýkoľvek objekt môže byť iba niečo z tohto zoznamu. Boolean je špeciálny parameter, ktorý má dve hodnoty: true alebo false. Existujú aj špeciálne značky, ktoré vám umožňujú upraviť požiadavku: kedy, kde, ako, inak atď. Nastavujú algoritmus pre správanie programu. 1C sa vyznačuje tým, že tieto slová tu, rovnako ako všetko ostatné, možno zadať v ruštine.

Je dôležité pochopiť, že toto všetko budú začiatočníci a laici vnímať ako čínsku gramotnosť. Aby ste pochopili, o čom hovoríme a efektívne využívali 1C, musíte poznať základy programovania. Vo všeobecnosti bude pomerne ľahké skontrolovať typ v žiadosti v programe 1C v porovnaní s inými akciami.

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

Prihláste sa 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 (TYPE VALUE, TYPE, REFERENCE, IS NULL, EXPRESS)

Pripomeňme si, že každý atribút (vlastnosť, pole) slovníka, dokumentu alebo akéhokoľvek iného aplikovaného objektu má svoj vlastný typ. A tento typ môžeme vidieť v konfigurátore:

V dopytovacom jazyku existuje celá trieda funkcií a operátorov na prácu s typmi atribútov. Poďme sa na ne pozrieť.

Funkcia TYPE VALUE

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

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

Ako vidíte, tieto rekvizity môžu byť jedného z niekoľkých typov: Linka, Adresár.Chute, Referencie.Farby... Tento typ náležitostí sa nazýva COMPOSITE.

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

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

Teda prvky adresára rovnakého typu ( Adresár.Mestá) môžu byť uložené v rovnakých rekvizitách ( Výrazná vlastnosť) hodnoty rôznych typov (String, Farby alebo Príchute).

Môžete sa o tom presvedčiť kliknutím na prvky adresára Mestá v režime 1C: Enterprise. Čítate úvodnú verziu lekcie, nájdete úplné lekcie.

Tu je hodnotou charakteristického znaku položka v adresári Príchute:

Tu s riadkom:

A tu vo všeobecnosti prvok adresára Farby:

Toto nám ponúka zložený dátový typ!

Som zvedavý ako sa bude funkcia správať TYP HODNOTY na rekvizitách Výrazný prvok ktorý má zložený dátový typ:

Toto je už veľmi zaujímavé. Venujme sa každému riadku samostatne.

Charakteristickým typom hodnoty atribútu pre prvok Rusko je NULOVÝ... S týmto typom sa stretávame prvýkrát. Hodnoty tohto typu sa používajú výlučne na identifikáciu chýbajúcej hodnoty pri práci s databázou.

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

Rozlišujúci typ hodnoty atribútu pre Perm je Príchute... Hodnota charakteristického znaku zaradeného do databázy pre mesto Perm je v skutočnosti odkaz na prvok adresára Príchute.

Pre Krasnojarsk je typ funkcie Farby, pretože hodnota vybratá v základe je odkaz na položku katalógu Farby.

Pre Voronež je typ funkcie Linka, pretože hodnota zadaná do databázy je obyčajný reťazec.

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

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

S NEDEFINOVANÝ sa tiež 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 NULOVÝ.

Funkcia TYPE

Vyžaduje iba jeden parameter - názov primitívneho typu ( ČIARA, NUMBER, DÁTUM, BULEVO), 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 zahmlene, však?

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

Predpokladajme, že musíme vybrať všetky položky adresára Mestá s kompozitnými rekvizitami Výrazná vlastnosť má hodnotu typu ČIARA:

Teraz vyberme všetky záznamy, ktoré majú hodnoty rekvizít Výrazná vlastnosť sú odkazy na položky adresára Farby(tabuľka Referencie.Farby):

Ustúpiť

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

Ako môžete urobiť výber takýchto prvkov v dotaze? Na tento účel je k dispozícii špeciálny logický operátor JE NULL(nezamieňať s funkciou JE NULL o ktorých budeme diskutovať nižšie). Čítate úvodnú verziu lekcie, nájdete úplné lekcie.

Tu je príklad použitia:

Dobre. Ale všimli ste si, že tu nie je žiadny prvok Sao Paulo, typ hodnoty rekvizít Výrazná vlastnosť ktorý tiež vydal NULOVÝ... prečo sa to stalo?

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

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

Ale porovnanie s UNDEFINED na definovanie prázdnych (nevyplnených) rekvizít bude fungovať len pre zložené typy.

Mimochodom, logický operátor JE NULL, forma negácie vyzerá takto:

Logický operátor REFERENCIA

Vyberme si napríklad z adresára Mestá iba tie záznamy, ktoré majú hodnotu zloženej premennej Výrazná vlastnosť sú odkazom na položku adresára Príchute:

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

Funkcia ISNULL

Funkcia je určená na nahradenie hodnoty NULOVÝ na inú hodnotu.

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

Ako rekvizity Výrazná vlastnosť pre skupiny adresárov Mestá:

Funkcia JE NULL nám pomôže zobraziť inú hodnotu v prípade, že sa táto hodnota rovná NULOVÝ... Čítate úvodnú verziu lekcie, nájdete úplné lekcie. V tomto prípade to bude riadok "Takýto atribút neexistuje!":

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

Funkcia EXPRESS

Táto funkcia je určená len pre polia, ktoré sú zloženého typu. Výborným príkladom takéhoto poľa je nehnuteľnosť Výrazná vlastnosť v prvkoch 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, Referencie.Farby a Adresár.Chute.

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

Uveďme všetky hodnoty polí Výrazná vlastnosť písať Referencie.Farby:

Výsledkom je, že všetky hodnoty prvkov, ktoré boli typu Referencie.Farby, zostal naplnený a ukázalo sa, že bol donútený na špecifikovaný 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 ( BULEVO, NUMBER, ČIARA, DÁTUM) alebo na referenčný typ. Čítate úvodnú verziu lekcie, nájdete úplné lekcie. Typ, na ktorý sa odlievanie vykonáva, však musí byť uvedený v zozname typov pre toto zložené pole, inak systém vygeneruje chybu.

Urobte si test

Spustiť test

1. Vyberte najsprávnejšie tvrdenie

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

3. Na určenie typu hodnoty atribútu je vhodná funkcia

4. Nevyplnené detaily zloženého typu sú dôležité

43
NULL - chýbajúce hodnoty. Nezamieňať s null! NULL nie je číslo, nerovná sa medzera, prázdny odkaz, Nedefinované. NULL je typotvorná hodnota, t.j. existuje typ NULL a jedna hodnota tohto typu. NULOVÝ ... 26
Na vytváranie a vykonávanie dopytov 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. Požiadavka je pohodlná... 18
Článok obsahuje 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 venovať iba ... 13
LIKE - Operátor na kontrolu reťazca ako vzoru. Analóg LIKE v SQL. Operátor LIKE vám umožňuje porovnať hodnotu výrazu zadaného naľavo od neho s reťazcom šablóny zadaným napravo. Význam výrazu...

V tomto článku s vami chceme všetko prediskutovať 1c funkcie dopytovacieho jazyka, ako aj konštrukcie dotazovacieho jazyka... Aký je rozdiel medzi funkciou a konštrukciou? Funkcia sa volá so zátvorkami a možnými parametrami v nich a konštrukcia sa zapisuje bez zátvoriek. Bezpochyby všetky konštrukcie a funkcie dopytovacieho jazyka 1c aby bol proces získavania údajov flexibilný a multifunkčný. Tieto funkcie a konštrukcie sú použiteľné pre polia dotazu a niektoré sú použiteľné aj v podmienkach.

1c funkcie dopytovacieho jazyka

Od jasného popisu 1c funkcie dopytovacieho jazyka je oveľa menej bežné ako popis štruktúr, rozhodli sme sa začať skúmať presne funkcie. Teraz sa pozrime na každý zvlášť, popíšeme jeho účel, syntax a príklad použitia, takže:

1. Funkcia DÁTUM ČAS- táto funkcia vytvára konštantné pole typu "Dátum".

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

Príklad použitia:

2. Funkcia DIFFERENCE- vráti rozdiel medzi dvoma dátumami v jednej z dimenzií (rok, mesiac, deň, hodina, minúta, sekunda). Meranie sa odovzdáva v parametri.

Syntax: ROZDIEL (<Дата1>, <Дата2>, <Тип>)

Príklad použitia:

Query.Text = "SELECT | ROZDIEL DÁTUMU (DÁTUM ČAS (2015, 4, 17), DÁTUM ČAS (2015, 2, 1), DEŇ) | AS Počet dní";

3. funkcia VALUE- nastaví konštantné pole s preddefinovaným záznamom z databázy, môžete získať aj prázdny odkaz akéhokoľvek typu.

Syntax: VALUE (<Имя>)

Príklad použitia:

Request.Text = "SELECT // preddefinovaný prvok | VALUE (Directory.Currencies.Dollar) AS dolár, // prázdny odkaz | VALUE (Document.Incoming GoodsService.EmptyLink) AS prichádzajúce, // vymenovaná hodnota | VALUE (Enumeration.Právnická osoba . Jednotlivec) AS Jednotlivec, // preddefinovaný účet | VALUE (Plán účtov. Samonosné materiály.) AS Účet_10 ";

4. Funkcia SELECT- pred nami je analógia konštrukcie IF, ktorá sa používa v kóde, iba táto sa používa v požiadavkách 1C.

Syntax: VYBERTE KEDY<Выражение>POTOM<Выражение>INAK<Выражение>KONIEC

Príklad použitia:

Request.Text = // ak je suma vyššia ako 7500, potom by mala byť zľava 300 rubľov, // takže ak sa podmienka spustí, funkcia // vráti sumu - 300 // v opačnom prípade žiadosť jednoducho vrátiť čiastku "SELECT | SELECT | WHEN TCH potvrdenky. Suma > 7500 | POTOM PM potvrdenky. Suma - 300 | INAK PM potvrdenky. Suma | KONIEC AKO Zľavnená suma | OD | Dokument. Príjem tovaruSlužby. Tovar AKO "; Príjem

5. Funkcia EXPRESS- umožňuje vyjadriť konštantné pole konkrétnym typom.

Syntax: EXPRESS (názov poľa ako názov typu)

Príklad použitia:

Query.Text = "VYBERTE RÔZNE | Číslo registr.predaja, | VYBERTE | KEĎ PREPOJTE ODKAZ.REGISTRÁTORA DOKUMENT.FAKTURÁCIA | POTOM VYJADRITE (Predaj.Registrátor AKO doklad.Výdavky) | INAK VYBERTE | KEĎ ODKAZ predajcu.Registrátor. POTOM VYJADRITE ( Predaj.Registrátor AS Dokument.Realizácia) | KONIEC | ... | KONIEC AS Číslo | OD | Register akumulácie.Nákupy AS Nákupy ";

Existuje aj variant použitia funkcie EXPRESS v poliach zmiešaných typov, kde sa nachádzajú? Najjednoduchším príkladom je „Registrátor“ pre akýkoľvek register. Prečo by sme teda potrebovali špecifikovať typ v registri? Zoberme si situáciu, keď z registrátora vyberieme pole "Číslo", z ktorej tabuľky sa číslo vyberie? Správna odpoveď všetkých! Preto, aby náš dotaz fungoval rýchlo, mali by ste zadať explicitný typ pomocou funkcie EXPRESS

Príklad použitia:

Query.Text = "SELECT | EXPRESS (Nomenclature.Comment AS Line (300)) AS Comment, | EXPRESS (Nomenclature.Sum AS Number (15,2)) AS Sum | FROM | Reference.Nomenclature AS Nomenclature";

6. Funkcia ISNULL(alternatívny pravopis IS NULL) - ak je pole typu NULL, nahradí sa druhým parametrom funkcie.

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

Príklad použitia:

Tiež si všimnite, že je vhodné VŽDY nahradiť typ NULL nejakou hodnotou, pretože porovnávanie s typom NULL sa vždy vyhodnotí ako FALSE, aj keď porovnávate NULL s NULL. Hodnoty NULL sa najčastejšie vytvárajú ako výsledok spájania tabuliek (všetky typy spojení okrem interných).

Request.Text = // Vyberte celú položku a zostatok na nej // ak v niektorej položke nie je zostatok, potom bude pole // NULL, ktoré bude nahradené hodnotou 0 SELECT | Nom.Ref, | IS NULL (Položky v skladoch. Zostatok | Z | Adresár. Číselník AKO Číselník | LEFT JOIN Register akumulácie. Produkty v skladoch. Zostáva AKO Produkty v skladoch

7. Funkcia PRESENT- umožňuje získať pohľad na pole požiadavky.

Syntax: REPREZENTÁCIA(<НаименованиеПоля>)

Príklad použitia:

Query.Text = "SELECT | REPREZENTÁCIA (Voľné zostatky. Zostatky. Nomenklatúra) AKO nomenklatúra, | PREZENTÁCIA (Voľné zostatky. Zostatky. Sklad) AKO Sklad, | Voľné zostatky.

Konštrukcie v dopytovacom jazyku 1c

Vyššie sme s vami zvážili 1c funkcie dopytovacieho jazyka, teraz je čas zvážiť konštrukcie v dopytovacom jazyku 1c, nie sú o nič menej dôležité a užitočné, začnime.

1. Stavebné REFERENCIE- je logický operátor na kontrolu typu odkazu. Najčastejšie sa vyskytuje pri kontrole poľa komplexného typu pre konkrétny typ. Syntax: LINK<Имя таблицы>

Príklad použitia:

Požiadavka.Text = // ak je typ hodnoty registrátora Prijímanie dokladu, // potom žiadosť vráti "Príjem tovaru", inak "Predaj tovaru" "VYBERTE | VYBERTE | KEĎ Zostatky. LINK Registrátora Dokument. "" Spotreba "" | KONIEC AKO Druh pohybu | OD | Register akumulácie. Stavy tovaru v skladoch AS Stavy ";

2. Stavba MEDZI- tento operátor skontroluje, či je hodnota v určenom rozsahu.

Syntax: MEDZI<Выражение>A<Выражение>

Príklad použitia:

Request.Text = // získame celú nomenklatúru, ktorej kód leží v rozsahu od 1 do 100 "SELECT | Nomenclature.Ref | FROM | Directory.Nomenclature AS Nomenclature | WHERE | Nomenclature.Code BETWEEN 1 AND 100";

3. Konštrukcia B a B HIERARCHIA- skontrolujte, či je hodnota v prenášanom zozname (polia, tabuľky hodnôt atď. môžu byť odovzdané ako zoznam). Operátor V HIERARCHII umožňuje zobraziť hierarchiu (príklad použitia Plánu účtov).

Syntax: V(<СписокЗначений>), V HIERARCHII (<СписокЗначений>)

Príklad použitia:

Request.Text = // vyberte všetky podúčty účtu "SELECT | Self-supporting.Link AS account | FROM | Plan of accounts. Self-supported AS Self-supported | WHERE | Self-supporting. Reference IN HIERARCHY VALUE (Plan of účty. Samonosné.Tovar)";

4. Stavebné LIKE- táto funkcia nám umožňuje porovnávať reťazec so vzorom reťazca.

Syntax: PÁČI SA MI TO "<ТекстШаблона>"

Možnosti vzoru reťazcov:

% je sekvencia obsahujúca ľubovoľný počet ľubovoľných znakov.

Jedna ľubovoľná postava.

[...] - každý jeden znak alebo postupnosť znakov uvedených v hranatých zátvorkách. Rozsahy môžu byť špecifikované v enumerácii, napríklad a-z, ktoré označujú ľubovoľný znak zahrnutý v rozsahu vrátane koncov rozsahu.

[^ ...] – každý jeden znak alebo postupnosť znakov uvedených v hranatých zátvorkách, okrem tých, ktoré sú uvedené za znakom záporu.

Príklad použitia:

Request.Text = // nájdite celú nomenklatúru, ktorá obsahuje koreň TABUR a začína // buď malým alebo veľkým písmenom t "SELECT | Nomenclature.Ref | FROM | Directory.Nomenclature AS Nomenklatúra | WHERE | Produkty. Názov LIKE" " [TT ] abur% "" ";

5. Dizajn POVOLENÝ- tento operátor umožňuje vybrať z databázy len tie záznamy, do ktorých má volajúci právo čítať. Tieto práva sa konfigurujú na úrovni záznamu (RLS).

Syntax: Za kľúčovým slovom SELECT sa píše ALLOWED

Príklad použitia:

Request.Text = "VYBRAŤ POVOLENÉ | Dodávatelia.Odkaz | FROM | Adresár.Dodávatelia AS Dodávatelia";

6. Konštrukcia RÔZNA- umožňuje vybrať záznamy, v ktorých nie sú žiadne opakované záznamy.

Syntax: Za kľúčovým slovom SELECT sa píše DIFFERENT

Príklad použitia:

Request.Text = // vyberie záznamy, ku ktorým má čitateľ práva "SELECT DIFFERENT | Contractors.Name | FROM | Directory.Contractors AS Contractors";

Konštrukciu RÔZNE je možné použiť aj s AUTORIZOVANÝM operátorom a inými operátormi.

Príklad použitia:

Request.Text = // vyberie rôzne záznamy, pre ktoré má čitateľ práva "VYBRAŤ POVOLENÝCH INÝCH | Dodávateľov. Meno | OD | Adresár.Dodávatelia AS Dodávatelia";

7. Stavba PRVÝ- vyberie počet záznamov zadaný v parametri z výsledku dotazu.

Syntax: FIRST<число>

Príklad použitia:

Request.Text = // vyberte prvé 4 čísla GTE z adresára "SELECT FIRST 4 | GTD numbers.Link | FROM | Reference.GTD numbers AS GTD numbers";

8. DIZAJN NA ZMENU- umožňuje uzamknúť tabuľku, funguje iba v transakciách (relevantné len pre automatické zámky).

Syntax: PRE ZMENU<НаименованиеТаблицы>

Príklad použitia:

Query.Text = "SELECT | Voľné zostatky. Zostatky. Nomenklatúra, | Voľné zostatky. Zostatky. Sklad, | Voľné zostatky. Zostatky. Na sklade

9. Dizajn OBJEDNAŤ BY- zoradí údaje podľa špecifického poľa. Ak je pole odkaz, potom pri nastavovaní príznaku AUTO OBJEDNÁVKA triedenie sa vykoná prezentáciou odkazu, ak je príznak vypnutý, odkazy sú zoradené podľa priority adresy odkazu v pamäti.

Syntax: TRIEDIŤ PODĽA<НаименованиеПоля>AUTO OBJEDNÁVKA

Príklad použitia:

Request.Text = "SELECT | Voľné zostatky

10. Stavba LOAD BY- používa sa na zoskupenie reťazcov dopytov podľa konkrétnych polí. Číselné polia sa musia použiť s akoukoľvek agregovanou funkciou.

Syntax: LOAD BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Príklad použitia:

Request.Text = "SELECT | Produkty v skladoch. Nomenklatúra AS Nomenklatúra, | Produkty v skladoch. Sklad, | SUMA (Produkty v skladoch. Na sklade) AS Sklad | OD | Register akumulácie.

11. DIZAJN MAŤ- umožňuje aplikovať agregovanú funkciu na podmienku výberu údajov, podobne ako pri konštrukcii WHERE.

Syntax: MAJÚCI<агрегатная функция с условием>

Príklad použitia:

Request.Text = // vyberie zoskupené záznamy, kde je pole na sklade väčšie ako 3 "SELECT | ProductsIn Warehouses. GoodsIn Warehouses.Nomenclature, | GoodsIn Warehouses.Warehouse | | HAVING | AMOUNT (TovarsIn Warehouses. In Sklad)> 3 ";

12. Stavebníctvo INDEX BY- používa sa na indexovanie poľa dotazu. Dokončenie indexovaného dotazu trvá dlhšie, no zrýchľuje vyhľadávanie v indexovaných poliach. Dá sa použiť iba na virtuálnych stoloch.

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

Príklad použitia:

Request.Text = "SELECT | Tz.Name OS, | Tz.Number zložky, | Tz.codeOS, | Tz.Term, | Tz.Type | POST Data .KodOS ";

13. Stavba KDE- umožňuje uložiť podmienku na ľubovoľné výberové polia. Do výsledku budú zahrnuté len záznamy, ktoré spĺňajú podmienku.

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

Príklad použitia:

Request.Text = // vyberie všetky záznamy, pre ktoré zostáva kompenzácia<>0 a // SummaDlyaRaschKompOstatok> 100 "SELECT | KompensatsiyaRPOstatki.Kontragent, | KompensatsiyaRPOstatki.Rebenok, | KompensatsiyaRPOstatki.KompensatsiyaOstatok, | KompensatsiyaRPOstatki.SummaDlyaRaschKompOstatok | PUT DannyeTz | Z | RegistrNakopleniya.KompensatsiyaRP.Ostatki KompensatsiyaRPOstatki AKO | KDE | KompensatsiyaRPOstatki.KompensatsiyaOstatok<>0 | A kompenzácia za zostatok. AmountForCalculateCompOut balance> 100 ";

14. VÝSLEDKY STAVBY ... VŠEOBECNE- používa sa na výpočet súčtov, návrh špecifikuje polia, podľa ktorých sa budú počítať súčty a agregačné funkcie aplikované na súčtové polia. Pri použití súčtov pre každé pole podľa konštrukcie TOTAL sú údaje zoskupené. Existuje voliteľný konštrukt GENERAL a jeho použitie tiež poskytuje ďalšie zoskupovanie. Nižšie uvidíte príklad výsledku dotazu.

Syntax: VÝSLEDKY<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>ON<ОБЩИЕ> <Поле1, ... , ПолеN>

Príklad použitia:

Žiadosť.Text = "VYBERTE | Vyrovnania. Zmluva s dodávateľom. Typ dohody AS Typ zmluvy, | Vyrovnania. Zmluva s dodávateľom AS Dohoda, | Vyrovnania. Dodávateľ, | Vyrovnania. Suma vzájomného vyrovnania. | ZAP | VŠEOBECNÉ | Typ dohody " ;

Na obrázku sú zakrúžkované zoskupenia, ktoré sa vytvorili počas vykonávania dotazu, najvyššie patrí do sekcie GENERAL a druhé do poľa ContractorAgreementContractType.