Výber nástroja na tvorbu dopytov 1s 8.2. Zostavovač zostáv a Zostavovač dopytov Práca s vlastným zdrojom údajov

Programovanie 1C nespočíva len v písaní 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 hlásenia SKD ide o gro hlásenia.

Posaď sa. Nadýchni sa. V kľude. 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ý vám umožňuje špecifikovať, aké údaje potrebujeme z databázy získať.

Je tiež dvojjazyčný - to znamená, že môžete písať v ruštine alebo v angličtine. Veľmi sa podobá jazyku SQL dotazy a tí, ktorí to vedia - môžete relaxovať.

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

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

Žiadosti 1C sú:

  • Automatické požiadavky 1C
    automaticky generované systémom. Vytvorili ste formulár zoznamu dokumentov. Pridaný stĺpec. To znamená, že keď otvoríte tento formulár v režime Enterprise, dôjde k dotazu a budú sa vyžadovať údaje pre tento stĺpec.
  • Poloautomatické požiadavky 1C
    V jazyku 1C je veľa metód (funkcií), pri prístupe sa vytvorí dotaz do databázy. Napríklad.GetObject()
  • Manuálne požiadavky 1C (napísané programátorom konkrétne ako žiadosť)
    Dotaz 1C môžete napísať sami v kóde a spustiť ho.

Vytváranie a vykonávanie požiadaviek 1C

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

Keďže 1C presadzuje koncepciu vizuálneho programovania, kde sa veľa alebo takmer všetko dá urobiť bez písania kódu perami, existuje špeciálny objekt Query Constructor, ktorý vám umožňuje kresliť 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 požiadavky 1C pripravený, musí sa vykonať. Na tento účel je v kóde požiadavky 1C () 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";
Selection = Query.Execute().Select();

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

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

Výsledok je možné preniesť do bežnej tabuľky:
Výber = Request.Execute().Upload(); //Výsledok - tabuľka hodnôt

Alebo len prejdite rad za radom.
Selection = Query.Execute().Select();
Kým Selection.Next() Slučka
//Urobte niečo s výsledkami dotazu
EndCycle;

Práca s požiadavkami 1C

Základné princípy požiadaviek 1C

Základné princípy vytvárania požiadavky 1C -
SELECT Zoznam polí FROM TableName WHERE Podmienky

Príklad vytvorenia takéhoto dotazu 1C:

VYBRAŤ
//zoznam polí na výber
odkaz,
Názov,
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
//určenie výberu
ProductType = &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ár" napísať "Adresár", napríklad "Adresár. Nomenklatúra" alebo "Dokument. Predaj tovarov a služieb" alebo "Register akumulácie. Tržby".

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

Information Register.RegisterName.SliceLast(&Date) – žiadosť 1C z registra informácií, ak je pravidelná, k určitému dátumu

Accumulation Register.RegisterName.Remains(&Date) – požiadavka 1C z registra zostatkov na konkrétny dátum

Akumulačný register.Názov registra.Obraty(&PočiatočnýDátum, &KoncovýDátum) – dotaz 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 požiadavka nám ich môže vypočítať (doplniť napr.).

VYBRAŤ
//Quantity(FieldName) – počíta množstvo
//Field AS OtherName - premenuje pole
Množstvo (referenčný) AS Množstvo realizovaných dokumentov
OD

KDE
Zadržané

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

VYBRAŤ
//len pole dokumentu
Organizácia,
// spočítajte číslo
Množstvo (Referencia) AS MnožstvoPodľa organizácií
OD
Dokument.Predaj tovaru/služieb
KDE
Zadržané
GROUP BY

Organizácia

Tento dotaz 1C nám vráti počet dokumentov pre každú organizáciu (hovoria tiež „v kontexte organizácií“).

Poďme dodatočne vypočítať množstvo týchto dokumentov pomocou žiadosti 1C:

VYBRAŤ
//len pole dokumentu
Organizácia,
// spočítajte číslo

//vypočítajte sumu

OD
Dokument.Predaj tovaru/služieb
KDE
Zadržané
GROUP BY
// by sa malo použiť, ak zoznam polí obsahuje 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.

VYBRAŤ
//len pole dokumentu
Organizácia,
// spočítajte číslo
Množstvo (referenčné) AS Množstvo podľa organizácií,
//vypočítajte sumu
Suma(DocumentAmount) AS Suma
OD
Dokument.Predaj tovaru/služieb
KDE
Zadržané
GROUP BY
// by sa malo použiť, ak zoznam polí obsahuje funkciu count() a jedno alebo viac polí súčasne - potom je potrebné zoskupiť podľa týchto polí
Organizácia
VÝSLEDKY Všeobecné

Dotazovací jazyk 1C je rozsiahly a zložitý a nebudeme brať do úvahy všetky jeho funkcie v jednej lekcii – prečítajte si naše ďalšie lekcie.

Stručne o pridané vlastnosti jazyk dopytu 1C:

  • Spájanie údajov z viacerých tabuliek
  • Poddotazy
  • žiadosť o dávku
  • Vytvorte si vlastné virtuálne tabuľky
  • Dopyt z tabuľky hodnôt
  • Používanie vstavaných funkcií na získanie hodnoty a manipuláciu s hodnotami.

Konštruktor dotazu 1C

Aby ste text dotazu nepísali rukami, existuje konštruktor dotazu 1C. Stačí kliknúť pravým tlačidlom myši kdekoľvek v module a vybrať Query Builder 1C.

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

Vyberte požadované polia v návrhárovi dotazov 1C z tabuľky a potiahnite doprava. Ak nechcete pole len vybrať, ale chcete naň aplikovať aj nejakú sčítaciu funkciu, po pretiahnutí dvakrát kliknite myšou na pole. Na karte Zoskupenie potom budete musieť vybrať (presunúť a pustiť) požadované polia na zoskupenie.

Na karte Podmienky v nástroji 1C Query Builder môžete rovnakým spôsobom vybrať požadované filtre (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 Súčty - súčet súčtov.

Pomocou nástroja na tvorbu 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úceho dotazu a tiež vyberte návrhára dotazov 1C - a dotaz 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 často nazýva SQL). Ale v 1C sa používa iba na čítanie údajov, na zmenu údajov sa používa objektový modelúdajov.

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

Príklad žiadosti:

VYBRAŤ
Banks.Name,
Banky.SprávnyÚčet
OD
Adresár Banky AS Banky

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

Dopytovací jazyk je najjednoduchší a efektívna metóda získavanie informácií. Ako vidíte z vyššie uvedeného príkladu, v dopytovacom jazyku sa musíte odvolať názvami metadát (je to zoznam systémových objektov, ktoré tvoria konfiguráciu, t. j. adresáre, dokumenty, registre atď.).

