Ôsma verzia platformy 1C ponúka pomerne veľa nových konfiguračných objektov, z ktorých každý má svoje vlastné metódy a vlastnosti, ktoré umožňujú zjednodušiť proces vývoja aplikácií a optimalizovať výkon. Jedným z nich je tvorca zostáv.

Chcel by som hovoriť o tom, čo je tvorca zostáv v 1C, aké funkcie vykonáva a akú aplikáciu našiel v programovaní.

Zostavovač správ v 1C - čo to je?

Toto je konfiguračný objekt, ktorý vám umožňuje zobraziť údaje v tabuľkový dokument alebo diagram. Zdrojom údajov môže byť:

  1. výsledok žiadosti;
  2. Oblasť bunky tabuľkového dokumentu;
  3. Tabuľková časť dokumentu alebo referenčnej knihy;
  4. Súbor záznamov v registri.

Okrem toho má tvorca zostáv v 1C atribút „Text“, do ktorého možno odoslať text žiadosti, ktorého výsledok je potrebné zobraziť.

Obrázok 1 zobrazuje časť kódu, ktorá vám umožňuje použiť „Tvorca zostáv“ na zobrazenie ľubovoľnej tabuľky hodnôt

Zjavným prípadom použitia pre staviteľa je teda navrhovanie správ. Menej zrejmé použitie pre tvorcu je jeho použitie pre používateľa na prispôsobenie rôznych prvkov dotazu (zoskupenia, výbery atď.).

Mimochodom, výsledok vykonania kódu naznačeného na obr. 1 je možné vidieť na obr

Obr.2

Nastavenie Buildera

Zostavovač v určitom zmysle pripomína systém na zostavovanie údajov a možno ho použiť v prípadoch, keď je systém kontroly prístupu z jedného alebo druhého dôvodu nedostupný alebo existuje možnosť, že nebude fungovať správne.

Rovnako ako tvorca ACS obsahuje:

  • Zoskupenia (úrovne hierarchie pri zobrazovaní informácií);
  • Indikátory (hodnoty, pre ktoré je potrebné získať výsledok);
  • Ďalšie vypočítané polia (podrobnosti prvku, výsledky akcií s hodnotami);
  • Filtre (výber);
  • Triedenie.

Nastavenia rozloženia návrhu staviteľa ponúkajú rôzne úrovne a presnosť detailov.

Algoritmus na použitie nástroja Builder

Prirodzene, v závislosti od situácie sa programový kód na použitie nástroja na tvorbu zostáv môže výrazne líšiť. Základný algoritmus použitia sa nemení:

  1. Deklarujeme vytvorenie nového objektu typu ReportBuilder;
  2. V tejto fáze môžete buď použiť Zostavovač dotazov na vytvorenie textu výberu, alebo pomocou objektu DataSourceDescription použiť existujúci výber;
  3. Nastavenia zostavy zostavy možno nastaviť pomocou metódy objektu zostavy FillSettings();
  4. Môžete odmietnuť použitie štandardného rozloženia návrhu vytvoreného metódou automatického generovania definovaním vlastnosti objektu Layout tvorcu;
  5. Ak sa nepoužije DataSourceDescription, v tejto fáze je potrebné vykonať požiadavku, použiť metódu Execute();
  6. Posledným krokom je spustenie metódy Output() výstup môže byť vykonaný v tabuľkovom dokumente alebo v zodpovedajúcom prvku formulára.

Použitie dešifrovania v nástroji Builder

Tretí riadok na obr. 1 obsahuje dekódovanie buniek výsledku vykonávania vytvárača.

Na to sme použili vlastnosť Decryption Filling. Typ tejto vlastnosti je ReportBuilderDecryptionFillType, môže mať jednu z troch hodnôt:

  1. GroupingValues ​​​​– keď je bunka aktivovaná, použije sa v nej uvedená hodnota zoskupenia;
  2. Nevyplňovať – predvolená hodnota, čo znamená, že prepis sa nepoužije pre konečný výsledok;
  3. Prepis – štruktúra prepisu bude naplnená hodnotami všetkých zoskupení pôvodnej vzorky.

Okrem toho má používateľ možnosť nezávisle nastaviť dešifrovanie pomocou metódy ConfigureDecryption(). Časť kódu, ktorá spúšťa túto metódu, je znázornená na obr. 3

Obr.3

Príklad použitia tvorcu na povolenie výberov v zostave

Malá praktická časť. Niekedy nastane situácia, keď je potrebné vytvoriť zostavu s niektorými výbermi. Tento problém môžete vyriešiť pomocou ACS alebo môžete použiť builder:

  1. Začnime vytvorením externého reportu a pridaním atribútu s ľubovoľným názvom a zadaním Report Builder (obr. 4);

Obr.4

  1. Vytvoríme formulár zostavy a umiestnime naň objekt rozhrania TabularField, napíšeme ho ako Selection a priradíme ho k vlastnosti Selection vytvoreného atribútu Obr.

Obr.5

  1. Vytvárame procedúru OnOpen() spojenú s príslušnou udalosťou nášho formulára;

Obr.6

  1. Kód v ňom napísaný musí nutne obsahovať požiadavku na zostavovateľa zostavy, príklad kódu je na obr. 6, na vytvorenie textu zostavovača môžete použiť konštruktor dotazu, v dizajnéri podmienky zostavy builder a jeho dodatočné nastavenia sú uvedené na príslušnej záložke na obr. 7;

Obr.7

  1. Podmienky výberu špecifikované v zložených () zátvorkách v texte požiadavky sa vykonajú iba vtedy, ak je príslušný výber aktivovaný a používaný používateľom;

  2. Postup, ktorý zobrazuje výsledok zostavovača, je znázornený na obr. 8 a je spojený s kliknutím na tlačidlo Generovať;

Obr.8

  1. Ukladáme náš prehľad.

Vzhľad nami vytvoreného reportu a jeho výsledok sú na obr. 9

Obr.9

Samozrejme, v rámci jedného článku je dosť ťažké demonštrovať všetky schopnosti nového objektu, ale zdá sa nám, že je možné si o ňom urobiť predstavu a začať ho používať s prihliadnutím na získané poznatky.

Programovanie 1C pozostáva z viac než len písania programu. 1C je ingot používateľských akcií a údajov, s ktorými pracuje.

Údaje sú uložené v databáze. Dotazy 1C predstavujú spôsob, ako získať údaje z databázy, aby ich bolo možné zobraziť používateľovi vo forme alebo ich spracovať.

Základnou časťou správy je požiadavka 1C. V prípade správy je ACS najväčšou časťou správy.

Posaďte sa. Nadýchnite sa. Ukľudni sa. Teraz vám poviem novinky.

Na programovanie v 1C nestačí poznať programovací jazyk 1C. Musíte tiež poznať jazyk dopytov 1C.

Dotazovací jazyk 1C je úplne samostatný jazyk, ktorý nám umožňuje špecifikovať, aké údaje potrebujeme z databázy získať.

Je tiež bilingválny - to znamená, že môžete písať v ruštine alebo angličtine. Je mimoriadne podobný dotazovaciemu jazyku SQL a tí, ktorí ho poznajú, si môžu oddýchnuť.

Ako sa používajú požiadavky 1C

Keď používateľ spustí 1C v režime Enterprise, v spustenom klientovi nie je ani unca údajov. Preto, keď potrebujete otvoriť adresár, 1C požaduje údaje z databázy, to znamená, že vytvára požiadavku 1C.

1C dotazy sú:

  • Automatické dotazy 1C
    Automaticky generované systémom. Vytvorili ste formulár zoznamu dokumentov. Pridaný stĺpec. To znamená, že keď otvoríte tento formulár v podnikovom režime, zaznamená sa dotaz a vyžiadajú sa údaje pre tento stĺpec.
  • Poloautomatické dotazy 1C
    V jazyku 1C je veľa metód (funkcií), pri prístupe sa vykoná dotaz do databázy. Napríklad.GetObject()
  • Manuálne 1C dotazy (napísané programátorom konkrétne ako dotaz)
    Požiadavku 1C môžete napísať sami v kóde a vykonať ju.

Vytváranie a vykonávanie 1C dotazov

Žiadosť 1C je skutočný text žiadosti v jazyku žiadosti 1C.
Text je možné písať perom. To znamená, vezmite si to a napíšte to (ak tento jazyk ovládate).

Keďže 1C presadzuje tento koncept vizuálne programovanie, kde sa dá veľa alebo takmer všetko urobiť bez písania kódu ručne - existuje špeciálny objekt Query Constructor, ktorý umožňuje nakresliť text dotazu bez znalosti jazyka dotazu. Zázraky sa však nedejú - na to musíte vedieť pracovať s konštruktérom.

Keď je text žiadosti 1C pripravený, je potrebné ju vykonať. Na tento účel je v 1C kóde Request() objekt. Tu je príklad:

Požiadavka = Nová požiadavka();
Query.Text = "VYBRAŤ
| Nomenklatúra.Odkaz
|OD
| Adresár.Nomenklatúra AS Nomenklatúra
| KDE
| Nomenklatúra.Služba";
Select = Query.Run().Select();

Správa(Výber.Odkaz);
EndCycle;

