1c výber nástroja na tvorbu dotazov. Zostavovač zostáv a Zostavovač dopytov pracujúci s vlastným zdrojom údajov. Príklad použitia nástroja Builder na zahrnutie výberov do zostavy

  • 26.11.2023

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 sa používa objektový dátový model.

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

Dotazovací jazyk je najjednoduchší a najefektívnejší spôsob získavania 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>

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

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

V tomto dotaze 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 požiadavku zoskupíme podľa poľa „Názov poľa1“, pričom sčítame „Názov poľa2“. Pre pole 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 dopytovacieho jazyka 1C 8.2.

NAJPRVn

Pomocou 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
TRIEDIŤ 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é sú pre neho nedostupné, 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É
Úložisko ďalších informácií. Odkaz
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. YesNULL() vám umožňuje nahradiť hodnotu NULL požadovanou hodnotou. Veľmi často sa používa pri kontrole prítomnosti hodnoty v spojených tabuľkách, napríklad:

VYBERTE SI
Referenčný 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 akékoľvek 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

EXPRESNÉ

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:

VYBER Z
Ref
ĽAVÉ PRIPOJENIE RegisterAkumulácia.ProduktyVSkladoch.Zostávajúce AKO Zostávajúce produkty
Softvér NomenclatureRef.Link = Predaný tovarCommitteesRemains.Nomenclature
KDE NIE SÚ Zostávajúce produkty. Množstvo Zostávajúce JE NULL

Typ údajov v dotaze možno určiť pomocou funkcií TYPE() a VALUETYPE() alebo pomocou logického operátora REFERENCE. 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ď.. Používa sa na to 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 účte. Účtovný účet = Hodnota (Účtovná tabuľka. Zisk. ZiskStrata)

Spojenia

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

ĽAVÉ a PRAVÉ PRIPOJENIE

Spojenia sa používajú na prepojenie dvoch tabuliek na základe konkrétnej podmienky. Funkcia kedy ĽAVÉ PRIPOJENIE je, že 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 NULOVÝ.

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 NULOVÝ.

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. Kurz
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
Predaj tovaru a služieb Tovar Nomenklatúra,
SUM(Predaj tovaruSlužbyTovar.Množstvo) AS Množstvo,
SUM(Sales of GoodsServicesToods.Amount) AS Suma
OD

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

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 tovaru a služieb Tovar AKO Predaj tovaru a služieb Tovar
TRIEDIŤ 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 tovaru a služieb Tovar Nomenklatúra AS Nomenklatúra,
Predaj tovaru a služieb Tovar Link AS Document,
Predaj tovaru a služieb Tovar Množstvo AS Množstvo,
Predaj tovaru a služieb Tovar Suma AS Suma
OD
Dokument Predaj tovaru a služieb Tovar AKO Predaj tovaru a služieb Tovar
TRIEDIŤ PODĽA
Predaj tovaru a služieb Tovar. Odkaz. Dátum
VÝSLEDKY
SUM(množstvo),
SUM(Súčet)
BY
SÚ BEŽNÉ,
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 typu odkazu sa triedenie uskutočňuje podľa internej reprezentácie odkazu (jedinečný identifikátor), a nie podľa kódu alebo reprezentácie odkazu.

VYBERTE SI

OD
Adresár.Nomenklatúra AS Nomenklatúra
TRIEDIŤ PODĽA
názov

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álna tabuľka je rýchly spôsob, ako získať informácie o profile 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
Produkty v skladoch zostatky a obrat. Nomenklatúra,
ProductsInWarehousesRemainingAndTurnover.QuantityInitialRemaining,
ProductsInWarehousesRemainsAndTurnover.QuantityObrat,
Tovar v skladochRemainsAndTurnover.QuantityIncoming,
Tovar v skladochRemainsAndTurnover.QuantityConsumption,
ProductsInWarehousesRemainingsAndTurnover.QuantityFinalRemaining
OD
RegisterAccumulations.GoodsInWarehouses.RemainsAndTurnover AS GoodsInWarehousesRemainsAndTurnover

Tento dotaz vám umožňuje rýchlo získať 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 sú špecializované parametre na 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:

Register kumulácií. Tovar na skladoch. Zostatky a obraty (& Začiatok obdobia, & Koniec obdobia, Mesiac, pohyby a hranice obdobia, Číselník = & Povinné názvoslovie)

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 dopytov

Query Builder– 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 Zoskupenie

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 požiadavky bude: načítanie ú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 uzamykania údajov, ktoré zaisťuje bezpečnosť údajov od ich načítania až po ich zmenu (relevantné len pre režim Automatické uzamykanie, prevedenie NA ZMENU).

Karta Pripojenia/Aliasy