Popis konštrukcií dotazovacieho jazyka

Štruktúra žiadosti

Na získanie údajov stačí použiť konštrukcie SELECT (vybrať) a FROM (z). Najjednoduchší dotaz vyzerá takto:

SELECT * FROM Directories Nomenklatúra

Kde "*" znamená výber všetkých polí tabuľky a References.Nomenclature - názov tabuľky v databáze.

Zvážte komplexnejší a všeobecný príklad:

VYBRAŤ
<ИмяПоля1>AKO<ПредставлениеПоля1>,
Súčet(<ИмяПоля2>) AKO<ПредставлениеПоля2>
OD
<ИмяТаблицы1>AKO<ПредставлениеТаблицы1>
<ТипСоединения>COMPOUND<ИмяТаблицы2>AKO<ПредставлениеТаблицы2>
ON<УсловиеСоединениеТаблиц>

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

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

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

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

V tomto dotaze vyberáme údaje polí „NázovPole1“ a „NázovPole1“ z tabuliek „Názov tabuľky1“ a „Názov tabuľky“, priraďujeme synonymá k poliam pomocou operátora „AKO“, spájame ich podľa určitej podmienky „Pripojenie k tabuľke Podmienka“.

Z prijatých údajov vyberieme len údaje, ktoré spĺňajú podmienku z „KDE“ „Podmienka výberu údajov". Ďalej dotaz zoskupíme podľa poľa „NázovPole1", pričom sčítame „NázovPoľa2". Vytvoríme súčty pre „ FieldName1“ a posledné pole „FieldName2“.

Posledným krokom je triedenie dotazu pomocou konštrukcie „ORDER BY“.

Všeobecné vzory

Zvážte všeobecné konštrukcie 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,
Banks.Code AS BIC
OD
Adresár Banky AS 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 dopytu prečítať záznamy, ktoré mu nie sú dostupné, dostane chybové hlásenie. Aby ste tomu zabránili, mali by ste použiť konštrukciu "POVOLENÉ", t.j. požiadavka bude čítať iba záznamy, ktoré má povolené.

VYBERTE POVOLENÉ
RepositoryAdditionalInformation.Link
OD
Adresár. Ukladanie ďalších informácií

RÔZNY

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

VYBERTE PRVÝCH 100
Banks.Name,
Banks.Code AS BIC
OD
Adresár Banky AS Banky

EmptyTable

Táto konštrukcia sa používa veľmi zriedkavo na kombinovanie dopytov. Pri spájaní môže byť potrebné 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 SI referenčné číslo, PRÁZDNÚ TABUĽKU. (Nom, Tov, Množstvo) AKO ZLOŽENIE
Z dokumentu.Faktúra
ZJEDNITE VŠETKÝCH
SELECT Link.Number, Composition. (LineNumber, Product, Quantity)
Z dokumentu.Dokument faktúry.Faktúra.Zloženie.*

JE NULL

Veľmi užitočná funkcia, ktorá vám umožní vyhnúť sa mnohým chybám. Je NULL() vám umožňuje nahradiť nulovú hodnotu na tú pravú. Veľmi často sa používa pri kontrolách prítomnosti hodnoty v spojených tabuľkách, napríklad:

VYBRAŤ
NomenclatureRef.Reference,
IsNULL(Zostávajúce množstvo.Zostávajúce množstvo,0) AKO Zostávajúce množstvo
OD


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

ISNULL(InvoiceInvoiceReceived.Date, InvoiceIssued.Date)

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

Tieto konštrukcie sú veľmi podobné – umožňujú vám získať reťazcovú reprezentáciu požadovanej hodnoty. Jediný rozdiel je v tom, že VIEW konvertuje akékoľvek hodnoty na typ reťazca, zatiaľ čo REF VIEW 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žitie referenčného údajového poľa vo filtroch.

VYBRAŤ
View(Link), //reťazec, napríklad "Predbežná správa č. 123 zo dňa 10.10.2015
Representation(DeletionMark) AS DeleteMarkText, //reťazec, "Áno" alebo "Nie"
ReferenceRepresentation(DeletionMark) AS DeletionMarkBoolean //boolean, True or False
OD
Document.AdvanceReport

EXPRESNÉ

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

Express for reference type sa používa na obmedzenie požadovaných typov údajov v poliach zloženého typu, ktoré sa často používajú na optimalizáciu výkonu systému. Príklad:

EXPRESS(Tabuľka nákladov.Podkont.1 AS adresár.Nákladové položky).Typ činnostiPre daňové účtovanie nákladov

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

EXPRESS(Komentovať AKO reťazec(150))

DÁTUMOVÝ ROZDIEL

Získajte bezplatné video lekcie 267 1C:

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

VYBER Z
Ref
PRIPOJENIE VĽAVO
softvér
KDE NIE JE Zvyšky Tovaru Počet Zvyškov 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 enumerácie, preddefinované adresáre, účtové osnovy atď.. Používa sa na to konštrukcia „Hodnota ()“.

Príklad použitia:

KDE

WHERE Counterparties.KindofContactInformation = Hodnota(vyčíslenie.Typy kontaktných informácií.Telefón)

KDE Zostatky na účtoch. Účtovný účet = Hodnota (Účtovná tabuľka. Samostatná podpora. Zisk-Strata)

Spojenia

Pripojenia sú 4 typov: LEFT, SPRÁVNY, KOMPLETNÉ, VNÚTORNÉ.

PRIPOJTE SA VĽAVO a VPRAVO

Spojenia sa používajú na prepojenie dvoch stolov podľa určitej podmienky. Funkcia v PRIPOJENIE VĽAVO v tom, že vezmeme prvú špecifikovanú tabuľku úplne a naviažeme druhú tabuľku podľa podmienky. Polia druhej tabuľky, ktoré nebolo možné prepojiť podľa podmienky, 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é LEFT pripojiť až na jeden rozdiel - v SPRÁVNE PRIPOJTE SA„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, spája len tie, ktoré je možné spojiť podľa podmienky.

Napríklad:

OD

ÚPLNÉ PRIPOJENIE
Adresár Banky AS Banky

ON

Dopytovací jazyk vráti obe tabuľky v plnom rozsahu iba vtedy, ak je splnená podmienka spojenia záznamov. Na rozdiel od spojenia vľavo/vpravo sa hodnoty NULL môžu vyskytovať v dvoch poliach.

VNÚTORNÉ SPOJENIE

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

Napríklad:

OD
Adresár Protistrany AS Klienti

VNÚTORNÉ SPOJENIE
Adresár Banky AS Banky

ON
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štrukt UNION a UNION ALL spája 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 budovania indexu.

