Výsledok dotazu v podmienke 1c. Vytváranie dopytov a práca s nimi (pre začiatočníkov)

Teraz zvážime zvyšok.

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

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

Po prvé, reťazce v dopytoch môžu byť zložené. Ak to chcete urobiť, použite operator "+":

Dopyt. Text = „VYBRAŤ
"Riadoc:" "+ Zdroj. Meno
;

Po druhé, môžete vybrať časť riadku. Ak to chcete urobiť, použite funkciu SUBSTRAT. Funkcia je podobná vstavanemu jazyku 1C. Ma tri parametru:

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

Dopyt. text= „VYBERTE
PODKLAD("
"Riadka:" ", 4, 3) AKO je výsledok"; // Vysledok: ok

Funkcia JE NULL

NULL je špeciálny tip údajov pe platforma 1C: Enterprise. Je to zároveň jediná možná hodnota tohto typu. NULL sa môže vyskytnúť v dotazoch v niekoľkých prípadoch: pri spájaní zdrojov dotazov, ak sa zodpovedajúca hodnota nenašla v jednej z tabuliek; pri prístupe k detailom neexistujúceho obiect; 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 Nedefinovane,často je užitočné nahradiť ho nejakým užitočnejším typom údajov. Na to je functional urcená. JE NULL.

Parametrul Ma dva:

  1. Hodnota na kontrolu.
  2. Hodnota, ktorou sa má nahradiť prvý parameter, ak je NULL.

Dopyt. text= „VYBERTE
JE NULL (zdroj. zostáva, 0) AKO zostatok "
; // Ak je v dôsledku požiadavky pole zvyšku = NULL,
// potom bude nahradená 0 ​​​​a môžete s ňou vykonávať matematické operacie

Funkcie REPRESENTÁCIA A ODKAZY NA PODÁVANIE

Tieto funkcie sú navrhnuté tak, aby získali reťazcové reprezentácie rôznych hodnôt. To znamená, že konvertujú odkazy, čísla, booleany atď. na obycajny text. Rozdiel medzi nimi je voi functiona REPRESENTÁCIA skonvertuje všetky typy údajov na text (reťazec) a funkciu ODKAZY NA PODÁVANIE- iba odkazuje a vráti zvyšok hodnôt tak, ako sú, neprevedené.

Dopyt. text= „VYBERTE
REPREZENTUJÚCI (PRAVDA) AKO booleovský,
REPREZENTÁCIA (4) AKO číslo,
TRIMITE (Source.Link) AS Link,
ZASTÚPENIE (DÁTUM ČAS (2016, 07.10.)) AKO Dátum "
;
// Boolean = "Áno", Číslo = "4", Odkaz = "Document Hotovostná faktúra č. ... od ..."
// Data = "10/07/2016 0:00:00"

Dopyt. text= „VYBERTE
PREDSTAVUJE ODKAZ (PRAVDIVÝ) AKO boolovský,
PREDSTAVENIE ODKAZU (4) AKO ČÍSLA,
ODOSLANIE ODKAZU (Sursa.Link) AKO ODKAZ,
REPREZENTÁCIA ODKAZU (DÁTUM ČAS (2016, 07.10.)) AKO Dátum "
;
// Boolean = TRUE, Number = 4, Link = "Document Hotovostná faktúra č. ... z ..."
// Data = 10/07/2016 0:00:00

Funkcie TIP A TYP HODNOTY

Funkcia TIP vrati typ údajov platformy 1C: Enterprise.

Dopyt. text= „VYBERTE
TIP (cislo),
TIP (reťazec),
TIP (Document.Index Comandă numerar)
;

Funkcia TYP HODNOTY vrati typ hodnoty, ktorá mu bola odovzdana.

Dopyt. text= „VYBERTE
TYP (5) AKO cislo,
TIP("
"ciara" ") AS reťazec,
TYPE (Source.Link) AS Referință
Referința Z. Zdroj AS Zdroj"
;
// Număr = Număr, șir = șir, Director = DirectoryRef.Source

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

Dopyt. text= „VYBERTE

OD

KDE
TYPE(ContactInformation.Object) = TYPE(Directory.Contractors)"
;

Funkcia VEZNAM

Funkcia Vyznam umožňuje použiť konfiguračné objekty 1C v požiadavke priamo bez toho, aby ste ju použili.

Doplňme predchádzajúci príklad ešte jednou podmienkou. Potrebujete získať iba telefónne čísla protistrán.

Dopyt. text= „VYBERTE
Informatii de contact.
OD
Informácie Register.Informații de contact AS Kontaktné informácie
KDE
TYPE(Contact Information.Object) = TYPE(Directory.Contractors)
AND ContactInformation.Type = VALUE(Enumeration.Types of ContactInformation.Phone)"
;

Treba si uvedomiť, že túto funkciu je možné použiť len s preddefinovanými hodnotami, t.j. s hodnotami, ktoré su prístupné priamo z konfigurátora. Teda functioneaza VEZNAM nemožno použiť s používateľsky vytvorenými prvkami katalógu, ale môže pracovať s enumeráciami, s preddefinovanými prvkami katalógu, s hodnotami Link gol.

Operator LEGĂTURĂ

Operator LEGĂTURĂ je určený na kontrolu hodnôt prijatých dotazom, či patria ku konkrétnemu typu odkazu. Rovnakú úlohu možno vykonať pomocou funkcií TIP A TYP HODNOTY(ktoré majú širší rozsah a boli discusionvané vyššie).

Napríklad problém výberu kontaktných informácií dodávateľov by sa dal vyriešiť takto:

Dopyt. text= „VYBERTE
Informatii de contact.
OD
Informácie Register.Informații de contact AS Kontaktné informácie
KDE
ContactInformation.Object LINK Directory.Contractors"
;

Operator EXPRESNE

Operator EXPRESNE sa používa v žiadostiach 1C v dvoch prípadoch:

  • keď potrebujete zmeniť vlastnosti primitívneho typu;
  • keď potrebujete vytvoriť pole s jedným typom z poľa s komplexným typom údajov.

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

Operator EXPRESNE umožňuje zmeniť nie typ údajov, ale skôr dodatočné charakteristiky. Napríklad dokáže premeniť šnúrku s neobmedzenou dĺžkou na šnúrku s obmedzenou dĺžkou. Je to užitočné, ak chcete zoskupiť výsledky dotazu podľa takéhoto poľa. Nemôžete zoskupovať podľa polí s neobmedzenou dĺžkou, preto to skonvertujeme na reťazec s dĺžkou 200 znakov.

Dopyt. text= „VYBERTE
MNOŽSTVO (RÔZNY príchod tovaruServices.Link) AKO Odkaz
OD
Document.Prichod tovaruSlužby AS Príjem tovaruSlužby
ÎNCĂRCARE PENTRU
EXPRES (Potvrdenie o servisných produktoch. Commentar AKO RIADOK (200)) "
;

V niektorých prípadoch môže platforma 1C spracovať dotazy na polia so zloženým dátovým typom neoptimálne. Pentru a zvyšuje čas vykonania dotazu, takže môže byť užitočné vopred skonvertovať zložený typ na jeden typ.

Dopyt. text= „VYBERTE
EXPRES (Pohyb tovaruObraty. Objednávka AKO doklad. Objednávka klienta) .Dátum AKO Dátum objednávky,
Pohyb tovaruObraty.Nomenklatura
OD
Akumulačný register.Pohyb tovaru.Obraty AS Pohyb tovaruObraty
KDE
Pohyb goodsObraty. ODKAZ objednávky Document. Objednávka clienta"
;

Operatori VOĽBA A JE NULL

Operator VOĽBA similar cu operatorul AK vo vstavanom jazyku 1C, ale má trochu obmedzenú funkčnosť.

Povedzme, že chceme získať kontaktné informácie z registra Kontaktných informácií a zároveň v samostatnom poli žiadosti uviesť, či patria protistrane alebo jednotlivcovi.

Dopyt. text= „VYBERTE
Informatii de contact. Zastupenie,
VOĽBA
WHEN TYPE(ContactInformation.Object) = TYPE(Address.Dodávatelia)
POTOM"
Protistrana "
INÝ VÝBER
WHEN TYPE(ContactInformation.Object) = TYPE(Directory.Persons)
POTOM"
Jednotlivec"
INAK "Niekto iny" "
KONIEC
KONIEC AKO vlastnik
OD
Informácie Register.Kontaktné informácie AS Kontaktné informácie "
;

Ako môžete vidieť na príklade, v konštrukcii VOĽBA za slovom je vždy podmienka KEDY; hodnota, ktorá sa má použiť POTOM a hodnota, ktorá sa má použiť INAK. Všetky tri konštrukčné prvky VOĽBA su povinne. Vynechať prvok INAK, rovnako ako pri pouzití ​​​​operatora AK v zabudovanom jazyku 1C je to nemožné. Aj operator VOĽBA neexistuje žiadny analógovy design INÁČ AK, ale môžete dať jeden VOĽBA v inom, ako to bolo urobene v našom priklade.

Operator JE NULL používané v stavebnictve VOĽBA na porovnanie poľa dotazu s typom NULL.

Dopyt. text= „VYBERTE
VOĽBA
KEĎ JE hodnota NULL, POTOM 0
ELSE Hodnota
KONIEC"
;

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

V tomto článku s vami chceme všetko prediskutovať 1c funkcie dopytovacieho jazyka, ako aj konstrukcie dotazovacieho jazyka... Aký je rozdiel medzi functionu 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 jasneho 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 function vytvára konštantné pole typu "Dátum".

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

Priklad pouzitia:

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

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

Priklad pouzitia:

Interogare.Text = „SELECT | DIFERENT (DÁTUM ČAS (2015, 4, 17), DÁTUM ČAS (2015, 2, 1), DEŇ) | AS Počet dní”;

3. functioneaza 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.

Sintaxă: VALUE (<Имя>)

Priklad pouzitia:

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á hodnotaration | VALUE (v osoumeration.ba) . Jednotlivec) AS Jednotlivec, // preddefinovaný účet | VALOARE (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.

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

Priklad pouzitia:

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

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

Sintaxă: EXPRES

Priklad pouzitia:

Interogare.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 PREDAKE ODKAZ.REGISTRÁTORA DOKUMENT.FAKTURÁCIA | POTOM VYJADRITE (Predaj.Registrátor AKO doklad.Výdavky) | AS Dokument.Realizácia) | KONIEC | ... | KONIEC AS Číslo | OD | Înregistrare 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 „Registrator“ pre akýkoľvek register. Prečo by sme teda potrebovali špecifikovať typ v registr? 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