Ako vidíte na príklade, po vykonaní požiadavky 1C nám príde výsledok a musíme ho spracovať. Výsledkom je jeden alebo niekoľko riadkov tabuľky (v špeciálnom formulári).

Výsledok je možné nahrať do bežnej tabuľky:
Fetch = Query.Run().Unload(); //Výsledok – tabuľka hodnôt

Alebo len obiehajte rad za radom.
Select = Query.Run().Select();
Zatiaľ čo Select.Next() Loop
//Urobte niečo s výsledkami dotazu
EndCycle;

Práca s požiadavkami 1C

Základné princípy 1C dotazov

Základné princípy vytvárania požiadavky 1C –
SELECT Zoznam polí FROM Názov tabuľky WHERE Podmienky

Príklad vytvorenia takejto požiadavky 1C:

VYBERTE SI
//zoznam polí na výber
odkaz,
meno,
kód
OD
//názov tabuľky, z ktorej vyberáme údaje
//zoznam tabuliek je zoznam objektov v okne konfigurátora
Adresár.Nomenklatúra
KDE
//označenie výberu
Typ produktu = &Služba //výber podľa externej hodnoty
Alebo Service // atribút „Služba“ typu Boolean, výber podľa hodnoty True
OBJEDNAŤ PODĽA
//Triedenie
Meno

Zoznam tabuliek 1C

Názvy tabuliek môžete vidieť v okne konfigurátora. Stačí namiesto „Adresária“ napísať „Adresár“, napríklad „Adresár.Nomenklatúra“ alebo „Dokument.Predaj tovaru a služieb“ alebo „Register akumulácie.Predaj“.

Pre registre existujú ďalšie tabuľky (virtuálne), ktoré umožňujú získať konečné čísla.

Information Register.RegisterName.Last Slice(&Date) – 1C žiadosť z registra informácií, ak je pravidelná, na konkrétny dátum

Register akumulácie. Meno registra. Zostatky(&Dátum) – žiadosť 1C z evidencie zostatkov k určitému dátumu

Akumulačný register. Meno registra. Obrat (&Dátum začiatku, & Dátum ukončenia) – žiadosť 1C z registra obratu za obdobie od dátumu začiatku do dátumu ukončenia.

Dodatočné zásady

Keď požadujeme zoznam niektorých údajov, fungujú základné princípy. Môžeme si ale vyžiadať aj čísla a žiadosť nám ich môže spočítať (napr. doplniť).

VYBERTE SI
//Quantity(FieldName) – počíta množstvo
//Field AS OtherName – premenuje pole
Množstvo (Odkaz) AS Množstvo zaúčtovaných dokumentov
OD

KDE
Dirigované

Táto žiadosť 1C nám vráti celkový počet dokumentov. Každý dokument má však pole Organizácia. Povedzme, že chceme spočítať počet dokumentov pre každú organizáciu pomocou dotazu 1C.

VYBERTE SI
//len pole dokumentu
organizácia,
//počítajte množstvo
Množstvo(Odkaz) AS MnožstvoPodľa organizácií
OD
Dokument o predaji tovaru a služieb
KDE
Dirigované
GROUP BY

Organizácia

Táto žiadosť 1C nám vráti počet dokumentov pre každú organizáciu (nazývanú aj „podľa organizácie“).

Dovoľte nám dodatočne vypočítať množstvo týchto dokumentov pomocou žiadosti 1C:

VYBERTE SI
//len pole dokumentu
organizácia,
//počítajte množstvo

//počítajte sumu

OD
Dokument o predaji tovaru a služieb
KDE
Dirigované
GROUP BY
//musí sa použiť, ak má zoznam polí funkciu count() a jedno alebo viac polí súčasne - potom je potrebné zoskupiť podľa týchto polí
Organizácia

Táto žiadosť 1C nám tiež vráti množstvo dokumentov.

VYBERTE SI
//len pole dokumentu
organizácia,
//počítajte množstvo
Množstvo (Odkaz) AS Množstvo Podľa organizácií,
//počítajte sumu
Suma(DocumentAmount) AS Suma
OD
Dokument o predaji tovaru a služieb
KDE
Dirigované
GROUP BY
//musí sa použiť, ak má zoznam polí funkciu count() a jedno alebo viac polí súčasne - potom je potrebné zoskupiť podľa týchto polí
Organizácia
PO VÝSLEDKY Všeobecné

Dotazovací jazyk 1C je rozsiahly a zložitý a nebudeme zvažovať všetky jeho možnosti v jednej lekcii - prečítajte si naše ďalšie lekcie.

Stručne o doplnkové funkcie Jazyk dopytu 1C:

  • Spájanie údajov z viacerých tabuliek
  • Vnorené dopyty
  • Dávková žiadosť
  • Vytváranie vlastných virtuálnych tabuliek
  • Dopyt z tabuľky hodnôt
  • Používanie vstavaných funkcií na získavanie a manipuláciu s hodnotami.

1C Query Builder

Aby sa text požiadavky nepísal ručne, existuje návrhár požiadaviek 1C. Stačí kliknúť pravým tlačidlom myši kdekoľvek v module a vybrať 1C Query Designer.

Vyberte požadovanú tabuľku vľavo v návrhárovi dotazov 1C a presuňte ju doprava.

Vyberte požadované polia z tabuľky v návrhárovi dotazov 1C a potiahnite doprava. Ak by ste chceli pole nielen vybrať, ale použiť naň nejakú sčítaciu funkciu, po ťahaní na pole dvakrát kliknite myšou. Na karte Zoskupenie potom budete musieť vybrať (potiahnuť) požadované polia na zoskupenie.

Na karte Podmienky v návrhárovi dotazov 1C môžete rovnakým spôsobom vybrať potrebné výbery (potiahnutím polí, pomocou ktorých vykonáte výber). Uistite sa, že ste vybrali správny stav.

Na karte Objednávka je uvedené triedenie. Na karte Výsledky – sumarizácia výsledkov.

Pomocou návrhára dotazov 1C môžete študovať akýkoľvek existujúci dotaz. Ak to chcete urobiť, kliknite pravým tlačidlom myši na text existujúcej požiadavky a tiež vyberte návrhára dotazov 1C - a požiadavka sa otvorí v návrhárovi dotazov 1C.

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

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

Príklad žiadosti:

VYBERTE SI
Banks.Name,
Banky.Účet
OD
Adresár.Banky AKO 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 efektívnym spôsobom získavanie informácií. Ako je vidieť z vyššie uvedeného príkladu, v dopytovacom jazyku musíte použiť názvy metadát (ide o zoznam systémových objektov, ktoré tvoria konfiguráciu, t. j. adresáre, dokumenty, registre atď.).

Popis konštrukcií dotazovacieho jazyka

Štruktúra dopytu

Na získanie údajov stačí použiť konštrukcie „SELECT“ a „FROM“. Najjednoduchšia požiadavka vyzerá takto:

SELECT * FROM Directories.Nomenklatúra

Kde „*“ znamená výber všetkých polí tabuľky a Directories.Nomenclature – názov tabuľky v databáze.

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

VYBERTE SI
<ИмяПоля1>AKO<ПредставлениеПоля1>,
Suma(<ИмяПоля2>) AKO<ПредставлениеПоля2>
OD
<ИмяТаблицы1>AKO<ПредставлениеТаблицы1>
<ТипСоединения>COMPOUND<ИмяТаблицы2>AKO<ПредставлениеТаблицы2>
BY<УсловиеСоединениеТаблиц>

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

GROUP BY
<ИмяПоля1>

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

VÝSLEDKY
<ИмяПоля2>
BY
<ИмяПоля1>

IN túto žiadosť vyberieme údaje polí „FieldName1“ a „FieldName1“ z tabuliek „TableName1“ a „TableName“, k poliam priradíme synonymá pomocou operátora „HOW“ a spojíme ich pomocou určitej podmienky „TableConnectionCondition“.

Z prijatých údajov vyberieme len údaje, ktoré spĺňajú podmienku z „KDE“ „Podmienka výberu údajov“ Ďalej zoskupíme požiadavku podľa poľa „Názov poľa1“, pričom „Názov poľa2“ vytvoríme súčty „Názov poľa1“ a posledné pole „Názov poľa2“.

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

Všeobecné vzory

Pozrime sa na všeobecné štruktúry dotazovacieho jazyka 1C 8.2.

PRVÝn

Používaním tohto operátora môžete získať n počet prvých záznamov. Poradie záznamov je určené poradím v dotaze.

VYBERTE PRVÝCH 100
Banks.Name,
Banky kód AS BIC
OD
Adresár.Banky AKO Banky
OBJEDNAŤ PODĽA
Banky.Názov

Žiadosť dostane prvých 100 záznamov z adresára „Banky“ zoradených podľa abecedy.

POVOLENÉ

Tento dizajn 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 pomocou dotazu prečítať záznamy, ktoré nemá k dispozícii, zobrazí sa mu chybové hlásenie. Aby ste tomu zabránili, mali by ste použiť konštrukciu „ALLOWED“, t.j. požiadavka bude čítať iba záznamy, ktoré sú jej povolené.

VYBERTE POVOLENÉ
Odkaz na úložisko ďalších informácií
OD
Adresár.Úložisko dodatočných informácií

RÔZNY