VYBRAŤ
CurrenciesCurrencySliceLast.Currency AS mena,
MenyCurrencySliceLast.Course
Kurzy meny PUT
OD
DataRegister.Currency Rates.SliceLast(&Period,) AS Kurzy mienSliceLast
INDEX BY
mena
;
VYBRAŤ
Ceny Nomenklatúra. Nomenklatúra,
Ceny Nomenklatúra. Cena,
Nomenklatúry cien. Mena,
KurzyCurrency
OD
RegisterInformation.PricesNomenclature.SliceLast(&Obdobie,
Položka B (&Nomenklatúra) A PriceType = &PriceType) AKO Ceny položiek
LEFT JOIN Kurzy mien AKO kurzy mien
Softvér Ceny Nomenklatúra.Currency = SadzbyCurrency.Currency

zoskupenie

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

Existujú nasledujúce funkcie:

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

Príklad č. 1:

VYBRAŤ
Realizácia tovarov, služieb, tovarov. Nomenklatúra,
SUM(Predaj tovaru, služieb, tovaru. Množstvo) AS Množstvo,
SUM(Predaj tovaru, služieb, tovaru. Suma) AS Suma
OD

GROUP BY
Realizácia tovarov, služieb, tovarov, nomenklatúra

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

Príklad č. 2

VYBRAŤ
Banks.Code,
ČÍSLO (ODLIŠNÉ banky. Referenčné číslo) AS Počet duplikátov
OD
Adresár Banky AS 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

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

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

VYBRAŤ




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

VÝSLEDKY
SUM(číslo),
SUM(Suma)
ON
Nomenklatúra

Výsledkom dopytu bude nasledujúca hierarchická štruktúra:

Všeobecné výsledky

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

VYBRAŤ
Realizácia tovarov, služieb, tovarov Nomenklatúra AS Nomenklatúra,
Realizácia Tovar Služby Tovar Referenčný dokument AS,
Predaj tovaru, služieb, tovaru Množstvo AS Množstvo,
Realizácia Tovaru Služby Tovar Suma AS Suma
OD
Dokument.Predaj tovaruSlužby.Tovar AS Realizácia tovaruSlužbyTovar
TRIEDIŤ PODĽA
Realizácia tovaru a služieb Tovar Referencia. Dátum
VÝSLEDKY
SUM(číslo),
SUM(Suma)
ON
SÚ BEŽNÉ,
Nomenklatúra

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

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

objednávanie

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 odkazov sa triedenie uskutočňuje podľa internej reprezentácie odkazu (jedinečný identifikátor), a nie podľa kódu alebo reprezentácie odkazu.

VYBRAŤ

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

Dotaz zobrazí zoznam názvov referenčnej knihy nomenklatúry zoradený abecedne.

Automatické usporiadanie

Výsledkom netriedeného dotazu je náhodne reprezentovaná množina riadkov. Vývojári platformy 1C nezaručujú výstup riadkov v rovnakom poradí pri vykonávaní rovnakých dopytov.

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

VYBRAŤ
Nomenklatúra Názov AS Názov
OD
Adresár Nomenklatúra AS Nomenklatúra
AUTO 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.

  • najprv rezať;
  • plátok toho druhého.
  • zvyšky;
  • obraty;
  • zostatky a obraty.
  • pohyby zo subkonta;
  • obraty;
  • otáčky Dt Kt;
  • zvyšky;
  • zostatky a obraty
  • subconto.
  • základňa;
  • grafové údaje;
  • skutočná doba platnosti.

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

VYBRAŤ
Tovar v skladochZostatkyA obraty.Nomenklatúra,
Tovar v skladochZostatkyA Obraty.Množstvo
Tovar v skladochRemainsAndTurnovers.QuantityObrat,
TovarV skladochZostatkyA Obraty.MnožstvoPrichádzajúce,
TovarV skladochZostatkyA Obraty.MnožstvoSpotreba
TovarV skladochZostatky a obraty.Množstvo
OD
Register akumulácie. Tovar v skladoch. Zvyšky a obraty AKO Tovar v skladoch Zvyšky a obraty

Takýto 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. Možnosti virtuálnej tabuľky sú špecializované možnosti výberu a prispôsobenia.

Pre takéto tabuľky sa považuje za nesprávne použitie výberu v klauzule WHERE. Okrem toho, že sa dopyt stane neoptimálnym, je možné získať nesprávne údaje.

Príklad použitia takýchto parametrov:

Akumulačný register.Tovar v skladoch.RemainsAndTurnovers(&Obdobie začiatku, &Obdobie konca, Mesiac, Pohyby ANDHranice obdobia, Nomenklatúra = &Nevyhnutná nomenklatúra)

Algoritmus pre virtuálne tabuľky

Napríklad najpoužívanejšia virtuálna tabuľka typu „Remainders“ 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 vypočítanú hodnotu najbližšie podľa dátumu a rozmerov v tabuľke súčtov.
  2. „Pridať“ sumu z tabuľky pohybu k sume z tabuľky súčtu.


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

Používanie nástroja na tvorbu dopytov

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žitie konštruktora dotazov podrobnejšie.

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

Popis konštruktora dotazu 1C

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

Karta Tabuľky a polia

Táto karta určuje zdroj údajov a polia, ktoré sa majú zobraziť v zostave. V skutočnosti sú tu opí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 Odkazy

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

Karta Zoskupenie

Na tejto karte vám systém umožňuje zoskupiť a zhrnúť požadované polia výsledku tabuľky. Popísané je použitie štruktúr GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, NUMBER, NUMBER OF RŮZNÉ.

Karta Podmienky

Zodpovedá za všetko, čo nasleduje v texte požiadavky za konštruktom 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í.

zoskupenie Výber záznamov:

  • Prvý N– parameter, ktorý vracia iba N záznamov v dotaze (operátor FIRST)
  • Žiadne opakované– 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 (konštrukcia POVOLENÁ)

zoskupenie Typ žiadosti určuje, aký typ dotazu 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 dátového zámku, ktorý zaisťuje bezpečnosť dát od ich načítania až po úpravu (relevantné len pre režim Automatický zámok, konštrukcia PRE ZMENU).

Karta Spojenia/Aliasy

Na tejto karte návrhára dotazov môžete nastaviť možnosť spájania rôznych tabuliek a aliasov (konštrukcia AS). Tabuľky sú uvedené na ľavej strane. Ak nastavíte vlajky pred stôl, použije sa konštrukcia JOIN, inak - JOIN ALL (rozdiely medzi týmito dvoma spôsobmi). Na pravej strane sú uvedené korešpondencie polí v rôznych tabuľkách; ak korešpondencia nie je špecifikovaná, dotaz vráti hodnotu NULL.