Priklad pouzitia:

Query.Text = "SELECT | EXPRESS (Nomenclatură.Comment AS Line (300)) AS Comentariu, | 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.

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

Priklad pouzitia:

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).

Solicitare.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

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

Sintaxă: REPRESENTÁCIA(<НаименованиеПоля>)

Priklad pouzitia:

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. Stavebne REFERINȚĂ- je logický operator na kontrolu typu odkazu. Najčastejšie sa vyskytuje pri kontrole poľa komplexného typu pre konkrétny typ. Sintaxă: LEGĂTURĂ<Имя таблицы>

Priklad pouzitia:

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 Registry Document """ Dr VYBERTE | KEĎ Zostatky. pohybu|OD|Înregistrare akumulácie. Zostatky tovaru v skladoch AS Zostatky";

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

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

Priklad pouzitia:

Solicitare.Text = // získame celú nomenklatúru, ktorej kód leží v rozsahu od 1 to 100 "SELECT | Nomenclatură.Ref | FROM | Director.Nomenclatură AS Nomenclatură | WHERE | Nomenclatură.Cod ÎNTRE 1 ȘI 100";

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

Sintaxă: V(<СписокЗначений>), VHIERARCII (<СписокЗначений>)

Priklad pouzitia:

Solicitare.Text = // vyberte všetky podúčty účtu "SELECT | Auto-susținut.Conectați contul AS | FROM | Plan de conturi. Auto-susținut AS Auto-susținut | UNDE | Auto-susținut. Referință ÎN VALOAREA IERARHIEI (Planul účty. Samonosné.Produs)";

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

Sintaxă: 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ť šspecifikované v enumerácii, napríklad a-z, ktoré označujú ľubovoľný znak zahrnutý v rozsahu vrátane koncov rozsahu.

[^ ...] – ktoré sú uvedené za znakom záporu.

Priklad pouzitia:

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 | PRODUCT ]IKE" Názov Produkty. Názov abur%""";

5. Design POVOLENÝ- tento operator 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).

Sintaxă: Za kľúčovým slovom SELECT sa píše PERMIS

Priklad pouzitia:

Solicitare.Text = "VYBERTE 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.

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

Priklad pouzitia:

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

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

Priklad pouzitia:

Solicitare.Text = // vyberie rôzne záznamy, pre ktoré má čitateľ práva "VYBRAŤ POVOLENÉ INÉ | Dodávatelia. Meno | FROM | Adresár. Dodávatelia AS Dodávatelia";

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

Sintaxă: FIRST<число>

Priklad pouzitia:

Solicitare.Text = // alegeți prvé 4 GTD čísla z adresára "SELECT FIRST 4 | Numere GTD.Link | FROM | Referință.Numere GTD AS numere GTD";

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

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

Priklad pouzitia:

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

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

Sintaxă: TRIEDIŤ PODĽA<НаименованиеПоля>AUTO OBJEDNAVKA

Priklad pouzitia:

Solicitare.Text = „SELECT | Voľné zostatky

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

Sintaxă: ÎNCĂRCARE PENTRU<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Priklad pouzitia:

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. DESIGN MAŤ- umožňuje aplicarevať agregovanú funkciu na podmienku výberu údajov, podobne ako pri konštrukcii WHERE.

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

Priklad pouzitia:

Solicitare.Text = // vyberie zoskupené záznamy, kde je pole na sklade väčšie ako 3 "SELECT | ProduseÎn depozite. MărfuriÎn depozite.Nomenclatură, | MărfuriÎn depozite.Depozit | | AVÂND | SUMĂ (MărfuriÎn depozit;." >3 În depozite;

12. Stavebnictvo 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.

Sintaxă: INDEX PRIN<Поле1, ... , ПолеN>

Priklad pouzitia:

Request.Text = "SELECT | Tz.Name OS, | Tz.Number zložky, | Tz.codeOS, | Tz.Term, | Tz.Type | Date POST .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.

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

Priklad pouzitia:

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

14. VÝSLEDKY STAVBY...- 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 aplicarevané 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.

Sintaxă: VESLEDKY<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>PE<ОБЩИЕ> <Поле1, ... , ПолеN>

Priklad pouzitia:

"

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.

Dotazovací jazyk v 1C 8 je zjednodušeným analógom známeho „štruktúrovaného programovacieho jazyka“ (ako sa často nazyva SQL). Ale v 1C sa používa iba na čítanie údajov, na zmenu údajov sa používa obiectvý dátový model.

Ďalším zaujímavým rozdielom je ruská sintaxă. Aj keď v skutočnosti môžete použiť konštrukcie v anglickom jazyku.

Priklad ziadosti:

VYBRAŤ
bancar. Nazov,
Banky.Úcet
OD
Adresă Banky AS Banky

Táto požiadavka nám umožní vidieť informácie o názve a korešpondenčnom účte všetkých bánk existujúcich v databáze.

Dopytovací jazyk je najjednoduchší a najefektívnejší spôsob získavania informácií. Ako vidíte z vyššie uvedeného príkladu, v dopytovacom jazyku musíte apelovať na názvy metadát (toto je zoznam systémových objektov, ktoré tvoria konfiguráciu, tj adresáre, dokumenty, registre atď.).

Popis konštruktov jazyka dotazovania

Struktura dopytu

Na získanie údajov stačí použiť konštrukcie „SELECT” (výber) a „FROM” (din). Najjednoduchšia požiadavka vyzerá takto:

SELECT * FROM Directories.Nomenklatura

Kde "*" znamená výber všetkých polí tabuľky a Referințe. Nomenclatura je názov tabuľky v databáze.

Pozrime sa na komplexnejší a všeobecnejší príklad:

VYBRAŤ
<ИмяПоля1>AKO<ПредставлениеПоля1>,
Sucet(<ИмяПоля2>) AKO<ПредставлениеПоля2>
OD
<ИмяТаблицы1>AKO<ПредставлениеТаблицы1>
<ТипСоединения>COMPUS<ИмяТаблицы2>AKO<ПредставлениеТаблицы2>
PE<УсловиеСоединениеТаблиц>