Na tejto karte návrhára dotazov môžete nastaviť možnosť spájania rôznych tabuliek a aliasov (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 ladenia zložitých dotazov a rýchleho získavania 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čby sa zvyčajne delia na dva typy – kontrolované formy a konvenčné (alebo sa niekedy nazývajú 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 dotazu 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. Je to 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“:

V hornom paneli je tiež 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.

Návrhár dotazov 1C 8 sa vyvolá z kontextovej ponuky (pravé tlačidlo myši), keď kliknete na vstupné pole:

V tejto ponuke sú tiež také užitočné funkcie, ako je vymazanie alebo pridanie zlomov riadkov („|“) k požiadavke alebo prijatie kódu požiadavky v tejto pohodlnej forme:

Ž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:



Konzola dotazov môže okrem zoznamu zobraziť aj ú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. V žiadnom prípade nepoužívajte na výber vo virtuálnej tabuľke konštrukt WHERE, to je z hľadiska optimalizácie vážna chyba. V prípade výberu pomocou WHERE v skutočnosti systém dostane VŠETKY záznamy a až potom vyberie potrebné.

SPRÁVNY:

VYBERTE SI

OD
Register kumulácií. Vzájomné vyrovnania s účastníkmi organizácií. Zostatky (
,
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í Vzájomné vyrovnania s účastníkmi organizácií Zostatky (,) AKO Vzájomné vyrovnania s účastníkmi organizácií Zostatky
KDE
Vzájomné vyrovnania zostatkov s účastníkmi organizácií Organizácia = & Organizácia
AND Vzájomné vyrovnania s účastníkmi zostatkov organizácií 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).

SPRÁVNY:

VYBERTE SI
VOĽBA
KEĎ ProductsOrg.Registrar LINK Document.Predaj produktov a služieb
POTOM VYJADRITE(Organizácia produktov.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.

SPRÁVNY:

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

Poddotazy v stave spojenia

Pre optimalizá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 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…

SPRÁVNY:

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

VYBERTE si…
Z dokumentu Predaj 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. Dôvodom je skutočnosť, že VT sú často obsiahnuté v niekoľkých fyzických tabuľkách DBMS; v dôsledku toho sa na ich výber zostaví poddotaz a problém sa ukáže byť 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!

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ď sa. Nadýchni 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 jeden gram ú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 ovládate tento jazyk).

Keďže 1C presadzuje koncepciu vizuálneho programovania, kde sa veľa alebo takmer všetko dá urobiť bez ručného písania kódu, existuje špeciálny objekt Query Constructor, ktorý vám 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,
Názov,
kód
OD
//názov tabuľky, z ktorej vyberáme dáta
//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
TRIEDIŤ PODĽA
//Triedenie
názov

Zoznam tabuliek 1C

Názvy tabuliek môžete vidieť v okne konfigurátora. Stačí namiesto „Adresárov“ 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) – žiadosť 1C 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.

Ďalšie 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 Predaj 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 Predaj 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 Predaj 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 ďalších funkciách dopytovacieho jazyka 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.

Ô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ácie 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ľkovom dokumente alebo grafe. 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 znázornené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 staviteľ SKD zahŕňa:

  • 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 nástroja Builder na zahrnutie výberov do zostavy

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 ReportBuilder (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í nevyhnutne 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 konštruktore sú 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.

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: „Item.Service“, „Account.Code“...),
  • 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 externého pripojenia, v týchto prípadoch je 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ť Sada triediacich polí (príklad: „Kód položky“, „Doklad o predaji. Zodpovedný“…).
Lúka 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 vybrané 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 vzorovými poľami požiadavky 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ý "Tvorca zostáv"; Builder.Text = "VYBRAŤ POVOLENÉ | Spoločnosť CashRemains.StructuralUnit, | SUM(CompanyCashRemains.AmountRemaining) AS Suma | |FROM | RegisterAccumulations.CompanyCash.Remains(, (StructuralUnit.*)) | jednotka | |CELKOVÁ) SUMA (Suma) VŠEOBECNÉ, | StructuralUnit"; 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 dotazu na tvorbu zostáv neobsahuje prvky nastavenia „(…)“, potom môžete použiť metódu „FillSettings()“ na automatické vyplnenie nastavení na základe textu dotazu.
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
Záhlavie 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 sa použije tretia možnosť na vyplnenie prepisu, môžete použiť metódu „SetupTranscript()“, 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 „ReportHeader Layout“, „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, resp. hlavičku tabuľky, 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í Report Builder, 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ž nakoniec.
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áznamami).

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 doplnkovom stĺpci).
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 zostavy 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í na triedenie.
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 „Register akumulácie. Zvyšné produkty Spoločnosti. Zvyšné zvyšky“ nebude vôbec použitý.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ťZostatky.MnožstvoZostávajúce AKO MnožstvoPodiel
|(VYBERTE
| Zostávajúce produkty spoločnosti Zostávajúce produkty Nomenklatúra AS Nomenklatúra,
| 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. Zostáva AS Spoločnosť Tovar Položky Zostáva
| Softvér Zostávajúce produkty spoločnostiRemainings.Nomenclature = Veľa produktov spoločnostiRemainings.Nomenklatúra)
|SÚČET VÝSLEDKOV (množstvo), SUM (množstvo podľa dávky) PODĽA
| SÚ BEŽNÉ,
| 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ň, | Začiatok obdobia (Obdobie, týždeň) AKO ObdobieTýždeň, | Začiatok Obdobie (Obdobie, Dekáda) AKO ObdobieDekáda, | Začiatok obdobia (Obdobie, mesiac) AKO ObdobieMesiac, | Začiatok obdobia (Obdobie, štvrťrok) AKO Štvrťrok, | Začiatok obdobia (Obdobie, Polrok) AKO Obdobie Polrok-ROK , | Začiatok obdobia (Obdobie, Rok) AKO ObdobieRok, | SÚČET (Veľa produktov Obrat spoločnosti.Príjem nákladov) AKO príjem nákladov, | SUM (Voľné časti produktov spoločnosti Obrat. NákladyVýdavky) AKO NÁKLADY) | | | (KDE | Veľa produktov Obrat spoločnosti. Nomenklatúra. *, | Registrátor. *, | SUM (Mnoho tovaru Obrat spoločnosti. Náklady Incoming) AKO náklady príjmu, | SUM (Veľa tovaru Obrat spoločnosti Náklady Expense) AS Cost Expense) | |(VÝSLEDKY PODĽA | Nomenklatúry.*, | Registrátora.*, | Začiatok obdobia (Obdobie, Deň) AKO Deň obdobia, | Začiatok obdobia (Obdobie, Týždeň) AKO ObdobieTýždeň, | Začiatok obdobia (Obdobie, Dekáda) AS ObdobieDekáda, | Začiatok obdobia (Obdobie, Mesiac ) AS ObdobieMesiac, | Začiatok obdobia (Obdobie, štvrťrok) AS Obdobie štvrťrok, | Začiatok obdobia (Obdobie, Polrok) AKO Obdobie Polrok, ​​| Začiatok obdobia , rok) AS ObdobieRok)