Použitie „DIFFERENT“ zabráni duplicitným riadkom v zadávaní výsledku dotazu 1C. Duplikácia znamená, že všetky polia požiadavky sa zhodujú.

VYBERTE PRVÝCH 100
Banks.Name,
Banky kód AS BIC
OD
Adresár.Banky AKO Banky

EmptyTable

Táto konštrukcia sa používa veľmi zriedkavo na kombinovanie dopytov. Pri pripájaní možno budete musieť zadať prázdnu vnorenú tabuľku v jednej z tabuliek. Operátor „EmptyTable“ je na to ako stvorený.

Príklad z pomocníka 1C 8:

VYBERTE číslo odkazu, PRÁZDNÚ TABUĽKU. (Č., Položka, Množstvo) AKO Zloženie
FROM Document.Expense Faktúra
KOMBINUJTE VŠETKO
SELECT Link.Number, Contents. (LineNumber, Product, Quantity)
FROM Document.Invoice Document.Invoice.Composition.*

ISNULL

Veľmi užitočná funkcia, ktorá vám umožní vyhnúť sa mnohým chybám. K dispozícii je NULL () umožňuje nahradiť Hodnota NULL na to, čo je potrebné. Veľmi často sa používa pri kontrole prítomnosti hodnoty v spojených tabuľkách, napríklad:

VYBERTE SI
Odkaz na nomenklatúru,
IsNULL(Položka Remaining.QuantityRemaining,0) AS QuantityRemaining
OD


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

ISNULL(InvoiceReceived.Date, InvoiceIssued.Date)

HOW je operátor, ktorý nám umožňuje priradiť názov (synonymum) tabuľke alebo poli. 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 REPRESENTATION konvertuje ľubovoľné hodnoty na typ reťazca, zatiaľ čo REPRESENTATIONREF konvertuje iba referenčné hodnoty. REFERENČNÁ REPREZENTÁCIA sa odporúča použiť v systémových dotazoch na zloženie údajov na optimalizáciu, pokiaľ sa, samozrejme, neplánuje použiť pole referenčných údajov vo výberoch.

VYBERTE SI
View(Link), //reťazec, napríklad „Predbežná správa č. 123 zo dňa 10.10.2015
View(DeletionMark) AS DeleteMarkText, //string, “Yes” or “No”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //boolean, True or False
OD
Dokument.Predbežná správa

EXPRES

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

Express pre referenčný typ sa používa na obmedzenie požadovaných typov údajov v poliach komplexného typu, ktoré sa často používajú na optimalizáciu výkonu systému. Príklad:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Typ aktivitypreNáklady na daňové účtovníctvo

Pri primitívnych typoch sa táto funkcia často používa na obmedzenie počtu znakov v poliach neobmedzenej dĺžky (s takýmito poľami nemožno porovnávať). Aby sa predišlo chybe" Neplatné parametre v operácii porovnávania. Nemôžete porovnávať polia
neobmedzená dĺžka a polia nekompatibilných typov
", musíte tieto polia vyjadriť takto:

EXPRESS(Komentár AKO riadok(150))

DIFFERENCEDATE

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

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

VYBERTE * OD
Ref
ĽAVÉ PRIPOJENIE RegisterAkumulácia.ProduktyVSkladoch.Zostávajúce AKO Zostávajúce produkty
Softvér NomenclatureRef.Link = Predaný tovarCommitteesRemains.Nomenclature
KDE NIE JE Zostávajúci tovar Počet zostávajúcich je NULL

Typ údajov v dotaze možno určiť nasledovne: pomocou funkcií TYPE() a VALUETYPE() alebo pomocou logický operátor LINK. Tieto dve funkcie sú podobné.

Preddefinované hodnoty

Okrem použitia odovzdaných parametrov v dotazoch v dotazovacom jazyku 1C môžete použiť preddefinované hodnoty alebo . Napríklad prevody, preddefinované adresáre, účtovné osnovy atď. Na tento účel sa používa konštrukcia „Value()“.

Príklad použitia:

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

WHERE Protistrany. Typ kontaktných informácií = hodnota (vyčíslenie. Typy kontaktných informácií. Telefón)

KDE Zostatky na účtoch. Účtovný účet = Hodnota (Účtovná tabuľka. Po účtovaní. ZiskyStrata)

Spojenia

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

ĽAVÉ a PRAVÉ PRIPOJENIE

Spojenia sa používajú na prepojenie dvoch stolov určitú podmienku. Funkcia kedy ĽAVÉ PRIPOJENIE je, že vezmeme prvú špecifikovanú tabuľku celú a podmienečne zviažeme druhú tabuľku. Polia druhej tabuľky, ktoré nebolo možné zviazať podmienkou, sú vyplnené hodnotou NULL.

Napríklad:

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á, pole Banka bude nastavené na NULL.

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

ÚPLNÉ PRIPOJENIE

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

Napríklad:

OD

ÚPLNÉ PRIPOJENIE
Adresár.Banky AKO Banky

BY

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

VNÚTORNÉ SPOJENIE

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

Napríklad:

OD
Adresár Protistrany AS Klienti

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

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

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

združenia

Konštrukty JOIN a JOIN ALL spájajú dva výsledky do jedného. Tie. výsledok vykonania dvoch sa „zlúči“ do jedného, ​​spoločného.

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

Ako používať INDEX BY

Treba však vziať do úvahy jeden bod. Vytvorenie indexu na dočasnej tabuľke si tiež vyžaduje čas. Preto je vhodné použiť konštrukciu „ “ iba vtedy, ak je s istotou známe, že v dočasnej tabuľke bude viac ako 1-2 záznamy. V opačnom prípade môže byť efekt opačný – výkon indexovaných polí nekompenzuje čas potrebný na vytvorenie indexu.

VYBERTE SI
Kurzy mien Najnovší prierez Mena AS Mena,
Kurzy mien Najnovší prierez.
Kurzy mien PUT
OD
Informácie Registrovať. Kurzy mien.Posledný výsek(&obdobie,) AS Kurzy mienPosledný výsek
INDEX BY
mena
;
VYBERTE SI
Ceny Nomenklatúra.Nomenklatúra,
Ceny Nomenklatúry. Cena,
Nomenklatúry cien. Mena,
Kurzy mien. Sadzba
OD
Register informácií.Nomenklatúra Ceny.Posledná časť(&Obdobie,
Nomenklatúra B (&Nomenklatúra) A PriceType = &PriceType) AS Cenová nomenklatúra
LEFT JOIN Menové kurzy AKO kurzy mien
Nomenklatúry cien softvéru.Currency = Kurzy meny.Mena

Zoskupovanie

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

Existujú nasledujúce funkcie:

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

Príklad č. 1:

VYBERTE SI
Nomenklatúra tovaru a služieb.
SUM(Predaj tovaruSlužbyTovar.Množstvo) AS Množstvo,
SUM(Sales of GoodsServicesToods.Amount) AS Suma
OD

GROUP BY
Predaj tovarov a služieb Nomenklatúra tovaru

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

Príklad č.2

VYBERTE SI
Banks.Code,
MNOŽSTVO (ROZNÉ Banky.Odkaz) AKO Počet duplikátov
OD
Adresár.Banky AKO Banky
GROUP BY
Banks.Code

Tento príklad zobrazí zoznam BIC v adresári „Banks“ a ukáže, koľko duplikátov existuje pre každú z nich.

Výsledky

Výsledky predstavujú spôsob, ako získať údaje zo systému s hierarchickou štruktúrou. Súhrnné funkcie možno použiť pre súhrnné polia, rovnako ako pre zoskupenia.

Jedným z najobľúbenejších spôsobov využitia výsledkov v praxi je dávkový odpis tovaru.

VYBERTE SI




OD
Dokument Predaj tovarov a služieb AKO Predaj tovarov a služieb
OBJEDNAŤ PODĽA

VÝSLEDKY
SUM(množstvo),
SUM(Súčet)
BY
Nomenklatúra

Výsledok dotazu bude nasledujúci hierarchický:

Všeobecné výsledky

Ak potrebujete získať súčty pre všetky „súčty“, použite operátor „GENERAL“.

VYBERTE SI
Predaj tovarov a služieb Nomenklatúra AS Nomenklatúra,
Predaj tovaru a služieb Tovar Link AS,
Predaj tovaru a služieb Množstvo AS Množstvo,
Predaj tovaru a služieb Tovar Suma AS Suma
OD
Dokument Predaj tovarov a služieb AKO Predaj tovarov a služieb
OBJEDNAŤ PODĽA
Dátum predaja tovaru a služieb
VÝSLEDKY
SUM(množstvo),
SUM(Súčet)
BY
VŠEOBECNÉ,
Nomenklatúra

V dôsledku vykonania požiadavky dostaneme nasledujúci výsledok:

V ktorej 1 úrovni zoskupenia je agregácia všetkých potrebných polí.

Aranžovanie

Operátor ORDER BY sa používa na triedenie výsledku dotazu.

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

VYBERTE SI

OD
Adresár.Nomenklatúra AS Nomenklatúra
OBJEDNAŤ PODĽA
Meno

Požiadavka zobrazí zoznam mien v adresári nomenklatúry zoradený abecedne.

Automatická objednávka