KDE
<УсловиеОтбораДанных>

ÎNCĂRCARE PENTRU
<ИмяПоля1>

TRIEDIŤ PODĽA
<ИмяПоля1>

VESLEDKY
<ИмяПоля2>
PE
<ИмяПоля1>

V tomto dotaze vyberieme údaje polí "NázovPole1" a "NázovPole1" z tabuliek "Názov tabuľky1" a "Názov tabuľky", priradíme synonymá k poliam pomocou operátora "AS", spojíme urľa ich podľavľky.

Z prijatých údajov vyberáme len údaje, ktoré spĺňajú podmienku z „UNDE” „Condiția de feedback de date”. un câmp ulterior „FieldName2”.

Posledným krokom je triedenie požiadavky pomocou konštrukcie ORDER BY.

Všeobecne konštrukcie

Uvažujme o všeobecných konštrukciách dopytovacieho jazyka 1C 8.2.

NAJPRVn

Pomocou tohto operatora môžete získať n počet prvých záznamov. Poradie záznamov je určene poradím v požiadavke.

VYBERTE PRIVÝCH 100
bancar. Nazov,
Banky.Kod AS BIK
OD
Adresă Banky AS Banky
TRIEDIŤ PODĽA
bancar.

Žiadosť dostane prvých 100 záznamov z adresára „Banky“

POVOLENE

Tento design je relevantný pre prácu s mechanizmom. Podstatou mechanizmu je obmedziť čítanie (a iné akcie) na používateľov pre konkrétne záznamy v databázovej tabuľke, a nie pre tabuľku ako celok.

Ak sa používateľ pokúsi prečítať záznamy, ktoré sú pre neho nedostupné s požiadavkou, dostane chybové hlásenie. Aby ste tomu zabránili, mali de ste použiť konštrukciu „PERMIS”, to znamená, že požiadavka bude čítať iba záznamy, ktoré sú pre ňu povolené.

VYBERTE POVOLENE
Ďalšie informácie Store.Link
OD
Referinţă. Ukladanie ďalších informácií

RAZNY

Použitie „DIFERENT” vám umožní vylúčiť duplicitné reťazce zo zadávania výsledku dotazu 1C. Duplikácia znamená, že všetky polia požiadavky sa zhodujú.

VYBERTE PRIVÝCH 100
bancar. Nazov,
Banky.Kod AS BIK
OD
Adresă Banky AS Banky

masă goală

Táto konštrukcia sa zriedka používa na kombinovanie dopytov. Pri spájaní môže byť potrebné zadať prázdnu vnorenú tabuľku v jednej z tabuliek. Accesați acest operator „EmptyTable”.

Príklad z pomocníka 1C 8:

VYBERTE referenčné číslo, PRÁZDNÚ TABUĽKU. (Počet, Tov, Množ.) AS Zloženie
Z dokumentu.Vydavky
KOMBINUJ VŠETKO
SELECT Referință.Număr, Compoziție. (Număr rând, articol, cantitate)
FROM Document.Invoice Document.Invoice.Content. *

JE NULL

Veľmi užitočná functionare, ktorá zabráni mnohým chybám. YesNULL () umožňuje nahradiť hodnotu NULL požadovanou hodnotou. Veľmi často sa používa v testoch na prítomnosť hodnoty v spojených tabuľkách, napríklad:

VYBRAŤ
NomenklaturaRef.Ref.
Existuje NULL (Zostatok položky. Zostatok množstva, 0) AS Zostatok množstva
OD


Môžete ho použiť aj inak. Napríklad, ak pre každý riadok nie je známe, v ktorej tabuľke hodnota existuje:

JE NULL(Data facturii.facturii, data facturii.facturii)

AS je operator, ktorý nám umožňuje priradiť názov (sinonim) tabuľke alebo poľu. Príklad použitia sme videli vyššie.

Tieto konštrukcie sú veľmi podobné – umožňujú vám získať reťazcovú reprezentáciu požadovanej hodnoty. Jediný rozdiel je v tom, že REPREZENTARE konvertuje ľubovoľné hodnoty na typ reťazca a REPREZENTARE DE REFERINȚĂ konvertuje iba referenčné hodnoty. REFERENČNÁ REPREZENTÁCIA sa odporúča použiť v dotazoch systému kompozície údajov na optimizáciu, pokiaľ sa, samozrejme, neplánuje použiť pole referenčných údajov vo filtroch.

VYBRAŤ
Zobraziť (odkaz), // riadok, napríklad „Predbežná správa č. 123 din data de 10.10.2015
Reprezentácia (značka vymazania) AKO Text značky vymazania, // reťazec, "Áno" alebo "Nie"
Reprezentare de referință (značka vymazania) AS značka vymazania Boolean // Boolean, adevărat sau fals
OD
Document.Predbežná sprava

EXPRESNE

Express vám umožňuje previesť hodnoty polí na požadovaný typ údajov. Hodnotu môžete previesť buď na primitívny typ, alebo na typ odkazu.

Express pentru tipul de referință Priklad:

EXPRESS(Cost.Subconto1 Table AS Reference.Cost Articles) .ActivityTypeFor Accounting Tax Cost Accounting

Pri primitívnych typoch sa táto function často používa na obmedzenie počtu znakov v poliach neobmedzenej dĺžky (s takýmito poľami nemožno porovnávať). Aby nedošlo k chybe" Neplatne parametre v operacii porovnania. Nemôžete porovnávať polia
neobmedzená dĺžka a polia nekompatibilnych typov
", Je potrebne vyjadriť tieto polia takto:

EXPRES (comentar AS riadok (150))

ROZDIEL

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

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

VYBER Z
Spr
LEFT JOIN
Softver NomenclatureRef.Ref = ImplementedCommentsComponentsRemains.Nomenclature
KDE JE Zostatok TOVARU.Množstvo Zostatok JE NULOVÝ

Typ údajov v dotaze možno definovať nasledovne: pomocou funkcií TYPE () a TYPE () alebo pomocou logického operátora REFERINȚĂ. Tieto dve funkcie sú podobné.

Hodnoty predeterminat

Okrem použitia odovzdaných parametrov v požiadavkách v dotazovacom jazyku 1C môžete použiť preddefinované hodnoty resp. Napríklad enumerácie, preddefinované vyhľadávania, účtovné osnovy atď. Na tento účel sa používa konštrukcia "Hodnota ()".

Priklad pouzitia:

WHERE Nomenclature.NomenclatureType = Hodnota(Directory.NomenclatureType.Product)

UNDE Contrapartide. Typ kontaktných informácií = Hodnota (Vyčíslenie. Kontaktné informácie. Typ. Telefón)

KDE Zostatky na účte. Účet = Hodnota (Plán účtov. Samonosné. ZiskyStrata)

Spojenia

Existujú 4 tipuri de tip: STÂNGA, SPRAVNY, KOMPLETNÉ, VNÚTORNÉ.

PRIPOJTE SA VĽAVO și 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 tabukky, ktoré nebolo možné zviazať podmienkou, sú vyplnené hodnotou NULOVE.

Napriklad:

Vráti celú tabuľku Protistrán 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 NULOVE.

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

ÚPLNE PRIPOJENIE

ÚPLNE 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.

Napriklad:

OD

ÚPLNE PRIPOJENIE
Adresă Banky AS Banky

PE

Dopytovací jazyk vráti obe tabuľky v plnom rozsahu iba vtedy, ak je splnená podmienka spojenia zaznamov. 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.

Napriklad:

OD
Adresar Dodavatelia AS Klienti

VNÚTORNÉ PRIPOJENIE
Adresă Banky AS Banky

PE
Klienti.Názov = Banky.Názov

Táto požiadavka vráti iba riadky, v ktorých majú banka a protistrana rovnaký názov.

zdruzenia

Konštrukt COMBINE și COMBINE ALL kombinuje dva výsledky do jedného. Cravată. výsledok vykonania dvoch sa „zlúči“ do jedného, ​​​​spoločného.

To znamená, že systém funguje rovnako ako zvyčajne, len pre dočasnú tabuľku.

Ako používať INDEX SOFTWARE