Záložka Objednávka

Tu určíte poradie triedenia hodnôt (ORDER BY) - zostupne (DESC) alebo vzostupne (ASC).

Je tu aj zaujímavá vlajka - Automatické usporiadanie(v dopyte - AUTOOBJEDNÁ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 dotazu môžete vytvoriť nové a použiť ju aj ako navigáciu. V texte požiadavky sú pakety oddelené symbolom „;“ (bodkočiarkou).

Tlačidlo dotazu v nástroji na tvorbu dotazov

V ľavom dolnom rohu nástroja na tvorbu dotazov sa nachádza tlačidlo Žiadosť, pomocou ktorého si môžete kedykoľvek zobraziť text dotazu:

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 žiadosti 1C

Po prvé, ak chcete začať s konzolou dotazov, musíte si ju odniekiaľ stiahnuť. Liečba sa zvyčajne delí na dva typy - riadené formuláre a normálne (alebo sa niekedy nazývajú 8.1 a 8.2/8.3).

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

Opis dotazovacej konzoly 1C

Začnime našu úvahu o konzole dotazov popisom hlavného panela spracovania:

V hlavičke konzoly dotazu môžete vidieť čas vykonania posledného dotazu s presnosťou milisekúnd, č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žitého dotazu. Alebo si napríklad uložte zoznam typických príkladov určitých konštrukcií.

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á práve za správu zoznamu požiadaviek. S ním môžete vytvárať, kopírovať, mazať, presúvať požiadavku.

  • Bežaťvyšetrovanie– jednoduché vykonávanie a dosahovanie výsledkov
  • Spustite balík- umožňuje zobraziť všetky prechodné požiadavky v dávke žiadostí
  • Zobrazenie dočasných tabuliek- umožňuje zobraziť výsledky, ktoré vracajú dočasné dotazy 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 Jediné parametre pre všetky požiadavky– ak je nastavený, jeho spracovanie nevymaže parametre pri prechode z požiadavky na požiadavku vo všeobecnom zozname požiadaviek.

Nastavte parameter ako zoznam hodnôt veľmi jednoduché, pri výbere hodnoty parametra stačí 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“:

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

Tu môžete zadať možnosti automatického ukladania dotazu a možnosti vykonania dotazu.

Text požiadavky sa zadáva do poľa žiadosti konzoly. Dá sa to urobiť pomocou jednoduchej testovacej sady dotazov alebo zavolaním špeciálneho nástroja – konštruktora dotazov.

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

V tomto menu sú tiež užitočné funkcie, ako je čistenie alebo pridávanie znakov nového riadku („|“) do požiadavky alebo získanie kódu požiadavky v tomto pohodlnom formulári:

Žiadosť = Nová požiadavka;
Query.Text = ”
| VYBERTE SI
| Meny.Odkaz
| OD
| Príručka. Meny AKO meny“;
QueryResult = Query.Execute();

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



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

Optimalizácia dopytov

Jedným z najdôležitejších bodov pri zlepšovaní produktivity 1C enterprise 8.3 je optimalizáciažiadosti. Tento bod je tiež veľmi dôležitý pre 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štrukciu WHERE, to je z hľadiska optimalizácie hrubá chyba. V prípade výberu pomocou WHERE v skutočnosti systém prijme VŠETKY záznamy a až potom vyberie potrebné.

SPRÁVNY:

VYBRAŤ

OD
Akumulačný register.Vzájomné vyrovnania s vkladateľmi organizácií.Zostatky(
,
Organizácia = &Organizácia
AND Jednotlivec = &Jednotlivec) AKO Vzájomné vyrovnanie so zostatkami vkladateľovOrganizácií

NIE SPRÁVNE:

VYBRAŤ
Vzájomné vyrovnania s Vkladateľmi OrganizácieZostatky.SumaZostatok
OD
Register akumulácie. Vzájomné vyrovnania s vkladateľmi organizácií. Zostatky(,)
KDE
Vzájomné vyrovnania so zostatkami organizácií vkladateľov.Organizácia = &Organizácia
AND Vzájomné vyrovnania so zostatkami organizácií vkladateľov. Jednotlivec = &Jednotlivec

Získanie hodnoty poľa zloženého typu cez bodku

Pri získavaní údajov zloženého typu v bodkovanom dotaze systém spojí zľava presne toľko tabuliek, koľko je možných typov v poli zloženého typu.

Napríklad je veľmi nežiaduce pri optimalizácii odkazovať na pole záznamu registra – registrátor. Registrátor má zložený dátový typ, medzi ktorými sú všetky možné typy dokumentov, ktoré môžu zapisovať údaje do registra.

NIE SPRÁVNE:

VYBRAŤ
RecordSet.Registrar.Date,
RecordSet.Number
OD
Akumulačný register.Organizácia tovaru AKO súbor záznamov

To znamená, že v skutočnosti sa takýto dopyt nebude týkať jednej tabuľky, ale 22 databázových tabuliek (tento register má 21 typov registrátorov).

SPRÁVNY:

VYBRAŤ
VOĽBA
KEĎ GoodsOrg.Registrar LINK Document.Predaj tovaruSlužby
POTOM VYJADRITE(GoodsOrg.Registrátor AKO doklad.Predaj tovaruSlužby).Dátum
KEĎ GoodsOrg.Registrar LINK Document.Prijatie tovaruSlužby
POTOM VYJADRITE (Dokument org. registrátora tovaru AS. Prijatie tovaru/služieb). Dátum
KONIEC AKO dátum,
GoodsOrg.Množstvo
OD
RegisterAccumulation.GoodsOrganizations AS GoodsOrg

Alebo druhá možnosť – pridanie takejto informácie k rekvizitám, napríklad v našom prípade – pridanie dátumu.

SPRÁVNY:

VYBRAŤ
GoodsOrganizations.Date,
Tovarové organizácie. Množstvo
OD
RegisterAkumulácia.Organizácie tovaru AKO organizácie tovaru

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 metadáta a objekty BT, ktoré ste predtým indexovali podľa polí pripojenia.

NIE SPRÁVNE:

VYBERTE…

PRIPOJTE SA VĽAVO (
SELECT FROM Register informácií.Limity
KDE …
SKUPINA PODĽA…
) ON…

SPRÁVNY:

VYBERTE…
Limity PUT
OD Register informácií.Limity
KDE …
SKUPINA PODĽA…
INDEX PODĽA…;

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

Prepojenie 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 sa na optimalizáciu výkonu dotazu môžete pokúsiť umiestniť virtuálnu tabuľku do dočasnej tabuľky, pričom nezabudnite indexovať spojené polia v dotaze dočasnej tabuľky. Je to spôsobené tým, že VT sú často obsiahnuté v niekoľkých fyzických tabuľkách DBMS, v dôsledku čoho sa na ich výber zostaví poddotaz a problém je podobný predchádzajúcemu odseku.

Používanie filtrov na neindexovaných poliach

Jednou z najčastejších chýb pri zostavovaní dopytov je použitie podmienok na neindexovaných poliach, čo je v rozpore pravidlá optimalizácie dopytov. DBMS nemôže vykonať dotaz optimálne, ak je dotaz filtrovaný podľa neindexovaných polí. Ak sa vezme dočasná tabuľka, je potrebné indexovať aj 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é sa nezúčastňujú na podmienke dotazu, nie sú medzi nimi „zaklinené“.

Ak DBMS nezdvihol správne indexy, potom sa naskenuje celá tabuľka – to bude mať veľmi negatívny vplyv na výkon a môže viesť k dlhému 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, dôrazne odporúčame začiatočníci a viac!

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

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

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

  • zoskupenia (príklad: „Nomenklatúra“, „Dodávateľ“...),
  • ukazovatele (príklad: „Množstvo“, „Množstvo“...),
  • dodatočné polia (príklad: „Nomenclature.Service“, „Account.Code“…),
  • filter (príklad: podľa konkrétnej položky, podľa skupiny dodávateľov ...) a
  • triedenie (príklad: „Nomenklatúra. Kód“, „Názov účtu“…)

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ť rozloženie nástroja na tvorbu zostáv pomocou rozloženia rozloženia.

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

2. Kde môžete použiť Zostavovač zostáv?

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

Okrem toho je možné zostavu zostavy použiť v prípadoch, keď nie je potrebný výstup výsledku, ale používateľ potrebuje nakonfigurovať prvky dotazu, napríklad zoskupenia alebo filter (príklad: nahranie položky do súboru xml alebo spracovanie dokumentov účtovanie podľa daného filtra).

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

3. Trochu o pojmoch

Oproti verzii 7.7 došlo vo verzii 8.0 k miernej zmene konceptov, preto sa oplatí na chvíľu sa nad tým pozastaviť.

koncepcia

Popis

Riadkové merania Zoznam zoskupení, podľa ktorých sa bude výstup vykonávať podľa riadkov (príklad: „Nomenklatúra“, „Protistrana“...)
Stĺpové merania Zoznam zoskupení, podľa ktorých 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: „Nomenklatúra. Kód“, „Doklad o predaji. Zodpovedný“…).
Lúka Jedno z polí na výber požiadavky (príklad: „Nomenklatúra“, „Kód dodávateľa“, „Množstvo“, „Suma“…).
Vybrané polia Zoznam vybraných polí obsahuje ukazovatele (príklad: „Množstvo“, „Suma“...) a doplnkové polia (podrobnosti o zoskupení) (príklad: „Nomenklatúra.Skupina“, „Kód účtu“...).
Dostupné polia Zoznam polí dostupných na pridanie do zoskupení, filtrovania, triedenia a vybraných polí. Spravidla je vyplnený zoznamom polí na výber požiadavky, ale je možné ho programovo upravovať (dostupné polia môžete pridávať, meniť a odstraňovať).