Výsledkom dotazu bez zoradenia je chaoticky prezentovaná množina riadkov. Vývojári platformy 1C nezaručujú, že pri vykonávaní rovnakých dopytov sa riadky budú zobrazovať v rovnakom poradí.

Ak potrebujete zobraziť záznamy tabuľky v konštantnom poradí, musíte použiť konštrukciu automatického poradia.

VYBERTE SI
Nomenklatúra.Názov AS Názov
OD
Adresár.Nomenklatúra AS Nomenklatúra
AUTOMATICKÁ OBJEDNÁVKA

Virtuálne 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álny stôl - rýchly spôsob získavanie profilových informácií z registrov.

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

  • rez prvého;
  • rez z toho posledného.
  • zvyšky;
  • revolúcie;
  • zostatky a obrat.
  • pohyby zo subkonta;
  • revolúcie;
  • rýchlosť Dt Kt;
  • zvyšky;
  • zostatky a obrat
  • subconto.
  • základňa;
  • grafové údaje;
  • skutočné obdobie platnosti.

Pre vývojára riešenia sú dáta prevzaté z jednej (virtuálnej) tabuľky, ale v skutočnosti platforma 1C berie z mnohých tabuliek a transformuje ich do požadovanej podoby.

VYBERTE SI
Nomenklatúra produktov v skladoch a obrat.
ProductsInWarehousesRemainingAndTurnover.QuantityInitialRemaining,
ProductsInWarehousesRemainsAndTurnover.QuantityObrat,
Tovar v skladochRemainsAndTurnover.QuantityIncoming,
Tovar v skladochRemainsAndTurnover.QuantityConsumption,
ProductsInWarehousesRemainingsAndTurnover.QuantityFinalRemaining
OD
RegisterAccumulations.GoodsInWarehouses.RemainsAndTurnover AS GoodsInWarehousesRemainsAndTurnover

Táto žiadosť vám umožňuje rýchlo sa dostať veľké množstvoúdajov.

Možnosti virtuálneho stola

Veľmi dôležitým aspektom práce s virtuálnymi tabuľkami je použitie parametrov. Parametre virtuálnej tabuľky – špecializované parametre pre výber a konfiguráciu.

Pre takéto tabuľky sa považuje za nesprávne použiť výber v konštrukcii „WHERE“. Okrem toho, že sa dopyt stane neoptimálnym, je možné získať nesprávne údaje.

Príklad použitia týchto parametrov:

Evidencia hromadenia tovaru na skladoch (& Začiatok obdobia, & Koniec obdobia, Mesiac, pohyby a hranice obdobia, Číselník = & Povinná nomenklatúra)

Algoritmus pre virtuálne tabuľky

Napríklad najpoužívanejšia virtuálna tabuľka typu „Remains“ ukladá dáta z dvoch fyzických tabuliek – zostatky a pohyby.

Pri použití virtuálnej tabuľky systém vykonáva nasledujúce manipulácie:

  1. Získame najbližšiu vypočítanú hodnotu z hľadiska dátumu a meraní v tabuľke súčtov.
  2. Sumu z tabuľky pohybu „pripočítame“ k sume z tabuľky súčtov.


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

Používanie nástroja na tvorbu dotazov

Zostavovač dopytov– nástroj zabudovaný do systému 1C Enterprise, ktorý výrazne uľahčuje vývoj databázových dotazov.

Nástroj na tvorbu dotazov má pomerne jednoduché a intuitívne rozhranie. Napriek tomu sa pozrime na používanie konštruktora dotazov podrobnejšie.

Konštruktor textu dotazu sa spúšťa z kontextového menu (pravé tlačidlo myši) na požadovanom mieste v kóde programu.

Popis konštruktora požiadavky 1C

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

Karta Tabuľky a polia

Táto karta určuje zdroj údajov a polia, ktoré je potrebné zobraziť v zostave. V podstate sú tu popísané konštrukcie SELECT.. FROM.

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ť parametre virtuálnej tabuľky:

Karta Pripojenia

Záložka slúži na popis spojení viacerých tabuliek a 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 tabuľky. Popisuje použitie konštrukcií GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUANTITY, NUMBER OF RŮZNÉ.

Karta Podmienky

Zodpovedá za všetko, čo príde v texte požiadavky po konštrukcii WHERE, t.j. za všetky podmienky kladené na prijaté dáta.

Karta Rozšírené

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

Zoskupovanie Výber záznamov:

  • Prvý N– parameter, ktorý do dotazu vráti iba N záznamov (operátor FIRST)
  • Žiadne duplikáty– zabezpečuje jedinečnosť prijatých záznamov (INÝ operátor)
  • Povolené– umožňuje vybrať len tie záznamy, ktoré vám systém umožňuje vybrať s prihliadnutím na (POVOLENÁ konštrukcia)

Zoskupovanie Typ žiadosti určuje, aký typ dotazu bude: získanie údajov, vytvorenie dočasnej tabuľky alebo zničenie dočasnej tabuľky.

Dole je vlajka Zamknúť prijaté údaje pre neskoršie úpravy. Umožňuje povoliť možnosť nastavenia uzamknutia údajov, ktoré zaisťuje bezpečnosť údajov od ich načítania až po ich zmenu (relevantné len pre Automatický režim zámky, dizajn NA ZMENU).

Karta Pripojenia/Aliasy

Táto karta návrhára dotazov nastavuje schopnosť spájať rôzne tabuľky a aliasy (konštrukcia AKO). Tabuľky sú uvedené na ľavej strane. Ak nastavíte príznaky oproti tabuľke, použije sa konštrukcia UNITE, inak - UNITE ALL (rozdiely medzi týmito dvoma metódami). Na pravej strane je uvedená korešpondencia polí v rôznych tabuľkách, ak korešpondencia nie je špecifikovaná, dotaz vráti hodnotu NULL.

Záložka Objednávka

Toto určuje poradie, v ktorom sú hodnoty zoradené (ORDER BY) - zostupne (DESC) alebo vzostupne (ASC).

Existuje aj zaujímavá vlajka - Automatická objednávka(v dopyte - AUTO OBJEDNÁVKA). V predvolenom nastavení systém 1C zobrazuje údaje v „chaotickom“ poradí. Ak nastavíte tento príznak, systém zoradí údaje podľa interných údajov.

Karta Dávka dopytov

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

Tlačidlo „Dopyt“ v návrhárovi dotazov

V ľavom dolnom rohu návrhára požiadavky sa nachádza tlačidlo Žiadosť, pomocou ktorého si môžete kedykoľvek zobraziť text požiadavky:

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


Pomocou konzoly dotazov

Query Console je jednoduchá a pohodlný spôsob na ladenie zložitých dotazov a rýchle získavanie informácií. V tomto článku sa pokúsim opísať, ako používať Query Console a poskytnúť odkaz na stiahnutie Query Console.

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

Stiahnite si konzolu dotazov 1C

Ak chcete začať pracovať s konzolou dotazov, musíte si ju odniekiaľ stiahnuť. Liečba sa zvyčajne delí na dva typy - kontrolované formuláre a pravidelné (alebo niekedy nazývané 8.1 a 8.2/8.3).