Je však potrebné mať na pamäti jeden bod. Vytvorenie indexu na dočasnej tabuľke si tiež vyžaduje čas. Preto je vhodné použiť konštrukciu "" len vtedy, ak je s istotou známe, že v dočasnej tabuľke nebudú 1-2 záznamy. V opačnom prípade môže byť efekt opačný – výkon z indexovaných polí nekompenzuje čas budovania indexu.

VYBRAŤ
Kurzy mienSliceLast.Currency AS mena,
Kurzy mienSliceLast.Curs
Kurzy meny POST
OD
Informácie Register.Currency Rates.SliceLast (& Obdobie,) AS Kurzy mienSliceLast
INDEX PRIN
mena
;
VYBRAŤ
Ceny
Ceny Nomenklatury .Cena,
Nomenclatura cien. mena,
Aspect Kurzy.
OD
Informácie Register.NomenclaturePrices.SliceLast(& Obdobie,
Nomenklatúra B (& nomenklatúra) A typ ceny = & cena typ) AS Ceny
Kurzy mien LEFT UNION AKO kurzy mien
BY RatesNomenclature.Currency = SadzbyCurrency.Currency

Zoskupovanie

Dotazovací jazyk 1C vám umožňuje používať špeciálne agregačné funkcie pri zoskupovaní výsledkov dotazov. Zoskupovanie je možné použiť aj bez agregačných funkcií na „elimináciu“ duplikátov.

K dispozícii su nasledujuce funkcie:

Množstvo, Počet, Počet rôznych, Maximum, Minimum, Primer.

Priklad č. unu:

VYBRAŤ
Predaj tovaru, služieb, tovaru, nomenklatury,
SUMA (Predaj tovaru, služieb, tovaru. Množstvo) AS Množstvo,
SUMA CA Suma
OD

ÎNCĂRCARE PENTRU
Realizácia TovarSlužby Tovar.Nomenklatúra

Požiadavka dostane všetky riadky s tovarom a sumarizuje ich podľa množstva a čiastok v kontexte položky.

Priklad č.2

VYBRAŤ
cod bancar,
MNOŽSTVO (RÔZNE Banky.Odkaz) AKO MnožstvoDvojnásobok
OD
Adresă Banky AS Banky
ÎNCĂRCARE PENTRU
Banca Kodex

Tento príklad zobrazi zoznam BIC v adresári "Bănci" a ukáže, koľko duplikátov existuje pre každú z nich.

vysledky

Súčty sú spôsob, ako získať údaje z hierarchického systému. Pre súhrnné polia možno použiť agregačné funkcie, ako pre zoskupenia.

Jednym z najobľúbenejších spôsobov využitia súčtov v praxi sú dávkové odpisy tovaru.

VYBRAŤ




OD
Document.Realizácia tovaruSlužby.Tovar AS Predaj tovaruSlužbyTovar
TRIEDIŤ PODĽA

VESLEDKY
SUMA (multiplu),
SUMA (suma)
PE
Nomenklatura

Výsledok dotazu bude nasledujúci ierarhicý:

Vseobecne zhrnutie

Ak chcete získať súčty pre všetky "súčty", použite operator "GENERAL".

VYBRAŤ
Realizácia TovarSlužby Tovar Nomenklatúra AS Nomenklatúra,
Realizare TovarSlužby Dokument Tovar.Link AS,
Realizare tovarov, služieb, tovarov Množstvo AS Množstvo,
Predaj tovaruSlužbyTovar.Suma AS Suma
OD
Document.Realizácia tovaruSlužby.Tovar AS Predaj tovaruSlužbyTovar
TRIEDIŤ PODĽA
Implementarea TovarSlužbyTovar.Odkaz.Dátum
VESLEDKY
SUMA (multiplu),
SUMA (suma)
PE
SÚ BEZNE,
Nomenklatura

V dôsledku vykonania dotazu dostaneme nasledujúci výsledok:

V ktorej 1. úroveň zoskupenia je agregácia všetkých požadovaných polí.

Objednavanie

Operator ORDER BY sa používa na zoradenie výsledku dotazu.

Triedenie pre primitívne typy (reťazec, číslo, boolean) sa riadi obvyklými pravidlami. Pre polia referenčných typov dochádza k triedeniu podľa internej reprezentácie odkazu (jedinečný identifikátor), a nie podľa kódu alebo reprezentácie odkazu.

VYBRAŤ

OD
Odkaz.Nomenklatura Nomenklatura AS
TRIEDIŤ PODĽA
nazov

Dotaz zobrazi zoznam názvov katalógu skladových listov v abecednom poradí.

Automaticke objednavanie

Výsledkom dotazu bez zoradenia je chaoticky prezentovaná množina riadkov. Vývojári platformy 1C nezaručujú výstup reťazcov v rovnakom poradí pri vykonávaní rovnakých dopytov.

Ak potrebujete zobraziť záznamy tabuľky v konzistentnom poradí, musíte použiť konštrukciu "Autoorder".

VYBRAŤ
Nomenklatura Názov AS Názov
OD
Odkaz.Nomenklatura Nomenklatura AS
AUTO OBJEDNAVKA

virtual stoly

Virtuálne tabuľky v 1C sú jedinečnou vlastnosťou dopytovacieho jazyka 1C, ktorá sa nenachádza v iných podobných syntaxách. Virtuálna tabuľka je rýchly spôsob, ako získať informácie o profile z registrov.

Každý z typov registrov má svoju vlastnú sadu virtuálnych tabuliek, ktoré sa môžu líšiť v závislosti od nastavenia registra.

  • strih prveho;
  • strih toho druheho.
  • zvysky;
  • revoluţie;
  • zostatky a obraty.
  • pohyby zo subkonta;
  • revoluţie;
  • RPM Dt Kt;
  • zvysky;
  • zostatky a obraty
  • subconto.
  • základňa;
  • grafové údaje;
  • skutočnú dobu platnosti.

Pre vývojára riešení sa údaje preberajú z jednej (virtuálnej) tabuľky, ale v skutočnosti platforma 1C berie z mnohých tabuliek a transformuje ich do požadovanej podoby.

VYBRAŤ
ProduktyV skladochZostatky aobraty.Nomenklatúra,
ProduktyV skladochZostatkyAObrat.MnožstvoPočiatočný zostatok,
TovarV skladochZostatky aObraty.MnožstvoObrat,
Produs v skladochZostatkyAndTurnover.NumberIncome,
TovarV skladochZostatky aObraty.MnožstvoSpotreba,
ProduktyV skladochZostatkyAObraty.MnožstvoKonečný zostatok
OD
Înregistrare akumulácie.TovarVskladoch.Zostatky A Obraty AKO TovarVSkladochZostatky a obraty

Takýto dotaz vám umožňuje rýchlo získať veľké množstvo údajov.

Parametric virtualnej tabukky

Veľmi dôležitým aspectm práce s virtuálnymi tabuľkami je použitie parametrov. Parametre virtuálnej tabukky - Parametru specializat pre výber a ladenie.

Pre takéto tabukky sa považuje za nesprávne použitie výberu v konštrukte „UNDE“. Okrem toho, že požiadavka nebude optimálna, je možné získať nesprávne údaje.

Príklad použitia takýchto parametrii:

Registrul de acumulare.Produse în depozite.RemainsAndTurnovers (& BeginningPeriod, & EndPeriod, Month, Movements And PeriodHranice, Nomenklatúra = & DesiredNomenclature)

Algoritmus virtualnych tabuliek

Napríklad najčastejšie používaná virtuálna tabuľka typu „Reziduuri“ ukladá dáta z dvoch fyzických tabuliek – zostatky a pohyby.

Prin intermediul sistemului de tabukky virtuale, puteți manipula nasledujúce:

  1. Vypočítanú hodnotu dostaneme najbližšie z hľadiska dátumu a rozmerov v tabuľke súčtov.
  2. „Pridať” sumu z tabukky pohybu k sumu z tabukky súčtu.


Takéto jednoduché akcie môžu výrazne zlepšiť výkon systému ako celku.

Pouzívanie nástroja na tvorbu dopytov

Konstruktor dotazov- nástroj zabudovaný do podnikového systému 1C, ktorý výrazne uľahčuje vývoj dopytov do databázy.

Konštruktor dotazu má pomerne jednoduché a intuitívne rozhranie. Pozrime sa však bližšie na používanie konštruktora dotazu.