Je dôležité pochopiť, že zoskupovanie, filtrovanie, 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 akýsi popis poľa, ktorý sa použije pri pokuse nájsť zhoda medzi poľami výberu dotazu v momente jeho pridávania do zoznamu zoskupení, filtrovania, triedenia alebo vybraných polí.

Zároveň neexistuje spôsob, ako programovo pridať jedno z dostupných polí do niektorého z vyššie uvedených zoznamov, pretože na jednej strane dostupné pole nemá metódy typu „AddTOFilter()“ 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 tvorcu zostáv

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 zostáv;
  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 vlastnosti „Design Layout“ priradiť jedno zo štandardných alebo svoje vlastné rozloženie, a ak bolo automaticky vygenerované rozloženie zostavy zostavy nahradené pevným, spustite funkciu „FinishLayout()“ metóda;
  7. Zavolajte metódu „Execute()“;
  8. Zavolajte metódu "Output()".
Builder = Nový "Tvorca zostáv"; Builder.Text = "VYBERTE POVOLENÉ | CashCompanyBalances.StructuralUnit, | SUM(CashCompanyBalances.AmountBalance) AS Suma | |FROM | Register akumulácie.CashCompany.Balances(, (Štrukturálna jednotka.*)) | |SKUPINA PODĽA | | (Suma) ZAPNUTÉ | VŠEOBECNÉ, | Štrukturálna jednotka"; Builder.FillSettings(); //Tu môžete používateľovi poskytnúť možnosť //zmeniť nastavenia nástroja na tvorbu prehľadov Builder.Layout = GetLayout("CustomLayout");
Builder.DesignLayout = GetDesignLayout(StandardDesign.Classic);
Builder.FinishLayout();
Builder.Run();
Builder.Output();

5. Popis niektorých vlastností zostavy zostavy

Nehnuteľnosť

Popis

Text Obsahuje text dotazu na tvorbu zostáv. Ak text dotazu tvorcu zostáv neobsahuje prvky prispôsobenia „(…)“, 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: „Zostatok tovaru 1. 1. 2004“, „Predaj za január 2004“…).
OutputReportTitle
OutputHatTable
Výstup Všeobecné výsledky
OutputFooterTable
OutputFooterReport
Tieto vlastnosti určujú, či sa zobrazí hlavička zostavy, hlavička tabuľky, celkové súčty, päta tabuľky a päta zostavy.
Výstup podrobných záznamov Vlastník je zodpovedný za nútené zobrazenie alebo zákaz výstupu podrobných záznamov.
Automatické podrobné záznamy Ak je vlastnosť „AutoDetailRecords“ 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 skupín, filtre, vybraté polia a triedenie.
MeasurementsStrings
Merania Stĺpce
Obsahujú zoznam zoskupení podľa riadkov a stĺpcov.
Výber Obsahuje zoznam filtrov určených tvorcom zostáv.
SelectedFields obsahuje zoznam vybraných ukazovateľov a podrobnosti o zoskupení.
objednať obsahuje zoznam triediacich polí.
Parametre Obsahuje zoznam parametrov staviteľa (deklarovaných v texte dopytu staviteľa znakom „&“).
Výsledok Obsahuje výsledok vykonania dotazu tvorcu zostáv (objekt typu QueryResult).

6. Spracovanie prepisu pomocou nástroja Report Builder

Vlastnosť „FillingDecryption“ obsahuje jednu z troch možností na vyplnenie dešifrovania pri výstupe:

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