Pokúsil som sa spojiť tieto dva pohľady do jedného spracovania - požadovaný formulár sa otvorí v požadovanom prevádzkovom režime (v riadenom režime konzola funguje iba 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 dotazov môžete vidieť čas vykonania posledného dotazu s presnosťou na milisekundy, čo vám umožňuje porovnávať rôzne návrhy z hľadiska výkonu.

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

Vľavo v poli „Žiadosť“ môžete vytvárať nové požiadavky a ukladať ich do stromovej štruktúry. Druhá skupina tlačidiel je zodpovedná za správu zoznamu požiadaviek. Pomocou neho môžete vytvoriť, kopírovať, mazať, presúvať požiadavku.

  • Vykonaťžiadosť– jednoduché prevedenie a výsledky
  • Spustite balík– umožňuje zobraziť všetky prechodné dotazy v dávke dotazov
  • Zobrazenie dočasných tabuliek– umožňuje zobraziť výsledky, ktoré dočasné dotazy vracajú v tabuľke

Parametre požiadavky:

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

V okne parametrov dotazu je zaujímavé nasledovné:

  • Tlačidlo Získajte zo žiadosti automaticky nájde všetky parametre v požiadavke pre pohodlie vývojára.
  • Vlajka Spoločné parametre pre všetky požiadavky– po inštalácii sa pri jeho spracovaní nevymažú parametre pri prechode z požiadavky na požiadavku vo všeobecnom zozname požiadaviek.

Nastavte parameter so zoznamom hodnôt Je to veľmi jednoduché, stačí pri výbere hodnoty parametra kliknúť na tlačidlo vymazať hodnotu (krížik), systém vás vyzve na výber typu údajov, kde je potrebné vybrať „Zoznam hodnôt“:

Tiež v horný panel Existuje tlačidlo na vyvolanie nastavení konzoly dotazov:

Tu môžete zadať parametre pre automatické ukladanie dotazov a parametre vykonávania dotazu.

Text požiadavky sa zadá do poľa žiadosti konzoly. Dá sa to urobiť jednoduchým zadaním testu dotazu alebo zavolaním špeciálneho nástroja – návrhára dotazov.

Konštruktor požiadavky 1C 8 sa volá z kontextové menu (pravé tlačidlo myš) po kliknutí na vstupné pole:

Aj v tomto menu sú také užitočné funkcie, ako je vymazanie alebo pridanie zlomov riadkov („|“) k požiadavke alebo získanie kódu požiadavky v tomto vhodnom formulári:

Žiadosť = Nová požiadavka;
Request.Text = ”
|VYBERTE
| Meny.Odkaz
|OD
| Adresár.Currencies AS Meny”;
RequestResult = Request.Execute();

Spodné pole konzoly dotazu zobrazuje pole výsledku dotazu, preto bolo vytvorené toto spracovanie:



Taktiež konzola dotazov okrem zoznamu dokáže zobraziť údaje vo forme stromu – pre dotazy obsahujúce súčty.

Optimalizácia dopytu

Jedným z najdôležitejších bodov pri zvyšovaní produktivity 1C enterprise 8.3 je optimalizáciažiadosti. Tento bod je tiež veľmi dôležitý, keď absolvovanie certifikácie. Nižšie si povieme o typických príčinách neoptimálneho výkonu dotazov ao optimalizačných metódach.

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

Na detaily virtuálnej tabuľky je potrebné aplikovať filtre len cez parametre VT. Za žiadnych okolností by ste nemali používať konštrukciu WHERE na výber vo virtuálnej tabuľke, čo je z hľadiska optimalizácie hrubá chyba. V prípade výberu pomocou WHERE v skutočnosti systém dostane VŠETKY záznamy a až potom vyberie potrebné.

SPRÁVNE:

VYBERTE SI

OD
Register kumulácií s účastníkmi zostatkov (.
,
Organizácia = &Organizácia
AND Jednotlivec = &Jednotlivec) AKO Vzájomné vyrovnania s účastníkmi organizácií zostatky

ZLE:

VYBERTE SI
Vzájomné vyrovnanie zostatkov s účastníkmi organizácií
OD
Register kumulácií s účastníkmi organizácií Zostatky (,) AKO Vzájomné vyrovnania s účastníkmi organizácií Zostatky
KDE
Vzájomné vyrovnania s účastníkmi organizácií Zostatky Organizácia = & Organizácia
AND Vzájomné vyrovnania s účastníkmi organizácií Zostatky Jednotlivec = &Jednotlivec

Získanie hodnoty poľa komplexného typu pomocou bodky

Pri prijímaní údajov komplexné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 komplexného typu.

Napríklad pre optimalizáciu je veľmi nežiaduce pristupovať do poľa záznam registra – registrátor. Registrátor má zložený typ údajov, medzi ktorými sú všetky možné typy dokumentov, ktoré môžu zapisovať údaje do registra.

ZLE:

VYBERTE SI
Record Set.Recorder.Date,
RecordSet.Quantity
OD
RegisterAccumulations.ProductsOrganizations AS SetRecords

To znamená, že v skutočnosti takýto dopyt nepristúpi k jednej tabuľke, ale k 22 databázovým tabuľkám (tento register má 21 typov registrátora).

VPRAVO:

VYBERTE SI
VOĽBA
KEĎ ProductsOrg.Registrar LINK Document.Predaj produktov a služieb
POTOM VYJADRITE(ProduktyOrg.Registrátor AS doklad.Predaj tovaruSlužby).Dátum
KEĎ GoodsOrg.Registrar LINK Document.Prijatie tovaruSlužby
POTOM VYJADRITE(GoodsOrg.Registrar AS Document.Receipt of GoodsServices).Dátum
KONIEC AKO DÁTUM,
ProduktyOrg.Množstvo
OD
RegisterAccumulations.ProductsOrganizations AS ProductsOrganization

Alebo druhá možnosť je doplniť takéto informácie do detailov, napríklad v našom prípade pridanie dátumu.

VPRAVO:

VYBERTE SI
ProductsOrganizations.Date,
ProduktyOrganizácie.Množstvo
OD
Register tovarov organizácií AS tovary organizácií

Poddotazy v stave spojenia

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

ZLE:

VYBERTE si…

PRIPOJTE SA VĽAVO (
SELECT FROM RegisterInformation.Limits
KDE…
SKUPINA PODĽA...
) OD…

VPRAVO:

VYBERTE si…
Limity PUT
FROM Information Register.Limits
KDE…
SKUPINA PODĽA...
INDEX PODĽA...;

VYBERTE si…
Z dokladu o predaji tovaru a služieb
LEFT JOIN Limity
BY…;

Spájanie záznamov s virtuálnymi tabuľkami

Sú situácie, keď pri pripájaní virtuálneho stola k iným systém nefunguje optimálne. V tomto prípade, aby ste optimalizovali 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é skutočnosťou, že VT sú často obsiahnuté v niekoľkých fyzických tabuľkách DBMS, v dôsledku čoho sa na ich výber zostaví poddotaz a problém je podobný predchádzajúcemu bodu.

Používanie výberov založených 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á optimalizácie dopytov. DBMS nemôže vykonať dotaz optimálne, ak dotaz obsahuje výber neindexovateľných polí. Ak vezmete dočasnú tabuľku, musíte tiež indexovať polia pripojenia.

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

  1. Index obsahuje všetky polia uvedené v podmienke.
  2. Tieto polia sú na samom začiatku indexu.
  3. Tieto výbery idú za sebou, to znamená, že hodnoty, ktoré nie sú zahrnuté v podmienke dotazu, nie sú medzi nimi „zaklinené“.

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

Použitie logického OR v podmienkach

To je všetko, tento článok pokrýval základné aspekty optimalizácie dotazov, ktoré by mal poznať každý odborník na 1C.

Veľmi užitočný bezplatný video kurz o vývoji a optimalizácii dopytov, Vrelo odporucam pre začiatočníkov a viac!

Pri vývoji zostáv je niekedy potrebné zobraziť zostavu, pre ktorú nie je možné získať údaje pomocou jazyka dotazov. Táto situácia môže nastať napríklad vtedy, ak sa na výpočet údajov použije nejaký zložitý algoritmus, alebo ak sa údaje na výstup zostavy nezískajú z informačnú základňu, a napríklad od externý súbor. Zostavovač zostavy poskytuje možnosť zobraziť zostavu z ľubovoľného zdroja údajov.
Nasledujúce údaje možno použiť ako zdroj údajov pre výstup zostavy:

  • Tabuľka hodnôt,
  • Žiadosť o výsledok,
  • Oblasť buniek tabuľkového dokumentu,
  • tabuľková časť,
  • Sada záznamov registra akumulácie,
  • Information RegisterRecordSet,
  • Účtovný register Súbor záznamov,
  • Výpočet RegisterRecordSet.
Na to, aby tvorca zostáv zobrazil zostavu pre ľubovoľný zdroj údajov, stačí nastaviť popis zdroja údajov vo vlastnosti DataSource builder. Vlastnosť nástroja na tvorbu zostáv DataSource môže obsahovať hodnotu typu DataSourceDescription. Objekt DataSourceDescription obsahuje samotný zdroj údajov a obsahuje aj popis stĺpcov zdroja údajov. Každý popis stĺpca zdroja údajov obsahuje:
  • Názov – obsahuje názov stĺpca v zdroji údajov,
  • DataPath – obsahuje popis závislosti stĺpcov na sebe. Stĺpec, ktorého dátová cesta je získaná cez bodku z dátovej cesty iného poľa, sa považuje za atribút druhého stĺpca. Ak pole obsahuje slovo Reprezentácia oddelené bodkou, potom sa toto pole považuje za reprezentáciu pre stĺpec z cesty k údajom, ktorého reprezentácia sa získava. Príklady. Ak stĺpec "Nomenklatúra" obsahuje cestu k údajom "Nomenklatúra" a stĺpec "Kód" má cestu k údajom "Nomenklatúra.Kód", potom sa tento stĺpec bude považovať za atribút stĺpca "Nomenklatúra". Stĺpec s cestou k údaju "Nomenklatúra.Zastúpenie" sa bude považovať za reprezentáciu stĺpca "Číselník",
  • Pole – znamenie, že tento stĺpec možno použiť ako pole prehľadu,
  • Objednávka – označenie, že pre daný stĺpec je možné objednávanie,
  • Výber je znakom toho, že je možné uložiť výber na daný stĺpec,
  • Dimenzia – označenie, že tento stĺpec možno použiť ako zoskupenie prehľadov,
  • Celkom - riadok obsahujúci výraz pre výpočet súčtu. Pre tvorcu zostáv zodpovedá výraz tohto riadku výrazu na výpočet súčtu použitého v jazyku dopytu,
Keď nastavíte zdroj údajov na objekt DataSourceDescription, popisy stĺpcov sa vytvoria a vyplnia automaticky.

Objekt DataSourceDescription má konštruktor, ktorého parametrom je možné odovzdať zdroj údajov, pre ktorý sa popis vytvára, pričom vlastnosť DataSource bude naplnená odovzdaným zdrojom údajov, popisy stĺpcov budú vyplnené informáciami o stĺpcoch z zdroj údajov.

Príklad nastavenia zdroja údajov pre nástroj na tvorbu zostáv:

ReportBuilder.DataSource = NewDataSourceDescription(ValueTableResult);

Ďalšia práca s tvorcom zostáv sa nelíši od práce s tvorcom zostáv v režime dotazu: tvorca zostáv poskytuje plnú funkčnosť, s výnimkou zobrazenia hierarchických súčtov. Okrem toho pri práci s vlastným zdrojom údajov nemôžete získať dotaz od tvorcu zostáv, ktorý sa použije na získanie údajov z informačnej databázy.

Práca tvorcu dotazov s vlastným zdrojom údajov je identická s prácou s vlastným zdrojom tvorcu zostáv.

1. Čo je nástroj na tvorbu prehľadov?

Zostavovač je objekt, ktorý umožňuje na základe zadaného textu dotazu a nastavení získať výsledok a zobraziť ho v tabuľkovom dokumente alebo grafe.

Nastavenia nástroja Report Builder zahŕňajú:

  • zoskupenia (príklad: „Nomenklatúra“, „Protistrana“...),
  • ukazovatele (príklad: „Množstvo“, „Množstvo“...),
  • ďalšie polia (príklad: „Položka.Služba“, „Kód účtu“...),
  • filter (príklad: podľa konkrétnej položky, podľa skupiny protistrán...) a
  • triedenie (príklad: “Nomenklatúra.Kód”, “Názov protistrany”...)

Nastavenia staviteľa majú vizualizačné nástroje, čo umožňuje programátorovi poskytnúť používateľovi rozhranie na ich nastavenie s minimálnym úsilím.

Pred výstupom môžete upraviť štýl rozloženia nástroja na tvorbu zostáv pomocou rozloženia vzhľadu.

Výstup výsledku dotazu tvorcu zostáv sa vykoná jedným príkazom.

2. Kde môžem použiť nástroj na tvorbu prehľadov?

Pomocou nástroja na tvorbu zostáv môžete navrhnúť väčšinu zostáv (príklad: „Zostatky zásob“, „Tržby za obdobie“...). Zároveň sa výrazne skráti čas na ich vývoj a programový kód, zvýši sa kvalita dizajnu a funkčnosti.

Okrem toho možno nástroj na tvorbu zostáv použiť v prípadoch, keď výstup výsledku nie je potrebný, ale používateľ potrebuje prispôsobiť prvky dotazu, napríklad zoskupenia alebo filter (príklad: nahranie položky do súboru xml alebo spracovanie zaúčtovanie dokladov podľa daného filtra).

Keďže zostavovač zostáv nie je dostupný na serveri 1C:Enterprise a nepoužíva sa v module vonkajší spoj, potom je v týchto prípadoch potrebné použiť tvorca dotazov, ktorý je podobný nástroju na tvorbu zostáv, no nemá vizuálne vlastnosti a metódy („Layout“, „OutputReportTitle“, „Output()“, „DesignLayout()“...).

3. Trochu o pojmoch

V porovnaní s verziou 7.7 prešla verzia 8.0 miernou zmenou konceptov, takže stojí za to sa nad tým trochu pozastaviť.

koncepcia

Popis

Riadkové merania Zoznam zoskupení, pre ktoré sa bude vykonávať výstup podľa riadkov (príklad: „Položka“, „Účet“...)
Merania stĺpcov Zoznam zoskupení, pre ktoré sa bude vykonávať výstup podľa stĺpcov (príklad: „Sklad“, „Mesiac“...).
Výber Súbor rôznych filtrov (príklad: podľa skupiny protistrán, podľa danej organizácie...).
Objednať Súbor triediacich polí (príklad: „Kód položky“, „Doklad o predaji. Zodpovedný“…).
Pole Jedno z polí na výber dotazu (príklad: „Položka“, „Kód účtu“, „Množstvo“, „Suma“...).
Vybrané polia Zoznam vybraných polí obsahuje ukazovatele (príklad: „Množstvo“, „Suma“...) a doplnkové polia (podrobnosti zoskupenia) (príklad: „Nomenklatúra.Skupina“, „Kód účtu“...).
Dostupné polia Zoznam polí dostupných na pridanie do zoskupenia, filtrovania, triedenia a vybratých polí. Spravidla je vyplnený zoznamom polí na výber dotazu, ale je možné ho programovo upravovať (dostupné polia môžete pridávať, meniť a odstraňovať).

Je dôležité pochopiť, že zoskupenie, filter, triedenie a vybraté polia priamo nesúvisia s dostupnými poľami, sú to rôzne objekty.

Hlavný rozdiel je v tom, že dostupné pole nemá vlastnosť „DataPath“ (príklad: „Nomenclature.Code“, „Quantity“), keďže ide len o druh popisu poľa, pomocou ktorého sa pokúsime nájsť zhoda medzi poľami vzorky dotazu v momente jej pridávania do zoznamu zoskupení, filtrov, triedení alebo vybraných polí.

Zároveň nie je možné programovo pridať jedno z dostupných polí do žiadneho z vyššie uvedených zoznamov, pretože na jednej strane dostupné pole nemá metódy typu „AddToSelection()“ alebo „AddToSelectedFields() “, a na druhej strane, pri pridávaní nového prvku do ktoréhokoľvek z vyššie uvedených zoznamov musíte zadať vlastnosť „DataPath“, ktorá sa nie vždy zhoduje s názvom poľa (príklad: polia „Nomenclature.Parent“ a „Nomenklatúra.Rodič.Rodič“ majú rovnaký názov „Rodič“).

4. Typický prípad použitia pre zostavu zostavy

Vo všeobecnosti je postupnosť akcií pri práci s tvorcom zostáv nasledovná:

  1. Vytvorte nový objekt „Tvorca zostáv“;
  2. Priraďte text požiadavky vlastnosti „Text“;
  3. Ak v texte požiadavky neboli špecifikované nastavenia nástroja na tvorbu zostáv, vykonajte metódu „FillSettings()“;
  4. Poskytnite používateľovi možnosť zmeniť nastavenia nástroja na tvorbu prehľadov;
  5. V prípade potreby môžete odmietnuť automatické generovanie rozloženia tvorcom zostáv a priradiť pevné rozloženie vlastnosti „Rozloženie“;
  6. V prípade potreby môžete vlastnosť „Design Layout“ priradiť jednému zo štandardných alebo svojmu vlastnému rozloženiu, a ak bolo automaticky vygenerované rozloženie zostavy zostavy nahradené pevným, spustite funkciu „DesignLayout()“ metóda;
  7. Zavolajte metódu „Run()“;
  8. Zavolajte metódu „Output()“.
Builder = Nový "ReportBuilder"; Builder.Text = "VYBERTE POVOLENÉ | Spoločnosť CashRemains.StructuralUnit, | AMOUNT(CompanyCashRemains.AmountRemaining) AS Suma | |FROM | RegisterAccumulations.CompanyCash.Remains(, (StructuralUnit.*)) | StructuralJednotka | CELKOVÁ JEDNOTKA | CELKOVÁ. , |. Builder.FillSettings(); //Tu môžete používateľovi poskytnúť príležitosť //zmeniť nastavenia nástroja na tvorbu prehľadov Builder.Layout = GetLayout("CustomLayout");
Builder.AppearanceLayout = GetAppearanceLayout(StandardAppearance.Classic);
Builder.DesignLayout();
Builder.Run();
Builder.Output();

5. Popis niektorých vlastností zostavy zostavy

Nehnuteľnosť

Popis

Text Obsahuje text požiadavky na tvorbu zostáv. Ak text požiadavky na tvorbu zostáv neobsahuje prvky nastavenia „(…)“, potom môžete použiť metódu „FillSettings()“ na automatické vyplnenie nastavení na základe textu požiadavky.
Text nadpisu Text, ktorý sa zobrazí v hlavičke zostavy (príklad: „Zostatky zásob k 1. 1. 2004“, „Tržby za január 2004“...).
OutputReportTitle
Hlavička výstupnej tabuľky
Výstup Všeobecné výsledky
OutputFooterTables
OutputReportFootment
Tieto vlastnosti určujú, či sa zobrazí názov zostavy, hlavička tabuľky, celkové súčty, päta tabuľky a päta zostavy.
OutputDetailedRecords Vlastník je zodpovedný za vynútenie výstupu alebo zákaz výstupu podrobných záznamov.
Automatické podrobné záznamy Ak je vlastnosť „Automatické podrobné záznamy“ nastavená na hodnotu True, potom sa každý podrobný záznam zobrazí iba vtedy, ak sa líši od záznamu skupiny.
Dostupné polia Obsahuje zoznam polí dostupných na pridanie do zoskupení, filtrov, vybratých polí a triedenie.
DimensionsStrings
Rozmery Stĺpce
Obsahuje zoznam zoskupení podľa riadkov a stĺpcov.
Výber Obsahuje zoznam filtrov určených pre zostavu zostavy.
SelectedFields obsahuje zoznam vybraných ukazovateľov a podrobnosti o zoskupení.
Objednať obsahuje zoznam triediacich polí.
Možnosti Obsahuje zoznam parametrov staviteľa (deklarovaných v tele požiadavky staviteľa pomocou znaku „&“).
Výsledok Obsahuje výsledok vykonania dotazu tvorcu zostáv (objekt typu Query Result).

6. Spracovanie prepisov pomocou nástroja Report Builder

Vlastnosť „Decryption Filling“ obsahuje jednu z troch možností na vyplnenie prepisu počas výstupu:

Možnosť 1: nevypĺňať (nepoužívať prepis).

2. možnosť: zoskupenie hodnôt (pri dekódovaní bunky sa otvorí hodnota zoskupenia zobrazená v nej).

3. možnosť: dešifrovanie (dešifrovanie bude vyplnené štruktúrou obsahujúcou hodnoty všetkých zoskupení). V tomto prípade musíte spracovať udalosť tabuľkového dokumentu „Spracovanie dešifrovania“, kde musíte analyzovať prenesenú štruktúru a vykonať určité akcie.

Dôležitým bodom je, že v tretej možnosti nie je možné výstup do vygenerovaného tabuľkového dokumentu, pretože potom nie je možné spracovať prepis, ktorého spracovanie udalosti prebieha v module formulára, na ktorom sa nachádza pole tabuľkového dokumentu. .

Ak na vyplnenie prepisu použijete tretiu možnosť, môžete použiť metódu „SetupDecrypt()“, ktorá je určená na spustenie a zobrazenie zostavy s prihliadnutím na prepis vykonaný používateľom.

Zostavovač môže byť rovnaký alebo nový. Keď nakonfigurujete prepis, všetky filtre nástroja na tvorbu vlastných zostáv sa odstránia a pridajú sa všetky nainštalované filtre z pôvodného nástroja na tvorbu dotazov, plus filtre založené na hodnotách zoskupenia z prepisu.

7. Príprava správy

Vlastnosť „Layout“ obsahuje rozloženie, ktoré sa používa pri výstupe výsledku do tabuľkového dokumentu. Ak nie je definované, rozloženie sa vygeneruje automaticky.

Vlastnosti „ReportHeaderLayout“, „TableHeaderLayout“, „DetailedRecordsLayout“, „TotalTotalsLayout“, „TableFooterLayout“ a „ReportFooterLayout“ obsahujú názov oblasti v rozložení zostavy alebo jednotlivých rozložení použitých pri zobrazení hlavičky zostavy, tabuľky hlavičku, podrobné záznamy, všeobecné súčty, pätu tabuľky a pätu zostavy do tabuľkového dokumentu. Ak sa názvy rozsahov zhodujú s názvami v rozložení zostavy zostavy, nemusíte vypĺňať vlastnosti.

Vlastnosť Rozloženie vzhľadu obsahuje rozloženie použité na úpravu rozloženia nástroja na tvorbu zostáv. Vzhľad buniek v rozložení vzhľadu sa použije na bunky v rozložení zostavy.

Ak chcete získať jednu zo štandardných možností návrhu, môžete použiť metódu globálneho kontextu „GetDesignLayout()“.

Ak je vlastnosti „Layout“ tvorcu zostáv priradené pevné rozloženie, na jeho návrh musíte použiť metódu „DesignLayout()“.

Vlastnosť „Umiestnenie dimenzií v riadkoch“ definuje jednu z troch možností zobrazenia zoskupení podľa riadkov.
1. možnosť: spolu (v jednom stĺpci).
Príklad:

2. možnosť: samostatne (v rôznych stĺpcoch).
Príklad:


Príklad:

Vlastnosť „Umiestnenie dimenzií v stĺpcoch“ definuje jednu z troch možností zobrazenia zoskupení podľa stĺpcov.
1. možnosť: spolu (v jednom riadku).
Príklad:

2. možnosť: samostatne (v rôznych líniách).
Príklad:

3. možnosť: samostatne a až na záver.
Príklad:

Vlastnosť „Umiestniť súčty do riadkov“ definuje jeden zo štyroch spôsobov zobrazenia súčtu v riadkoch.
1. možnosť: v záhlaví (iba nad nasledujúcimi zoskupeniami a podrobnými zápismi).

2. možnosť: v hlavičke a päte (nad a pod následné zoskupenia a podrobné záznamy).

3. možnosť: v suteréne (pod nasledujúcimi zoskupeniami a podrobnými záznamami, nad nimi je zobrazený len popis zoskupenia).

4. možnosť: iba v suteréne (iba pod nasledujúcimi zoskupeniami a podrobnými záznamami).

Nehnuteľnosť “ Umiestnenie súčtov v stĺpcoch” definuje jeden zo štyroch spôsobov zobrazenia súčtov v stĺpcoch.

1. možnosť: v záhlaví (iba naľavo od nasledujúcich zoskupení a podrobných záznamov).

2. možnosť: v hlavičke a päte (vľavo a vpravo od nasledujúcich zoskupení a podrobných záznamov).

3. možnosť: v suteréne (vpravo od nasledujúcich zoskupení a podrobných záznamov, naľavo od nich je zobrazený len popis zoskupenia).

4. možnosť: iba v suteréne (iba vpravo od nasledujúcich zoskupení a podrobných záznamov).

Nehnuteľnosť “ Umiestnenie podrobností o rozmeroch do riadkov” definuje jednu z troch možností zobrazenia podrobností zoskupenia podľa riadkov.

1. možnosť: spolu (v jednom stĺpci navyše).
Príklad:

2. možnosť: spolu s meraniami (v stĺpcoch so zoskupeniami).
Príklad:

3. možnosť: samostatne (v rôznych prídavných stĺpcoch).
Príklad:

Nehnuteľnosť “ Umiestnenie podrobností o meraniach do stĺpcov” definuje jednu z troch možností zobrazenia podrobností o zoskupení podľa stĺpcov.

1. možnosť: spolu (v jednom riadku navyše).
Príklad:

2. možnosť: spolu s rozmermi (v riadkoch so zoskupeniami).
Príklad:

3. možnosť: samostatne (v rôznych prídavných riadkoch).
Príklad:

8. Výstup zo zostavy zostavy

Metóda „Run()“ vykoná požiadavku tvorcu zostáv a vyplní vlastnosť „Result“.
Pomocou metódy „GetQuery()“ môžete získať dotaz tvorcu zostáv, ktorý sa vykoná pri volaní metódy „Run()“.

Metóda „Output()“ zobrazí výsledok v tabuľkovom dokumente alebo grafe. Ak nešpecifikujete objekt, do ktorého chcete vytlačiť, vytvorí sa nový tabuľkový dokument.

Príklad výstupu do nového tabuľkového dokumentu:
Builder.Output();

Príklad výstupu do existujúceho tabuľkového dokumentu:
Builder.Output(FormElements.ResultTable);

Príklad výstupu do grafu:
Builder.Output(FormElements.ResultDiagram, "Množstvo");

Ak chcete zobraziť výsledok nástroja na tvorbu zostáv v kontingenčnej tabuľke alebo kontingenčnom grafe, nemusíte použiť metódu „Output()“, ale vyplňte vlastnosť „Zdroj údajov“ kontingenčnej tabuľky alebo kontingenčného grafu. . Zdroj môže byť výsledkom tvorcu zostáv alebo samotného tvorcu zostáv. Výsledok nástroja na tvorbu zostáv nevyžaduje opätovné spustenie dotazu, ale nástroj na tvorbu zostáv vám umožňuje zmeniť zloženie zoskupení.

9. Uloženie a obnovenie nastavení nástroja Builder

Metóda “GetSettings()” vám umožňuje získať aktuálne nastavenia zostavy zostavy s možnosťou určiť, ktoré z nich (napríklad: iba filtrovať, filtrovať a triediť...).

Metóda „SetSettings()“ vám umožňuje načítať nastavenia tvorcu zostáv s možnosťou určiť, ktoré z nich (napríklad: iba filtrovať, filtrovať a triediť...).

10. Zoskupenia a polia zostavovateľa zostáv

Dimenzia nástroja na tvorbu prehľadov je zoskupenie podľa riadkov alebo stĺpcov.

Hlavné detaily skupiny sú

  • „Názov“ (identifikátor detailu) ​​(príklad: „Položka“, „Protistrana“...),
  • „Reprezentácia“ (prezentácia pri výstupe) (príklad: „Predajný doklad“, „Merná jednotka“...),
  • „PathtoData“ (cesta k poľu výberu dopytu) (príklad: „Nomenklatúra“, „DocumentSales.Organization“...)

a ak je zoskupenie zostavené podľa adresára, potom

  • „Typ dimenzie“ (jedna z možností filtrovania podľa hodnôt poľa: hierarchia (prvky a skupiny), iba hierarchia (len skupiny) alebo prvky (len prvky)).

Okrem toho existuje niekoľko vlastností, ktoré vám umožňujú priradiť rozloženia skupine, ktorá sa použije pri výstupe do tabuľkového dokumentu.

  • „Rozloženie“ je názov oblasti v rozložení zostavy zostavy alebo v samostatnom rozložení používanom pri zoskupovaní výstupu.
  • „Rozloženie hierarchie“ je názov oblasti v rozložení zostavy zostavy alebo samostatného rozloženia používaného pri zobrazovaní hierarchie zoskupení.
  • „Rozloženie päty“ je názov oblasti v rozložení staviteľa alebo samostatného rozloženia používaného pri zobrazení päty skupiny.
  • „HierarchyFooterLayout“ je názov oblasti v rozložení Builder alebo samostatného rozvrhnutia používaného pri vykresľovaní päty hierarchie zoskupenia.
  • „Rozloženia suterénu“ - súbor rozložení suterénu pre rôzne úrovne zoskupenia.
  • „Rozloženia úrovní“ – rad rozložení pre rôzne úrovne zoskupení.

Pole nástroja na tvorbu zostáv je jedným z vybratých polí. Hlavné detaily poľa sú

  • „Názov“ (identifikátor poľa) ​​(príklad: „Množstvo“, „Kód nomenklatúry“, „Obdobie“...),
  • „Reprezentácia“ (reprezentácia počas výstupu) (príklad: „Množstvo“, „Kód“, „Obdobie“...) a
  • „PathKData“ (cesta k poľu výberu dopytu) (príklad: „Množstvo“, „Nomenklatúra. Kód“, „Obdobie“...).

So zoznamom zoskupení alebo polí môžete vykonať množstvo akcií.

  • „Vložiť()“ – pridajte zoskupenie/pole na zadanú pozíciu.
  • „Pridať()“ – pridajte zoskupenie/pole na koniec zoznamu.
  • "Index()" - získajte index zoskupenia/pola v zozname.
  • “Quantity()” – získajte počet zoskupení/polí v zozname.
  • „Nájsť()“ – nájde zoskupenie/pole v zozname podľa názvu.
  • „Clear()“ – vymaže zoznam zoskupení/polí.
  • "Get()" - získajte zoskupenie/pole podľa indexu.
  • “Shift()” – posun zoskupenia/pola o zadaný počet pozícií.
  • “Delete()” – odstránenie zoskupenia/pola zo zoznamu.

11. Staviteľský jazyk

Zostavovač má svoj vlastný jazyk. Toto je bežný dopytovací jazyk doplnený o konštrukcie „(…)“. Pomocou týchto konštrukcií môžete opustiť metódu „FillSettings()“ a nakonfigurovať zostavu zostavy v tele požiadavky.
Týmto spôsobom si môžete prispôsobiť prvky „SELECT“, „WHERE“, „ORDER BY“, „SUMMARY BY“ a tiež urobiť niekoľko ďalších zaujímavých vecí. V tomto prípade bude telo požiadavky tvorcu predvolené nastavenia, zatiaľ čo konštrukcie (...) budú popisovať dostupné nastavenia.

Ak vám výberové pole umožňuje získať niečo cez bodku, potom môžete zadať „.*“ za pole, potom si používateľ bude môcť vybrať podrobnosti poľa. Napríklad „Nomenclature.*“ vám umožňuje triediť podľa „Nomenclature.Code“ alebo vybrať podľa „Nomenclature.Service“. Ale „Množstvo.*“ nedáva zmysel, pretože pole „Množstvo“ neobsahuje podrobnosti, čo znamená, že stačí uviesť „Množstvo“.

Polia špecifikované v konštrukcii „SELECT“ obmedzujú zoznam polí dostupných pre používateľa.
Polia špecifikované v konštrukcii „WHERE“ obmedzujú zoznam polí, ktoré možno použiť vo filtri.
Polia špecifikované v konštrukcii „ORDER BY“ obmedzujú zoznam polí, ktoré sa majú triediť.
Polia špecifikované v konštrukcii „PO RESULTS“ obmedzujú zoznam polí na zoskupenie súčtov.

Teraz k zaujímavostiam.

Po prvé, v hlavnom texte požiadavky môžete v parametroch zdroja použiť aj konštrukcie (...). Napríklad, ak namiesto toho
|OD
| RegisterAccumulations.Remaining Products of the Company.Remainings(&Dátum ukončenia)
naznačiť
|OD
| RegisterAccumulations.Remaining Products of the Company.Remainings((&Dátum ukončenia))
potom v tomto prípade bude možné nastaviť filter podľa poľa „Dátum ukončenia“.

Zároveň je v prvom prípade potrebné nastaviť parameter zostavy zostavy „Dátum ukončenia“, v druhom prípade sa to nevyžaduje, navyše, ak nie je nastavený výber v poli „Dátum ukončenia“, potom tento parameter tabuľky „Registr akumulácie Zvyšné produkty Spoločnosti“ vo všeobecnosti nebude braný do úvahy.

Po druhé, zdroje v texte požiadavky môžu byť označené ako nepovinné umiestnením do konštrukcie „(…)“. Napríklad, ak napíšete text žiadosti takto

|VYBERTE


| Množstvo tovaruSpoločnosťZostáva.MnožstvoZostávajúce AKO MnožstvoPodiel
|(VYBERTE
| Zostávajúce produkty spoločnosti Zostávajúce produkty Nomenklatúra AS,
| Zostávajúce produkty spoločnostiZostatky.MnožstvoZostávajúce AS Množstvo,
| Veľa tovaruSpoločnosťZostáva.MnožstvoZostávajúce AKO MnožstvoPodiel)
|OD
| RegisterAkumulácie.Zostávajúce produkty spoločnosti.Zostatky AS Zvyšné produkty spoločnostiZostatky
| (ĽAVÉ SPOJENIE Registrovať Akumulácie. Spoločnosť Tovar Položky. Zvyšky AS Spoločnosť Tovar Položky Zvyšky
| Softvér Zostávajúce produkty spoločnostiRemainings.Nomenklatúra = veľa produktov spoločnostiZostatky.Nomenklatúra)
|SÚČET VÝSLEDKOV (množstvo), SÚČET (množstvo podľa dávky) ZAP
| VŠEOBECNÉ,
| Nomenklatúra

potom sa ľavé spojenie podľa dávkového registra vykoná len vtedy, ak sa v zozname vybraných polí nachádza pole „QuantityByBatch“.

Po tretie, v parametroch zdroja môžete určiť, že ak sú zadané filtre, ak je to možné, aplikujte ich nie na výsledok dotazu pomocou prvku „WHERE“, ale na samotný zdroj. Takže namiesto toho
| RegisterAccumulations.CompanyProductRemains.Remains()

má zmysel písať

| Register akumulácie.Zostáva tovar spoločnosti.Zostáva(, (Nomenklatúra.*, Sklad spoločnosti.*, Objednávka.*, Maloobchodná cena, Charakteristika nomenklatúry.*))

no, po štvrté, podľa mňa najchutnejšie. Ak je v zdroji špecifikovaný parameter „Frekvencia“ (pre tabuľky, ktoré vám umožňujú získať obrat), možno ho nastaviť aj ako „(...)“ a v dôsledku malej manipulácie s textom dopytu tvorcu , môžeme použiť zoskupenia podľa období.

Príklad: |VYBRAŤ POVOLENÉ | Produktové šaržeSpoločnosťObrat.Nomenklatúra, | SUM(Veľa produktovSpoločnosťObrat.CostIncoming) AKO CostIncoming, | SUM(SpoločnosťProduktové šaržeObrat.NákladySpotreba) AKO Spotreba nákladov |

|OD | Register akumulácie.Spoločnosť Šarže tovaru.Obrat(, (&Frekvencia), | (Nomenklatúra.*)) AS Spoločnosť Šarže tovaruObrat |

|SKUPINA PODĽA | Množstvo tovaruSpoločnosťObrat.Nomenklatúra |<>| VÝSLEDKY SUMA (Náklady), SUMA (Výdavky) PODĽA | VŠEOBECNÉ, | Nomenklatúra |<>|(VYBERTE | Množstvo produktov obratu spoločnosti. Nomenklatúra.*, | Registrátor.*, | Začiatok obdobia (obdobie, deň) AKO Deň obdobia, | Začiatok obdobia (obdobie, týždeň) AKO ObdobieTýždeň, | Začiatok obdobia Obdobie (Obdobie, Dekáda) AS ObdobieDekáda, |. Začiatok Obdobia (Obdobie, Mesiac) AS ObdobieMesiac, | , |. SUM(Spoločnosť Produktové častiObrat. NákladyVýdavky) AKO NÁKLADYVýdavky) |<>Nedefinované Potom Periodicita = 9;<>endIf;<>If Report Builder.DimensionsRows.Find("ObdobiePolrok")<>Undefined OR Report Builder.DimensionsColumns.Find("PeriodHalf-Year")<>Nedefinované Potom Periodicita = 8;<>endIf;<>If Report Builder.DimensionsRows.Find("PeriodQuarter")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("Štvrťrok obdobia")<>Nedefinované Potom Periodicita = 7;<>endIf;<>Ak ReportBuilder.DimensionsRows.Find("PeriodMonth")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("ObdobieMesiac")<>Nedefinované Potom Periodicita = 6;<>endIf;<>If Report Builder.Row Dimensions.Find("PeriodDecade")<>Undefined OR Report Builder.DimensionsColumns.Find("PeriodDecade")<>Nedefinované Potom Periodicita = 5; endIf; Ak ReportBuilder.DimensionsRows.Find("PeriodWeek")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("PeriodWeek")

Nedefinované Potom Periodicita = 4;

endIf;

Okrem toho môžete ako zdroj údajov zadať aj „Builder.AvailableFields“ a tak po prvé zobraziť zoznam dostupných polí a po druhé pomocou kontextového menu pridať polia do zoskupení, výberu, vybratých polí alebo filtrov.