Konštruktor textu dotazu sa spúšťa kontextovým menu (pravým tlačidlom myši) na správnom mieste v kóde programu.

Popis konstruktora dotazu 1C

Pozrime sa bližšie na každú kartu dizajnu. Výnimkou je záložka Builder, ktorá je témou na inú diskusiu.

Tabukky a polia kariet

Táto karta určuje zdroj údajov a polia, ktoré chcete zobraziť v zostave. V skutočnosti sú tu popísané konštrukcie VYBER .. OD.

Zdrojom môže byť fyzická tabuľka databázy, tabuľka virtuálnych registrov, dočasné tabuľky, vnorené dotazy atď.

V kontextovom menu virtuálnych tabuliek môžete nastaviť parametru virtuálnej tabukky:

Karta Odkazy

Záložka slúži na popis spojení viacerých tabuliek, vytvára konštrukcie so slovom SPOJENIE.

Karta Zoskupovanie

Na tejto karte vám systém umožňuje zoskupiť a zhrnúť požadované polia výsledku tabukky. Popisuje použitie konštrukcií GRUPA CUPĂ, SUMA, MINIM, MEDIE, MAXIM, CANTITATE, NUMĂR DE RŮZNÉ.

Karta Podmienky

Zodpovedá za všetko, čo je v texte požiadavky po konštrukcii WHERE, teda za všetky podmienky kladené na prijaté dáta.

Karta Rozsirene

Tab Okrem toho je plný najrôznejších parametrov, ktoré sú veľmi dôležité. Zoberme si každú z vlastností.

Zoskupovanie Nacítavanie zaznamov:

  • Prvy N- parametru, ktorý vráti do dotazu iba N záznamov (operator FIRST)
  • Ziadne opakovanie- zabezpečuje jedinečnosť prijatých záznamov (operator INÝ)
  • Povoleny- umožňuje vybrať len tie záznamy, ktoré vám systém umožňuje vybrať s prihliadnutím (stavba POVOLENÁ)

Zoskupovanie Tip ziadosti určuje, aký typ dotazu bude: načítanie údajov, vytvorenie dočasnej tabuľky alebo zničenie dočasnej tabukky.

Dole je vlajka Zablokovať prijaté údaje pre neskoršiu zmenu... Umožňuje povoliť možnosť nastavenia zámku dát, ktorý zaisťuje bezpečnosť dát od ich načítania až po zmenu (relevantné len pre Automatický režim zámkov, štruktúra PRE ZMENU).

Fila Odbory / Aliasy

Na tejto záložke návrhára dotazov môžete nastaviť možnosť kombinovať rôzne tabuľky un alias (konštrukcia AKO). Tabukky sú uvedene vľavo. Ak nastavíte vlajky pred stôl, použije sa konštrukcia UNION, inak - UNION ALL (tieto dva spôsoby sa líšia). Pravá strana označuje zhodu polí v rôznych tabuľkách, ak nie je zadaná žiadna zhoda, dotaz vráti hodnotu NULL.

Zalozka Objednavka

Tu určíte poradie triedenia hodnôt (COMANDA DE) - zostupne (COBORĂ) alebo vzostupne (Întoarcere).

Je tu aj zaujímava vlajka - Automaticke objednavanie(v dopyte - AUTO OBJEDNÁVKA). V predvolenom nastavení system 1C zobrazuje údaje v "chaotickom" poradí. Ak nastavíte tento príznak, sistem zoradí údaje podľa interných údajov.

Karta balik dotazov

Na karte návrhára dotazov môžete vytvoriť nové a použiť ju aj ako navigáciu. V texte požiadavky sú pakety oddelené symbolom ";" (čiarkou).

Tlacidlo dotazu v Zostavovači dotazov

V ľavom dolnom rohu konštruktora dotazu sa nachádza tlačidlo Dopyt, pomocou ktorého môžete kedykoľvek zobraziť text dotazu:

V tomto okne môžete vykonať úpravy požiadavky a vykonať ju.


Pomocou konzoly dotazov

Consola de interogări În continuare, vă rugăm să vă conectați la pokúsim popísať, ako používať Query Console și să odkaz na stiahnutie Query Console.

Poďme sa na tento nástroj pozrieť bližšie.

Stiahnite si 1C Query Console

V prvom rade, ak chcete začať používať Query Console, music si ju odniekiaľ stiahnuť. Procesy sa zvyčajne delia na dva typy - riadené formy a pravidelné (alebo sa niekedy nazývajú 8.1 a 8.2 / 8.3).

Tieto dva pohľady som sa pokúsil skombinovať v jednom spracovaní - v požadovanom režime prevádzky sa otvorí požadovaný formulár (v riadenom režime konzola funguje len v hrubom režime).

Popis konzoly dotazu 1C

Začnime sa pozerať na konzolu dotazov s popisom hlavného panela spracovania:

V hlavičke konzoly dotazu môžete vidieť čas vykonania posledného dotazu s presnosťou na milisekundy, čo vám umožňuje porovnávať rôzne konštrukcie z hľadiska výkonu.

Prvá skupina tlačidiel na paneli príkazov je zodpovedná za ukladanie aktuálnych požiadaviek do externého súboru. To je veľmi pohodlné, vždy sa môžete vrátiť k písaniu zložitého dotazu. Alebo si napríklad veďte zoznam typických príkladov určitých konštrukcií.

Vľavo v poli Dopyt môžete vytvárať nové dotazy a ukladať ich do stromovej štruktúry. Druhá skupina tlačidiel je zodpovedná práve za správu zoznamu požiadaviek. S ním môžete vytvárať, kopírovať, mazať, presúvať požiadavku.

  • Vykonaťvysetrovanie- jednoduché prevedenie a dosiahnutie výsledku
  • Spustiť balik- umožňuje zobraziť všetky prechodné požiadavky v dávke žiadostí
  • Zobrazenie dočasnych tabuliek- umožňuje zobraziť výsledky, ktoré sú vrátené dočasnými dotazmi v tabuľke

Poziția parametrică:

Umožňuje nastaviť aktuálne parametru požiadavky.

V okne parametrov dotazu je zaujímave nasledovné:

  • Tlacidlo Ziskajte zo ziadosti automaticky nájde všetky parametre v požiadavke pre pohodlie vývojára.
  • Vlajka Jednotné parametre pre všetky požiadavky- pri inštalácii sa pri jeho spracovaní nevyčistia parametre pri prechode z požiadavky na požiadavku vo všeobecnom zozname požiadaviek.

Nastavte parameter ako zoznam hodnôt je to veľmi jednoduché, keď vyberiete hodnotu parametra, stlačením tlačidla hodnotu vymažete (krížik), systém ponúkne výber typu údajov, kde je potrebné vybrať "Zoznam hodnôt":

Na hornom paneli je tiež tlačidlo na vyvolanie nastavení konzoly dotazov:

Tu môžete zadať voľby pre automatické ukladanie dotazov a voľby pre vykonanie dotazu.

Text dotazu sa zadava do poľa dotazu konzoly. Dá sa to urobiť pomocou jednoduchého testovacieho balíka dotazov alebo zavolaním špeciálneho nástroja – návrhára dotazov.

Konštruktor dotazu 1C 8 sa volá z kontestovej ponuky (pravé tlačidlo myši), fă clic pe butonul de contact:

V tejto ponuke sú aj také užitočné funkcie, ako je vymazanie alebo pridanie znakov prerušenia riadku ("|") do požiadavky alebo získanie kódu požiadavky v takej pohodlnej forme:

Žiadosť = Nová požiadavka;
Solicitare.Text = "
| VYBERTE SI
| Meny.Odkaz
| OD
| Adresár Meny AS Meny";
QueryResult = Query.Run();

V dolnom poli konzoly dotazu sa zobrazi pole výsledku dotazu, pre ktoré bolo toto spracovanie vytvorené:



Konzola dotazov okrem zoznamu môže tiež zobraziť údaje vo forme stromu - pre dopyty obsahujúce súčty.

Optimizare dopytov

Jednym z najdôležitejších bodov pri zvyšovaní produktivity 1C Enterprise 8.3 je optimizareziadosti... Tento bod je tiež veľmi dôležitý, keď absolvovanie certifikacie... Nižšie si povieme o typických príčinách neoptimálnej práce dotazov ao metódach optimizácie.