Existuje jedna výhrada: aby fungovalo zoskupovanie podľa období, musíte pridať filter pomocou parametra „Frekvencia“. Aby ste to neurobili ručne, pre pohodlie ho môžete programovo pridať pred spustením nástroja na tvorbu zostáv a po spustení ho odstrániť, aby vás to nezmiatlo, pretože z hľadiska zdravého rozumu to nie je možné pochopiť filter. Urobilo sa niečo takéto

If Report Builder.AvailableFields.Find("Frequency")<>Undefined Then Periodicity = Nedefinované; If Report Builder.DimensionsRows.Find("PeriodYear")<>Undefined OR Report Builder.DimensionsColumns.Find("PeriodYear")<>Nedefinované Potom Periodicita = 9; koniec Ak; If Report Builder.DimensionsRows.Find("ObdobiePolrok")<>Undefined OR Report Builder.DimensionsColumns.Find("PeriodHalf-Year")<>Nedefinované Potom Periodicita = 8; koniec Ak; If Report Builder.DimensionsRows.Find("PeriodQuarter")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("Štvrťrok obdobia")<>Nedefinované Potom Periodicita = 7; koniec Ak; Ak ReportBuilder.DimensionsRows.Find("PeriodMonth")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("ObdobieMesiac")<>Nedefinované Potom Periodicita = 6; koniec Ak; If ReportBuilder.DimensionsRows.Find("PeriodDecade")<>Undefined OR Report Builder.DimensionsColumns.Find("PeriodDecade")<>Nedefinované Potom Periodicita = 5; koniec Ak; Ak ReportBuilder.DimensionsRows.Find("PeriodWeek")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("PeriodWeek")<>Nedefinované Potom Periodicita = 4; koniec Ak; If Report Builder.DimensionsRows.Find("PeriodDay")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("PeriodDay")<>Nedefinované Potom Periodicita = 3; koniec Ak; Ak ReportBuilder.DimensionsRows.Find("Recorder")<>Nedefinované OR ReportBuilder.DimensionsColumns.Find("Recorder")<>Undefined OR ReportBuilder.SelectedFields.Find("Registrator")<>Nedefinované Potom Periodicita = 2; koniec Ak; Ak Frekvencia<>Undefined Then Selection FieldBy Periodicity = Report Builder.Selection.Add("Periodicity"); SelectionFieldByPeriodicity.Value = Periodicita; SelectionFieldByPeriodicity.Use = True; koniec Ak; koniec Ak; Builder.Run(); Ak Selection FieldBy Periodicity<>Undefined Then Report Builder.Selection.Delete(Report Builder.Selection.Index(SelectionFieldByPeriodicity)); koniec Ak;

12. Prispôsobte si staviteľa

Aby mal používateľ možnosť zmeniť zoznam zoskupení, filter, vybrané polia alebo triedenie, stačí vytvoriť atribút zostavy „Builder“ a umiestniť pole tabuľky do formulára správy a zadať „Builder.DimensionsRows“, „ Builder.DimensionsColumns“ ako zdroj údajov. , „Builder.Selection“, „Builder.SelectedFields“ alebo „Builder.Order“.

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.

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 správy nezískavajú z informačnej bázy, ale napríklad z externého súboru. 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,
  • Poradie – označenie, že pre daný stĺpec je možné objednať,
  • Výber je znakom toho, že je možné uložiť výber na daný stĺpec,
  • Dimenzia – znamenie, ž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.