2. možnosť: zoskupenie hodnôt (pri dešifrovaní 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 je potrebné spracovať udalosť tabuľkového dokumentu „Spracovanie dešifrovania“, kde je potrebné 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ť dešifrovanie, ktorého spracovanie udalosti prebieha v module formulára, na ktorom sa nachádza pole tabuľkového dokumentu. .

Ak sa na vyplnenie prepisu použije tretia možnosť, môžete použiť metódu „Configure Transcript()“, ktorá je navrhnutá na spustenie a zobrazenie správy na základe dešifrovania vykonaného používateľom.

Zostavovač zostáv môže byť rovnaký alebo nový. Keď prispôsobíte dešifrovanie, všetky filtre nástroja na tvorbu vlastných zostáv sa odstránia a pridajú sa všetky filtre, ktoré ste nastavili v pôvodnom nástroji na tvorbu dotazov, plus filtre na zoskupovanie hodnôt z dešifrovania.

7. Návrh správy

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

Vlastnosti „ReportHeaderLayout“, „TableHeaderLayout“, „DetailRecordsLayout“, „GeneralTotalsLayout“, „TableFooterLayout“ a „ReportFooterLayout“ obsahujú názov oblasti v rozložení nástroja na tvorbu zostáv alebo jednotlivých rozložení použitých pri zobrazení názvu zostavy, tabuľky hlavičku, podrobné záznamy, celkové 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í Zostavovača zostáv, nie je potrebné vypĺňať žiadne vlastnosti.

Vlastnosť „DesignLayout“ obsahuje rozloženie použité na návrh rozloženia nástroja na tvorbu zostáv. Dekorácia buniek v rozložení vzhľadu sa použije na bunky rozloženia zostavy.

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

Ak bolo vlastnosti „Layout“ tvorcu zostáv priradené pevné rozloženie, na jeho navrhnutie je potrebné vykonať metódu „FinishLayout()“.

Vlastnosť „DimensionsIn Rows Placement“ 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ť „PlacingDimensionsInColumns“ 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 len vo výsledkoch.
Príklad:

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

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

3. možnosť: v päte (pod nasledujúcimi zoskupeniami a podrobnými záznamami, nad nimi je zobrazený iba popis zoskupenia).

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

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

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

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

3. možnosť: v päte (vpravo od nasledujúcich zoskupení a podrobných záznamov, naľavo od nich sa zobrazí len popis zoskupenia).

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

Nehnuteľnosť " Umiestnenie požiadaviek na merania do riadkov“ definuje jednu z troch možností zobrazenia podrobností o zoskupení 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 v stĺpcoch” 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 meraniami (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 „Execute()“ 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 „Execute()“.

Výstupom metódy Output() je tabuľkový dokument alebo graf. Ak nešpecifikujete objekt, do ktorého sa má výstup 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.ResultChart, "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 vyplniť vlastnosť „DataSource“ 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í Buildera

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 zostavy zostavy s možnosťou určiť, ktoré z nich sú (napríklad: iba filter, filter a triedenie...).

10. Zoskupenia a polia zostavy zostavy

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

Hlavnými prvkami zoskupenia sú

  • „Názov“ (identifikátor atribútu) ​​(príklad: „Nomenklatúra“, „Protistrana“…),
  • „Reprezentácia“ (výstupná prezentácia) (príklad: „Predajný doklad“, „Merná jednotka“...),
  • „PathToData“ (cesta k poľu výberu dopytu) (príklad: „Nomenklatúra“, „Predaj dokumentov.Organizácia“…)

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

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

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

  • „Rozloženie“ – názov oblasti v rozložení zostavy zostavy alebo samostatného rozloženia použitého pri zobrazení zoskupenia.
  • „LayoutHierarchy“ – názov oblasti v rozložení zostavy zostavy alebo v samostatnom rozložení používanom pri zobrazení hierarchie zoskupení.
  • „FooterLayout“ – názov oblasti v rozložení zostavovateľa alebo samostatného rozvrhnutia použitého pri zobrazení päty zoskupenia.
  • „HierarchyFooterLayout“ je názov oblasti v rozložení nástroja Builder alebo samostatného rozložení používaného pri zobrazení päty hierarchie zoskupenia.
  • „BasementLevelsLayouts“ – rad rozložení suterénu pre rôzne úrovne zoskupenia.
  • „LayoutsLevels“ – pole rozložení pre rôzne úrovne zoskupení.

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

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

V zozname 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.
  • „Number()“ – získa počet skupín/polí v zozname.
  • „Nájsť()“ – nájde zoskupenie/pole v zozname podľa názvu.
  • „Clear()“ – vymaže zoznam skupín/polí.
  • “Get()” – získa zoskupenie/pole podľa indexu.
  • “Presunúť()” – presunie zoskupenie/pole o zadaný počet pozícií.
  • “Delete()” - odstránenie zoskupenia/pola zo zoznamu.

11. Tvorca jazykov

Zostavovač má svoj vlastný jazyk. Ide o bežný dopytovací jazyk doplnený o konštrukcie „(…)“. Pomocou týchto konštrukcií môžete opustiť metódu „FillSettings()“ a prispôsobiť zostavu zostavy v texte požiadavky.
Týmto spôsobom si môžete prispôsobiť prvky „SELECT“, „WHERE“, „ORDER BY“, „TOTAL BY“ a tiež urobiť niekoľko ďalších zaujímavých vecí. V tomto prípade bude text dotazu na telo tvorcu predvolenými nastaveniami, 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.*“ umožňuje triedenie podľa „Nomenclature.Code“ alebo výber podľa „Nomenclature.Service“. Ale „Množstvo.*“ nedáva zmysel, pretože pole „Množstvo“ neobsahuje žiadne 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 „TOTALS ON“ obmedzujú zoznam polí pre zoskupenie súčtov.

A teraz zaujímavosti.

Po prvé, v hlavnom texte požiadavky môžete v parametroch zdroja použiť aj konštrukcie (...). Napríklad, ak namiesto
| OD
| Register akumulácie. Spoločnosť Tovar Remains.Remains(&Dátum ukončenia)
naznačiť
| OD
| Register akumulácie.Zostatky tovaruSpoločnosť.Zostatky((&Dátum ukončenia))
potom v tomto prípade bude možné nastaviť filter na pole „Dátum ukončenia“.

Zároveň je v prvom prípade potrebné nastaviť parameter tvorcu zostavy „Dátum ukončenia“, v druhom prípade to nie je potrebné, navyše, ak nie je nastavený výber podľa poľa „Dátum ukončenia“, potom sa tento parameter tabuľky „Register hromadenia. Zostatky tovaru spoločnosti. Zvyšky“ vo všeobecnosti nebude brať do úvahy.

Po druhé, možno zdroje v texte dopytu označiť ako voliteľné ich umiestnením do konštrukcie „(…)“. Napríklad, ak napíšete text dopytu takto

| VYBERTE SI


| Množstvo tovaruSpoločnostiZostatky.MnožstvoZostatok AS MnožstvoPodle šarží
|(VYBERTE
| Spoločnosť Tovar zostávaZostatky Nomenklatúra AS Nomenklatúra,
| Zvyšky tovaruSpoločnosťResiduals.QuantityResidual AS Množstvo,
| Veľa tovaru spoločnosti zostáva. Množstvo zostáva AS Množstvo podľa šarží)
| OD
| Akumulačný register.Zostatky tovaruSpoločnosť.Zostatky AS Zvyšky tovaruSpoločnosťZostatky
| (Pridať sa vľavo
| Softvérové ​​zvyšky tovaru Spoločnosti
|TOTALS AMOUNT (číslo), AMOUNT (číslo podľa šarží) PODĽA
| SÚ BEŽNÉ,
| Nomenklatúra

potom sa ľavé spojenie registrom dávok vykoná len vtedy, ak zoznam vybraných polí obsahuje pole „MnožstvoByLot“.

Po tretie, v parametroch zdroja môžete určiť, že ak sú nastavené filtre, ak je to možné, neaplikujú ich na výsledok dotazu pomocou prvku „WHERE“, ale na samotný zdroj. Teda namiesto toho
| Register akumulácie.Zostatky tovaruSpoločnosť.Zostatky()

má zmysel písať

| Register akumulácie. Spoločný tovar Remains. Remains(, (Nomenklatúra.*, Firemný sklad.*, Objednávka.*, Maloobchodná cena, Charakteristika položky.*))

no, po štvrté najchutnejšie, podľa mňa. Ak je v zdroji špecifikovaný parameter „Periodicity“ (pre tabuľky, ktoré umožňujú príjem obratov), ​​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: |VYBERTE POVOLENÉ | Množstvo tovaruSpoločnostiObraty.Nomenklatúra, | SUM(Veľa tovarovSpoločnostiObraty.CostIncome) AKO CostIncome, | SUM(Veľa tovaruSpoločnostiObraty.NákladyVýdavky) AKO nákladyVýdavky | OD | Register akumulácie.Šarže tovaruSpoločnosť.Obraty(, (&Frekvencia), | (Nomenklatúra.*)) AS Množstvo tovaruSpoločnostiObraty | |SKUPINA PODĽA | Množstvo tovaruSpoločnostiObraty.Nomenklatúra | VÝSLEDKY AMOUNT (CostIncome), AMOUNT (CostExpense) ON | VŠEOBECNÉ, | Nomenklatúra | |(VYBERTE | Šarže tovarov Spoločnosti. Nomenklatúra obratov.*, | Registrátor.*, |Počiatočné obdobie (obdobie, deň) AKO Obdobie Deň, |Počiatočné Obdobie (Obdobie, Týždeň) AKO ObdobieTýždeň, |Počiatočné Obdobie (Obdobie, desaťročie) AKO ObdobieDekáda, |Počiatočné obdobie(obdobie, mesiac) AKO obdobie Mesiac, | Začiatočné obdobie(obdobie, štvrťrok) AKO Štvrťrok obdobia, |Počiatočné obdobie(obdobie, polrok) AKO obdobie Polrok, ​​|Obdobie začiatku(obdobie, rok) AKO ObdobieRok, | SUM(Bat. .CostIncome) AKO CostIncome, | SUM(Tvary TovarovSpoločnostiObraty. NákladyVýdavky) AKO nákladyVýdavky) | |(OBJEDNAŤ PODĽA | Šarže tovaruSpoločnostiObraty.Nomenklatúra.*, | Registrátor.*, |CostIncome, |CostExpense) | |(KDE | Dávka tovaru spoločnosti. Nomenklatúra obratu.*, | Registrátor.*, | SUM(Šarža tovaru spoločnostiObrat.CostIncome) AKO CostIncome, | SUM(Data Tovaru CompanyTurnover.CostExpense) AKO nákladyVýdavky) | |(CELKY ZA | Nomenklatúra.*, | Registrátor.*, | Počiatočné obdobie (obdobie, deň) AKO Obdobie Deň, | Počiatočné obdobie (obdobie, týždeň) AKO ObdobieTýždeň, | Počiatočné obdobie (obdobie, desaťročie) AKO Obdobie, desaťročie, | Počiatočné obdobie (obdobie, mesiac ) AS Obdobie Mesiac, |Obdobie začiatku(obdobie, štvrťrok) AKO štvrťrok obdobia, |Obdobie začiatku(obdobie, polrok) AKO obdobie Polrok, ​​|Obdobie začiatku(obdobie, rok) AKO ObdobieRok)

Existuje jedna nuansa, aby zoskupenie podľa období fungovalo, musíte pridať filter pomocou parametra „Periodicity“. 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 nedošlo k zámene, pretože takýto filter nie je možné pochopiť z hľadiska bežného zmysel. Robí sa to takto

IfReportBuilder.AvailableFields.Find("Periodicity")<>Nedefinované Potom Periodicita = Nedefinované; IfReportBuilder.DimensionsRows.Find("ObdobieRok")<>Nedefinované ORReportBuilder.DimensionsColumns.Find("PeriodYear")<>Nedefinované Potom Periodicita = 9; Koniec Ak; IfReportBuilder.DimensionsRows.Find("PeriodSemiyear")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("PeriodSemiyear")<>Nedefinované Potom Periodicita = 8; Koniec Ak; IfReportBuilder.DimensionsRows.Find("PeriodQuarter")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("Štvrťrok obdobia")<>Nedefinované Potom Periodicita = 7; Koniec Ak; IfReportBuilder.DimensionsRows.Find("ObdobieMesiac")<>Nedefinované ORReportBuilder.DimensionsColumns.Find("ObdobieMesiac")<>Nedefinované Potom Periodicita = 6; Koniec Ak; IfReportBuilder.DimensionsRows.Find("PeriodDecade")<>Undefined OR Report Builder.DimensionsColumns.Find("PeriodDecade")<>Nedefinované Potom Periodicita = 5; Koniec Ak; IfReportBuilder.DimensionsRows.Find("PeriodWeek")<>Nedefinované ORReportBuilder.DimensionsColumns.Find("PeriodWeek")<>Nedefinované Potom Periodicita = 4; Koniec Ak; IfReportBuilder.DimensionsRows.Find("PeriodDay")<>Nedefinované ALEBO Zostavovač prehľadov.DimensionsColumns.Find("PeriodDay")<>Nedefinované Potom Periodicita = 3; Koniec Ak; IfReportBuilder.DimensionsRows.Find("Recorder")<>Nedefinované ALEBO Report Builder.DimensionsColumns.Find("Recorder")<>Undefined OR Report Builder.SelectedFields.Find("Registrar")<>Nedefinované Potom Periodicita = 2; Koniec Ak; Ak Periodicita<>Undefined Then SelectionBy Periodicity Field = Report Builder.Filter.Add("Periodicity"); Pole SelectionBy Periodicity.Value = Periodicity; SelectionBy Periodicity Field.Use = true; Koniec Ak; Koniec Ak; Builder.Run(); Ak Selection FieldBy Periodicity<>Undefined ThenReportBuilder.Filter.Delete(ReportBuilder.Filter.Index(FilterBy PeriodicityField)); Koniec Ak;

12. Prispôsobenie Buildera

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 , „Selection Builder“, „SelectedFields Builder“ alebo „Order.Builder“.

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

Pri vývoji zostáv je niekedy potrebné zobraziť zostavu, pre ktorú nie je možné získať údaje pomocou jazyka dotazu. Takáto situácia môže nastať napríklad vtedy, ak sa na výpočet údajov použije nejaký zložitý algoritmus, alebo sa údaje pre výstup správy nezískajú z informačnú základňu, 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,
  • AreaCellsSpreadsheetDocument,
  • tabuľková časť,
  • RegisterAccumulationRecordSet,
  • RegisterInformationRecordSet,
  • Registrovať AccountingSetRecords,
  • RegisterCalculationSetRecords.
Na to, aby tvorca zostáv zobrazil zostavu pre ľubovoľný zdroj údajov, stačí nastaviť popis zdroja údajov vo vlastnosti DataSource zostavovača. Vlastnosť DataSource tvorcu zostáv 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,
  • PathToData - obsahuje popis závislosti stĺpcov na sebe. Stĺpec, ktorého dátová cesta je odvodená 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 ktorého dátovej cesty je reprezentácia získaná. 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“, tento stĺpec sa bude považovať za atribút stĺpca „Číselník“. Stĺpec s dátovou cestou „Nomenclature.Representation“ sa bude považovať za reprezentáciu stĺpca „Nomenklatúra“,
  • Pole – znamenie, že tento stĺpec možno použiť ako pole prehľadu,
  • Objednávka - znamenie, že pre tento stĺpec je možné objednávanie,
  • Výber - znamenie, že v tomto stĺpci je možné vykonať výber,
  • Dimenzia – označenie, že tento stĺpec možno použiť ako zoskupenie výkazu,
  • Celkom – reťazec obsahujúci výraz na výpočet súčtu. Pre nástroj na tvorbu zostáv zodpovedá výraz pre tento reťazec výrazu na výpočet súčtu použitého v jazyku dopytu,
Pri nastavení zdroja údajov na objekt DataSourceDescription sa popisy stĺpcov vytvoria a vyplnia automaticky.

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

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

ReportBuilder.DataSource = New DataSourceDescription(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 všetky svoje funkcie, s výnimkou zobrazovania hierarchických súčtov. Okrem toho pri práci s ľubovoľným zdrojom údajov nemôže tvorca zostáv prijať dotaz, ktorý sa použije na získanie údajov z informačnej databázy.

Operácia zostavovača dotazov s ľubovoľným zdrojom údajov je identická s operáciou s ľubovoľným zdrojom zostavy zostavy.

Ôsma verzia platformy 1C ponúka množstvo nových konfiguračných objektov, z ktorých každý má svoje vlastné metódy a vlastnosti na zjednodušenie procesu vývoja aplikácií a optimalizáciu výkonu. Jedným z nich je Report Builder.

O tom, čo je tvorca zostáv v 1s, aké funkcie vykonáva a akú aplikáciu našiel v programovaní, a rád by som hovoril v tomto článku.

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ť buniek 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 je možné preniesť text žiadosti, ktorého výsledok je potrebné zobraziť.

Obrázok 1 zobrazuje časť kódu, ktorá umožňuje pomocou "Tvorcu zostáv" zobraziť ľubovoľnú tabuľku hodnôt

Zrejmým prípadom použitia pre staviteľa je teda navrhovanie správ. Menej zrejmým spôsobom použitia nástroja na tvorbu je použiť ho na prispôsobenie rôznych prvkov dotazu (zoskupení, filtrov atď.) používateľom.

Mimochodom, výsledok vykonania kódu znázorneného na obr. 1 je možné vidieť na obr

Obr.2

Nastavenie Buildera

Report Builder v istom zmysle pripomína systém na zostavovanie údajov a možno ho použiť v prípadoch, keď je ACS z toho či onoho dôvodu nedostupný alebo existuje možnosť, že nebude fungovať správne.

Rovnako ako SKD builder obsahuje:

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

Nastavenia rozloženia vzhľadu staviteľa umožňujú rôzne úrovne a jemné detaily.

Algoritmus na použitie nástroja Builder

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

  1. Deklarujeme vytvorenie nového objektu typu ReportBuilder;
  2. V tomto bode môžete buď použiť QueryBuilder na vytvorenie textu výberu, alebo použiť existujúci výber pomocou objektu DataSourceDescription;
  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 rozloženia tvorcu;
  5. Ak sa nepoužije DataSourceDescription, v tejto fáze je potrebné vykonať dotaz, použite metódu Execute();
  6. Posledným krokom je spustenie metódy Output(), výstup môže byť vykonaný v tabuľkovom dokumente alebo v príslušnom formulárovom prvku.

Použitie dešifrovania v builderi

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

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

  1. Hodnoty zoskupenia – keď je bunka aktivovaná, použije sa v nej uvedená hodnota zoskupenia;
  2. Nevyplňovať – predvolená hodnota, čo znamená, že pre konečný výsledok sa nepoužije žiadne dešifrovanie;
  3. Dešifrovanie - štruktúra dešifrovania bude vyplnená hodnotami všetkých zoskupení pôvodného výberu.

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

Obr.3

Príklad použitia nástroja Builder na aktiváciu filtrov v zostave

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

  1. Začnime vytvorením externej zostavy a pridaním atribútu s ľubovoľným názvom a zadaním ReportBuilder (obr.4);

Obr.4

  1. Vytvorte formulár zostavy a umiestnite naň objekt rozhrania TableField, napíšte ho ako Selection a priraďte ho k vlastnosti Selection vytvoreného atribútu Obr.5

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í 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 podmienky zostavovateľa a jeho ďalšie nastavenia sú uvedené na príslušnej záložke Obr. 7;

Obr.7

  1. Podmienky výberu špecifikované v zložených () zátvorkách textu 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ý so stlačením tlačidla 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 myslíme si, že je možné si o ňom urobiť predstavu a začať ho používať, berúc do úvahy získané poznatky.