Výbery vo virtuálnej tabuľke pomocou konštrukcie UNDE

Na detaily virtuálnej tabukky je potrebné aplicarevať filtre len cez parametre BT. V žiadnom prípade nepoužívajte na výber vo virtuálnej tabuľke konštrukciu WHERE, to je z hľadiska optimizácie hrubá chyba. V prípade výberu pomocou WHERE v skutočnosti systém dostane VŠETKY záznamy až potom vyberie potrebné.

SPRAVNY:

VYBRAŤ

OD
Akumulačný register.Vzájomné vyrovnaniaS organizáciami Deponents.Zostatky (
,
Organizacia = & Organizacia
A Jednotlivec = & Jednotlivec) AKO Vzájomné vyrovnaniaS DeponentmiOrganizácie

NIE SPRAVNE:

VYBRAŤ
Vzájomné vyrovnaniaS DeponentmiOrganizácieZostatky.SumaZostatok
OD
Înregistrează-te akumulácie.Vzájomné vyrovnaniaS DeponentmiOrganizáciami.Zostatky (,) AS Vzájomné vyrovnaniaSDeponentmiOrganizáciamiZostatky
KDE
SettlementsWith DeponentsOrganizationsBalances.Organization = & Organizare
A Vzájomné vyrovnaniaS DeponentmiOrganizácieZostatky.Osobné = & Jednotlivci

Získanie hodnoty poľa komplexneho typu cez bodku

Prijímaní údajov zloženého typu v dotaze cez bodku systém spojí ľavým spojením presne toľko tabuliek, koľko je možných typov v poli zloženého typu.

Napríklad pri optimizácii je veľmi nežiaduce odkazovať na pole záznamu registra - registrátora. Registrator má zložený dátový typ vrátane všetkých možných typov dokumentov, ktoré môžu zapisovať údaje do registra.

NIE SPRAVNE:

VYBRAŤ
Record Set.Recorder.Date,
Subor záznamov.Číslo
OD
Akumulácia Register.ProduktyOrganizácie AS SetRecords

To znamená, že takáto požiadavka sa v skutočnosti nebude vzťahovať na jednu tabuľku, ale na 22 databázových tabuliek (tento register má 21 typov registrátora).

SPRAVNY:

VYBRAŤ
VOĽBA
WHEN GoodsOrg.Registrar LINK Document.Realizarea BunurilorSlužby
POTOM VYJADRITE (GoodsOrg.Registrar AS Document.Realization of GoodsServices) .Dátum
KEĎ GoodsOrg.Registrar LINK Document. Prichod tovaruSlužby
POTOM VYJADRITE (GoodsOrg.Registrar AS Document.Sosirea mărfurilorServicii) .Dátum
data KONIEC AKO,
ProduktyOrg.Množstvo
OD
Akumulačný register.ProduktyOrg

Alebo druhá možnosť je doplniť takéto informácie k rekvizitám, napríklad v našom prípade pridať dátum.

SPRAVNY:

VYBRAŤ
ProductsOrganizations.Date,
ProduseOrganizaţii.Număr
OD
Registrul Akumulačný.Organizarea mărfurilor AS Organizarea mărfurilor

Poddotazy v stave spojenia

Pre optimizáciu je neprijateľné používať poddotazy v podmienkach spojenia, výrazne to spomaľuje dopyt. V takýchto prípadoch je vhodné použiť VT. Ak sa chcete pripojiť, musíte použiť iba metadáta a objekty BT, ktoré ste predtým indexovali podľa polí pripojenia.

NIE SPRAVNE:

VYBERTE...

ĽAVÝ KĹB (
VYBERTE Z INFORMÁCIÍ REGISTRÁCIA.Limity
KDE...
NAČÍTAŤ PODĽA...
)PE…

SPRAVNY:

VYBERTE...
limita POST
DIN Registrul de informații.Limite
KDE...
NAČÍTAŤ PODĽA...
INDEX PODĽA…;

VYBERTE...
Z dokumentu.Realizácia tovaruSlužby
LEFT JOIN Limity
PE…;

Spajanie záznamov s virtuálnymi tabukkami

Existujú situácie, keď systém nefunguje optimálne pri spájaní virtuálneho stola s ostatnými. V tomto prípade, aby ste optimizovali výkon dotazu, môžete skúsiť umiestniť virtuálnu tabuľku do dočasnej tabuľky, pričom nezabudnite indexovať spojené polia v dotaze na dočasnú tabuľku. Je to spôsobené tým, že VT sú často obsiahnuté v niekoľkých fyzických tabuľkách DBMS, v dôsledku čoho sa na ich výber vytvorí poddotaz a problém je podobný predchádzajúce mu bodu.

Pouzívanie filtrov na neindexovaných poliach

Jednou z najčastejších chýb pri písaní dotazov je používanie podmienok na neindexovaných poliach, čo je v rozpore pravidlá optimizácie dopytov. DBMS nemôže vykonať dotaz optimálne, ak je v dotaze uložené filtrovanie podľa neindexovaných polí. Ak sa vezme dočasná tabuľka, je potrebné indexovať aj polia spojenia.

Pre každú podmienku musí existovať vhodný index. Vhodný je index, ktorý spĺňa nasledujúce požiadavky:

  1. Index obsahuje všetky polia uvedene v podmienke.
  2. Tieto polia sa nachádzajú na samom začiatku indexu.
  3. Tieto výbery sú v rade, to znamená, že hodnoty, ktoré nie sú zahrnuté v podmienke dotazu, nie sú medzi nimi "zaklinené".

Ak DBMS nenájde správne indexy, potom bude naskenovaná celá tabuľka – to bude mať veľmi negatívny dopad na výkon a môže viesť k dlhodobému zablokovaniu celej sady záznamov.

Pouzitie logickeho OR v podmienkach

To je všetko, tento článok pokryval základy aspectv optimizácie dotazov, ktoré by mal poznať každý odborník na 1C.

Veľmi užitočný bezplatný video kurz o vývoji a optimizácii dopytov, vysoko odporucany nielen pre začiatočníkov!

rușine! 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

Podmienený príkaz v dotaze

Napíšme dotaz, ktorý získa názvy a kalórie jedla:

Teraz k výsledku dotazu pridáme stĺpec, do ktorého zobrazíme obsah tuku v potravinách podľa nasledujúcich pravidiel:

  • ak je obsah kalórií nižší ako 100, potom je obsah tuku nízky;
  • ak je obsah kalorií od 100 to 200, potom je obsah tuku normallny;
  • ak je obsah kalórií vyšší ako 200, potom je obsah tuku vysoký.

Ako sa to dá dosiahnuť, pretože v tabuľke Adresar Jedložiadny stĺpec Tucnota?

Ukázalo sa, že tento stĺpec môžeme pridať sami pomocou podmieneného operatora v dotaze:

Pozrime sa bližšie na text žiadosti:

V sekcii VYBRAŤ existuje zoznam poli výberu: nazov, Calorii Obsah a potom namiesto tretieho poľa je konštrukcia podmieneného operatora, ktorej výsledok prechádza do tretieho stĺpca.

Operator Podmienky spracovavane postupne... Ak sa jeden z nich ukáže ako správny, vráti sa zodpovedajúca hodnota. Ak nie je splnená žiadna z podmienok, vráti sa hodnota zo sekcie. INAK.

Preto nový dotaz vrati tabukku takto:

Ustupiť

Všimnite si, že sa volá tretí stĺpec v tabuľke vrátenej dotazom Polul 1... Tento názov vygeneroval systém automaticky, pretože tretí stĺpec nezodpovedá žiadnemu realnemu poľu v tabuľke. Adresar Jedlo odkiaľ bolo možné tento názov získať.

Ale je v našich silách dať jej to meno. Ak to chcete urobiť, ihneď po popise poľa musíte napísať kľúčové slovo AKO a potom zadajte samotný názov oddelený medzerou. Čítate úvodnú verziu lekcie, nájdete úplné lekcie. Taketo meno sa bude nazyvať alias poľa.

Alias ​​môžete priradiť ľubovoľnému poľu vrátane tých, ktoré už majú názov. Urobme si alias Jedlo pre pol nazov:

Priklad pouzitia funkcie Podrezazec:

SELECTAȚI Nume, SELECTAȚI CÂND SUBȘIR (Nume, 1, 3) = „Ban” THEN „Toto je banán” WHEN SUBSTRING (Meno, 1, 2) = „Chi” APOI „Toto sú chipsy” INAK „Niečo iné” KONIEC FROM Adresár ... Jedlo

Komplexnejšie výsledky podmieneného operator

Výsledkom podmieneného operátora môže byť nielen reťazec, ale aj číslo, dátum, booleovský alebo referenčný typ. Môže to byť buď konštanta vyššie uvedených typov, alebo pole tabuľky. Čítate úvodnú verziu lekcie, nájdete úplné lekcie.

Dovoľte mi uviesť všeobecný príklad, ktorý demonštruje všetky tieto možnosti:

Urobte si test

Test de jos

1. Podmienky zvoleného prevádzkovateľa (alias sa tiež nazýva) sú spracované

2. Podmienený operator sa vždy vráti

3. Ak nie je splnená žiadna z podmienok, operator výberu vráti hodnotu

4. Oddiel ELSE v podmienenom vyhlaseni

5. V podmienkach zvoleneho prevádzkovateľa možno použiť

   

17 pravidiel pre zostavenie optimálnej ŽIADOSTI o údaje databázy 1C

Na vytváranie a vykonávanie dopytov do databázových tabuliek na platforme 1C la používa špeciálny objekt programovacieho jazyka dopyt... Tento objekt je vytvorený volaním konštrukcie Nová ziadosť... Dotaz je užitočný, keď potrebujete získať komplexný súbor údajov, zoskupený a zoradený podľa potreby. Klasickým príkladom použitia dotazu je získanie súhrnu stavu akumulačného registra v určitom časovom bode. Mechanizmus dopytov vám tiež umožňuje ľahko získať informácie v rôznych časových rámcoch.

Telo požiadavky je pokyn, podľa ktorého sa má požiadavka vykonať. Text ziadosti popisuje:

  • tabuľky informačnej databázy používané ako zdroje údajov dopytov;
  • polia tabukky, ktoré je potrebné spracovať v dotaze;
  • pravidla zoskupovania;
  • tryenie výsledkov;
  • atď.

Inštrukcia je vypracovaná v špeciálnom jazyku - dopytovacom jazyku a pozostáva z oddelených častí - sekcií, viet, kľúčových slov, funkcií, aritmetických a logických operátorov, komen ametrov, para.vštántárov

Dotazovací jazyk platformy 1C je veľmi podobný syntaxi iných jazykov SQL, existujú však určité rozdiely. Hlavné výhody vstavaného dotazovacieho jazyka sú: dereferencovanie polí, prítomnosť virtuálnych tabuliek, pohodlná práca so súčtami, netypové polia v dotazoch.

Odporúčania na písanie dotazov do databázy v jazyku dotazov platformy 1C:

1) Telo požiadavky môže obsahovať preddefinované konfiguračné údaje, ako napríklad:

  • enumeračné hodnoty;
  • udaje predeterminat:
  • referenčná literatúra;
  • tabukky charakteristických typov;
  • účtovné osnovy;
  • plany typov výpočtov;
  • prázdne odkazy;
  • hodnoty bodov trasy obchodnych procesov.

Text dotazu môže obsahovať aj hodnoty systémových enumerácií, ktoré možno priradiť poliam v databázových tabuľkách: AccumulationMotionType, AccountType a AccountingMotionType. Dotazy odkazujú na preddefinované configuračné údaje a systémové hodnoty enumerácie pomocou literálu funkčného typu VALUE. Tento literal zlepšuje čitateľnosť dotazu a znižuje počet parametrov dotazu.

Priklad použitia doslovu VEZNAM:

  • Locul KDE = HODNOTA (Adresár.Mestá.Moskva)
  • Locație KDE = HODNOTA (Directory.Cities.EmptyLink)
  • WHERE ItemType = VALUE(Enumeration.Product Types.Service)
  • WHERE Typ pohybu = HODNOTA (Akumulačný typ pohybu. Príchod)
  • WHERE RoutePoint = HODNOTA(BusinessProcess.BusinessProcess1.RoutePoint.Action1

2) Pomocou pokynov AUTO OBJEDNAVKA dokončenie dotazu môže trvať dlho, takže ak triedenie nie je potrebné, je lepšie ho nepoužívať vôbec. Vo väčšine prípadov je najlepšie triediť pomocou pokynov TRIEDIŤ PODĽA.

Automaticke objednávanie funguje podľa nasledujúcich principiuv:

  • Ak bola v žiadosti uvedená doložka ORDER BY, potom každý odkaz na tabuľku v tejto doložke bude nahradený poľami, podľa ktorých je tabuľka štandardne zoradená (pre referenčné knihy odkaz na tabuľku v tejto doložke bude nahradený poľami, podľa ktorých je tabuľka štandardne zoradená Ak sa pole na zoradenie vzťahuje na hierarchický katalóg, použije sa hierarchické triedenie podľa tohto katalógu.
  • Ak požiadavka neobsahuje klauzulu ORDER BY, ale je tam klauzula TOTAL, potom bude výsledok dotazu zoradený podľa polí prítomných v klauzule TOTAL za kľúčovým slovom BY, v rovnakom poradí a vysledok dotazu zoradený podľa polí prítomných v klauzule TOTAL za kľúčovým slovom BY, v rovnakom poradí a ak sa vypoľomētų poľočívalos, požiadavka vyčíčí, vyčípoľaů .
  • Ak požiadavka neobsahuje klauzuly ORDER BY a TOTAL, ale existuje klauzula GRUPP BY, potom sa výsledok dotazu zoradí podľa polí prítomných v klauzule v rovnakom poradí a ak zoskupenie vykonané bolo zoskupenie vykonané polídľa polídľa vykonané, potľa polídľa polídľaľa, polídľaľa.
  • Ak dotaz neobsahuje klauzuly a ORDER BY TOTAL a GROUP BY
  • V prípade, že dotaz obsahuje klauzulu TOTAL, každá úroveň súčtov sa objednáva samostatne.

3) Aby ste sa vyhli opakovanému dotazu na databázu pri zobrazení výsledku dotazu používateľovi ODKAZY NA PODÁVANIE, ktorý vám umožňuje získať reprezentáciu referenčnej hodnoty. Priklad:

Je možné použiť aj navod REPRESENTÁCIA- je určený na získanie reťazcovej reprezentácie hodnoty ľubovoľného typu. Rozdiel medzi týmito pokynmi je v tom, že v prvom prípade, ak je inštrukcii odovzdaný odkaz, výsledkom bude reťazec, v ostatných prípadoch bude výsledkom hodnota odovzdaného parametra. V druhom prípade bude výsledkom inštrukcie vždy reťazec!

4) Ak požiadavka obsahuje pole so zloženým typom, potom je pre takéto polia potrebné previesť hodnoty poľa na určitý typ pomocou inštrukcie EXPRESNE, ktorý odstráni nepotrebné tabuľky z ľavého spojenia so zložitým poľom typu údajov a urýchli vykonávanie dotazu. Priklad:

Existuje register kumulácie zostatkov tovaru, v ktorom má pole Registrator zložený typ. V požiadavke sa volí Dátum a číslo dokladov o preberaní tovaru, pričom pri prístupe k detailu dokladu cez pole

Cod 1C v 8.x SELECT
EXPRES (Zostatok tovaru. Document registrátora AS. Príjem tovaru). Číslo AS Číslo potvrdenky,
EXPRES (Zostatok tovaru. Document registrátora AS. Prevzatie tovaru). Datum AS Datum prijatia
OD
Registrul Akumulačny. Zostatky tovaru AS Zostatky tovaru

Ak sa typová converzia nepovažuje za uskutočniteľnú, potom bude výsledkom typovej konverzie hodnota NULOVE.

5) Nezabudnite na pokyny POVOLENE, čo znamená, že dotaz vyberie len tie záznamy, ku ktorým má aktuálny používateľ práva. Ak toto slovo nie je zadané, tak v prípade, že požiadavka vyberie záznamy, ku ktorým užívateľ nemá práva, požiadavka bude spracovaná s chybou.

6) Ak dotaz používa spojenie a niektoré časti spojenia obsahujú vnorené tabuľky (dokument s tabuľkovou sectionu) a niektoré nie, je potrebné doplniť výberový zoznam o polia – prázdne vnorené tabuľky. To sa vykonáva pomocou kľúčového slova PRAZDNY TABUĽ nasledované aliasmi polí, ktoré budú tvoriť vnorenú tabuľku v zátvorkách. Priklad:

Kod 1C v 8.x // Vyberte polia Číslo a Zloženie
// z virtuálnej tabukky Document.Cheltuială
VYBERTE referenčné číslo, PRÁZDNÚ TABUĽKU. (Počet, Tov, Množ.) AS Zloženie
Z dokumentu.Vydavky
KOMBINUJ VŠETKO
SELECT Referință.Număr, Compoziție. (Număr rând, articol, cantitate)
FROM Document.Invoice Document.Invoice.Content. *

7) Aby ste sa vyhli duplicitným riadkom vo výsledku dotazu, mali by ste použiť inštrukciu RAZNY, pretože toto je jasnejšie a jasnejšie, a pokyny ÎNCĂRCARE PENTRU používa sa na zoskupovanie pomocou agregačných funkcií. Ksati, pri použití agregovaných funkcií, návrh ÎNCĂRCARE PENTRU nemusia byť zadané vôbec a všetky výsledky dotazu budú zoskupené do jedného riadka. Priklad:

Kód 1C v 8.x // Je potrebné zistiť, ktoré protistrany vo všeobecnosti
// tovar bol odoslaný za obdobie.
Vyberte položku Rôzne
Document.FaktúraFaktúra.Dodávateľ

8) Navod ÎNCĂRCARE PENTRU umožňuje prístup k poliam najvyššej úrovne bez zoskupovania výsledkov podľa týchto polí, ak sa na polia vnorenej tabuľky použijú agregačné funkcie. Aj keď je to napísané v pomocníkovi 1C, pri zoskupovaní výsledkov dotazu musia byť v zozname polí výberu uvedené agregované funkcie a okrem agregovaných funkcií je možné v zozname špecifikovať iba polia, výberových poli. Priklad:

Cod 1C v 8.x SELECT
Prijem tovaru a služieb. Tovar (SUM (množstvo), nomenklatúra),
Prijem tovaru a služieb.Odkaz,
Prijem tovaru a služieb.
OD
Document Príjem tovaru a služieb AS Príjem tovaru a služieb
ÎNCĂRCARE PENTRU
Prijem tovaru a služieb. Produs. (Nomenklatura)

9) Navod JE NULL má nahradiť hodnotu NULOVE na inú hodnotu, ale nezabudnite, že druhý parameter sa skonvertuje na typ prvého, ak je typom prvého parametra reťazec alebo číslo.

10) Pri odkaze na hlavnú tabuľku sa môžete odvolávať na údaje podriadenej tabuľky v podmienke. Táto functioneaza sa nazyva dereferencovanie polí potdenej tabukky.

Príklad (vyhľadajte dokumenty obsahujúce konkrétny produkt v tabuľkovej časti):

Výhodou tohto dotazu oproti dotazu na podriadenú tabuľku Chitanță.

11) Zaujímavou verziou operátora B je kontrola výskytu usporiadanej množiny v množine takýchto množín (Pole1, Pole2, ..., PoleN) B (Pole1, Pole2, ..., PoleN).

Cod 1C v 8.x SELECT
Dodavatelia.Odkaz
KDE
(Protistrany.Odkaz, Tovar.Odkaz)
(SELECT Predaj.Kupujúci, Predaj.Produkt
Z Akumulačneho registru. Predaj AS Predaj)
OD
Adresar. Dodavatelia,
Adresar.Produkty

12) Vždy, keď je to možné, používajte virtuálne tabukky dotazov. Pri vytváraní dotazu systém poskytuje množstvo virtuálnych tabuliek ako dátových zdrojov – sú to tabuľky, ktoré sú zároveň výsledkom dotazu, ktorý systém vygeneruje v čase vytváraní dotazu zojópokonvedávania zojópokonvedávania.

Vývojár môže nezávisle získať rovnaké údaje, ktoré mu systém poskytuje ako virtuálne tabuľky, avšak algoritmus na získanie týchto údajov nebude optimizovaný, pretože:

Všetky virtuálne tabuľky sú parametrizované, to znamená, že vývojár má možnosť nastaviť niektoré parametre, ktoré systém použije pri generovaní požiadavky na vytvorenie virtuálnej tabuľky. V závislosti od toho, aké parametre virtuálnej tabuľky špecifikuje vývojár, môže systém vygenerovať RAZNY dotazov na získanie rovnakej virtuálnej tabuľky a budú optimizované z hľadiska odovzdaných parametrov.

Nie vždy má vývojár prístup k údajom, ku ktorým má systém prístup.

13) Voi verzii client-server diela je functioneaza PODKLAD() implementované pomocou funkcie SUBSTRING () zodpovedajúceho príkazu SQL odovzdaného do databázy SQL Server, ktorá vypočítava typ výsledku SUBSTRING () podľa zložitých pravidiel v závislosti od vypočítava typ výsledku funkcie SUBSTRING () Vo väčšine prípadov tieto pravidlá neovplyvňujú vykonanie dotazu, ale sú chvíle, kedy je maximálna dĺžka výsledného reťazca vypočítaná serverom SQL Server relevantná pre vykonanie dotazu. Je dôležité mať na pamäti, že v niektorých kontextoch, kde sa používa function SUBSTRING (), maximálna dĺžka jej výsledku môže byť maximálnou dĺžkou ohraničného reťazca, čo je v SQL Serveri 400. To môže viesť k neočakávanému abnormálnemu ukončeniu vykonávania dotazu:

Poskytovateľ Microsoft OLE DB pre SQL Server: Upozornenie: Procesor dotazov nemohol vytvoriť plán dotazov z optimizátora, pretože celková dĺžka všetkých stĺpcov v klauzule GROUP BY alebo ORDER BY presahuje bajtov.

HRESULT=80040E14 SQLSTATE=42000 nativ=8618

14) Pouzívajte opatrne ALEBO v stavebnictve KDE, keďže použitie podmienkys SAU môže výrazne „zaťažiť“ dopyt. Problemă môžete vyriešiť konštrukciou KOMBINUJ VŠETKO... Priklad:

Cod 1C v 8.x SELECT

OD

KDE
_DemoContractors.Link = Odkaz1
KOMBINUJ VŠETKO
VYBRAŤ
_DemoContractors.NameFull
OD
Adresár._DemoContractors AS _DemoContractors
KDE
_DemoContractors.Link = Odkaz2

15) Podmienka NIE B v stavebnictve KDE zvyšuje čas vykonania požiadavky, keďže ide o druh NIE (ALEBO1 OR2 ... ORn), takže pre veľké stoly skúste použiť LEFT JOIN cu IS NULL... Priklad:

Cod 1C v 8.x SELECT
_DemoContractors.Link
OD
Adresár._DemoContractors AS _DemoContractors
Document LEFT JOINT._DemoBuyerOrder AS _DemoBuyerOrder
Softvér _DemoContractors.Link = _DemoObjednávka Kupujúceho.Dodávateľ
KDE
_DemoOrderBuyer.Contractor JE NULL

16) Pri pouzívani Dočasne stoly musíte indexovať podmienku a spájať polia v týchto tabuľkách, ALE pri použití indexov môže byť dopyt ešte pomalší. Preto je potrebné analyzovať každý dotaz s indexom aj bez neho, zmerať rýchlosť vykonania dotazu a urobiť konečné rozhodnutie.

Ak vložíte údaje do dočasnej tabuľky, ktorá bola pôvodne indexovaná niektorými poľami, dočasná tabuľka už nebude mať index pre tieto polia.

17) Ak nepouzivate Dočasny správca tabukky, potom nie je potrebné explicitne odstrániť dočasnú tabuľku, bude vymazaná po dokončení dávkového dotazu, inak by ste mali dočasnú tabuľku odstrániť jedným z nasledujúcich príkazombov: ZNIČIŤ v požiadavke, metóda volania TempTablesManager.Close().

A okrem video od Evgenyho Gileva: Typické chyby pri písaní žiadostí o 1C:

Nachitava...Nachitava...