ACS není jen pro reporty - implementace univerzálních výběrů. Použití výběrů v SCD Jak provádět výběry bez SDS

Pro zápis zpracování museli programátoři často používat dotazy k získání dat a jejich následnému zpracování. Data byla zase získána z žádosti. No, požadavek bez výběru nebo filtru je vzácný. Promluvme si o výběru v takových požadavcích pomocí příkladu požadavku:

Aby mohl programátor organizovat výběr podle protistrany pro uživatele v běžné podobě, musel do formuláře umístit tři prvky, které vypadaly asi takto:

Kolik úsilí dá programátorovi popsat různé typy porovnávání (stejné, nerovné, v seznamu, ve skupině...) a na základě těchto typů porovnávání zpřesnit svůj finální požadavek na získání dat.

Podívejme se, jak to lze provést pomocí ACS. V našem zpracování vytvořte Layout s typem Data Composition Scheme a vyplňte jej naším požadavkem:

Na záložce Nastavení přidáme nové seskupení bez podrobností a v našem příkladu pole Účet, protože nakonec vše dostaneme do tabulky hodnot:

A na kartě Výběr přidejte do výběru protistranu:

Nyní začneme vytvářet formulář. Ukážeme si na podobě samotného zpracování Výběr, se kterým bude uživatel pracovat. Na formuláři zobrazíme prvek typu Table Field a dáme mu název Selection s datovým typem Composer.Settings.Selection:

Nyní vytvoříme obslužné rutiny událostí pro formulář OnOpen a obslužnou rutinu pro kliknutí na tlačítko Spustit, kód je uveden níže:

Rozložení perem; Postup ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); Výstupní procesor = nový výstupní procesor výsledku skládání dat do kolekce hodnot; OutputProcessor.SetObject(Result); OutputProcessor.Output(CompositionProcessor); If FormElements.Result.Columns.Quantity() = 0 Then FormElements.Result.CreateColumns(); endIf; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = New SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Konec procedury

Zpracování je připraveno, po jeho spuštění můžete v našem Výběru okamžitě vidět Protistranu, která se objevila v našem Výběru, ze kterého si můžete vybrat jakýkoli typ srovnání a také přidat další výběrové řádky pomocí podrobností z adresáře Protistrany:

To je vše, doufám, že vám tento článek pomůže zlepšit flexibilitu výběru ve vašem zpracování.

Kononov Sergej

K čemu lze SKD využít?

Stanovený názor je pro účely podávání zpráv.

Ve skutečnosti Možnosti ACS přesahují vytváření univerzálních sestav.

A dnes si ukážeme jak pomocí systému řízení přístupu bude uživatel schopen konfigurovat flexibilní výběr dat. Dále bude tento výběr použit při získávání a zpracování dat.

Pro jaké úkoly to bude užitečné?

Pojďme dát příklady z typických konfigurací:

  • Zpracování „Nahrávání dat na web“
  • Tvorba ceníku
  • Nahrávání dat do TSD (terminál pro sběr dat)
  • Segmentace produktů, partneři
  • Tvorba objednávek (klientů, dodavatelů) dle potřeb
  • Plánování oprav v 1C:ERP.

To znamená, že nástroj je užitečný všude tam, kde je potřeba poskytnout uživateli široké možnosti výběru.

Vytváření náhodného výběru v řízené formě pomocí ACS

Lekce zahrnuje práci s tvůrce nastavení schémata rozložení dat:

  • Výstup výběru na formuláři
  • Softwarové propojení mezi tvůrcem nastavení a schématem rozložení
  • Vytváření výchozích výběrů v systému řízení přístupu.

Příjem dat z databáze s filtrováním podle výběru ACS

Video ukazuje, jak můžete vybrat data pomocí dříve nastaveného výběru v nástroji pro vytváření nastavení.

Je použit „děsivý“ předmět – ProcessorOutputResultCompositionDataIntoValueCollection.

Ve skutečnosti není vše tak složité - za 8 minut problém vyřešíme.

Ukládání výběrů SKD do informační databáze

V lekci se podíváme uložení nastavení ACS Builder pomocí Value Store.

Pojďme zjistit, jak tento problém vyřešit v konfiguraci „1C: Manufacturing Enterprise Management 1.3“.

Užijte si sledování! :)

Obecně ACS poskytuje mnoho příležitostí.

Zde je několik „triků“, které jsme ani nestihli popsat na stránce kurzu.

Pokud potřebujete sbírat data z různých zdrojů, jsou tři možnosti.

Můžete zkusit sestavit jeden „univerzální“ dotaz na všechna data (dlouhý), můžete zobrazit data několika dotazů ve smyčce (tuhá, nepružná struktura) – nebo můžete jednoduše použít ACS a připojení datových sad místo jedné žádosti.

Současně je důležité získat správné výsledky - to má své zvláštnosti, pokud existuje více zdrojů

S pomocí SKD můžete jednoduše získat aktuální snímek pro každé datum v přehledu.

Nebo pro upřesnění - získat cenu produktu pro každé datum prodeje.

S pomocí ACS můžete organizovat zobrazení všech dat za období v přehledu, a to nejen ty, pro které byly v přehledu údaje (přidání dat bez programování, pouze s možnostmi systému kontroly přístupu)

Pomocí ACS můžete organizovat vnořená seskupení s přidáním období (rok/čtvrtletí/měsíc atd.)

Uspořádejte sestavu podle potřeby, například zobrazte záhlaví sloupce svisle a údaje v tomto sloupci vodorovně.

Umožněte uživateli zvolit frekvenci, s jakou se budou data zobrazovat ve výkazu (po roce, po čtvrtletí, po měsíci) - pouze podle nastavení, bez úpravy modulu výkazu.

Jak zkombinovat několik podmínek pomocí OR v sestavě? Tato možnost například není dostupná v sestavě sestavy, ale je dostupná v ACS

Pokud zobrazujete souhrnná data ve formě grafu, musíte být schopni přesně ovládat jejich vzhled: viditelnost značek pro řadu, střídání barev sérií grafu, oddělování minulých dat od budoucích dat v grafu svislou čarou , atd.

Samozřejmě existují nuance, kterým je třeba věnovat pozornost.

Při vytváření sestavy vývojář odladil text dotazu, ale při použití tohoto dotazu v sestavě v systému řízení přístupu systém vytvoří nesprávný výsledek.

Proto je důležité mít možnost získat dotaz, který systém skutečně provede pro získání dat z databáze, a takový dotaz odladit.

Při přidávání podrobností do záznamníku dokumentů do zprávy systém někdy vytváří „nesprávné“ počáteční a konečné zůstatky.

Proto je důležité správně nakonfigurovat pole ve zprávě o systému kontroly přístupu tak, aby se zůstatky zobrazovaly správně jak s podrobnostmi dokumentu, tak bez nich.

Výsledek sestavy se může změnit v závislosti na tom, kde je nakonfigurován výběr podle hodnoty zdroje – na úrovni sestavy a na úrovni jednotlivé skupiny to musíte sledovat.

Pokud chceš ovládnout ACS profesionálně a denně uplatnit ve své práci, přihlaste se do kurzu:

Podpěra, podpora - 2 měsíce. Rozsah kurzu - 34 vyučovacích hodin.

Neodkládejte studium!

Rozšíření dotazovacího jazyka pro systém skládání dat

Rozšíření dotazovacího jazyka pro systém skládání dat se provádí pomocí speciálních syntaktických instrukcí uzavřených ve složených závorkách a umístěných přímo v textu dotazu.

Syntaktické prvky rozšíření dotazovacího jazyka systému skládání dat

VYBRAT

Tato věta popisuje pole, která bude uživatel moci vybrat pro výstup. Za tímto klíčovým slovem jsou uvedeny aliasy polí z hlavního výběrového seznamu dotazů, které budou dostupné pro konfiguraci, oddělené čárkami.

Například:

(VYBRAT položku, sklad)

Za aliasem pole může být kombinace znaků „.*“, která označuje možnost použití podřízených polí z tohoto pole.

Například položka Nomenclature.* označuje možnost použití podřízených polí pole „Nomenclature“ (například pole „Nomenclature.Code“). Element SELECT se může objevit pouze v prvním spojovacím dotazu.

KDE

Jsou popsána pole, na která může uživatel použít výběr. Tento návrh používá pole tabulky. Použití aliasů polí výběrového seznamu není povoleno. Každá část sjednocení může obsahovat vlastní prvek WHERE.

(Nomenklatura WHERE.*, Sklad)

Jednoduchý příklad

Je nutné získat tržby za období + zobrazit celou položku bez ohledu na to, zda byly tržby nebo ne. To znamená, že je třeba vybrat údaje z obratové tabulky evidence tržeb, údaje z adresáře názvosloví. Přeskočme otázku, proč potřebujeme celou nomenklaturu.

Chcete-li problém vyřešit, můžete vytvořit dotaz, který spojí položku a tabulku Obrat prodeje levým spojením, v důsledku toho pro položku, která se ve vybraném období neprodala, získáme hodnoty pole Protistrana, Dohoda, Množství, Součet= Null. Tento požadavek:

SELECT ReferenceNomenclature.Link AS Nomenklatura, ProdejObrat.Protistrana, ProdejObrat.Dohoda s protistranou, ProdejObrat.MnožstvíObrat AS Množství, ProdejObrat.CostObrat JAKO náklady Z Reference.Nomenklatura JAKO ReferenčníNomenklatura LEFT POccoverumSprejcecluS RegistrA SPR. Odkaz = SalesTurnover.Nomenklatura

Zde je výsledek:

Protistrana Dohoda Nomenklatura Množství Součet
nula nula _Test1 nula nula
LLC "Rohy a kopyta" Dohoda1 Bačkory 10 1200
"Gazprom" Hezká smlouva Boty 5 13000
nula nula Galoše nula nula
nula nula Břidlice nula nula

V tomto příkladu nedošlo k žádnému prodeji položek: „Návleky“ a „Přezůvky“

A vše by bylo v pořádku, pokud vzorek seskupíme podle protistrany, pak všechny neprodané položky budou spadat do samostatné skupiny, kde Protistrana = Nula, ale klient chce mít v sestavě náhodný výběr polem protistrany (přirozeně, toto znamená protistranu z evidence tržeb). Co bych měl dělat? Koneckonců, ve skutečnosti potřebujeme pouze filtrovat tabulku Odbyt. Pokud v konstruktoru ACS použijeme automatické doplňování, budou dostupná výběrová pole toto pole obsahovat Protistrana, vše se zdá být v pořádku, ale při provádění reportu s výběrem protistranou ztratíme všechny záznamy ze spojení s položkou. Nastavíme například výběr: Protistrana = LLC "Rohy a kopyta". Výsledek bude vypadat takto:

Vůbec ne to, co potřebujeme, že?

Pro vyřešení problému můžete samozřejmě do dotazu přidat parametr, například k parametrům virtuální tabulky Prodej Obrat, ale zároveň se ztrácí flexibilita nastavení typu srovnání.

Existuje řešení: pro toto in tvůrce dotazů na kartě Složení dat => Tabulky přidat pole podmínky do podmínek virtuální tabulky Prodej Obrat a změnit jeho přezdívku na Výběr protistrany

Abychom uživatele nezmátli výběrovými poli, pole podmínky zakážeme Protistrana a změňte název pole Výběr protistrany


V důsledku provedení tohoto schématu s výběrem povoleným polem protistrany bude mít výsledný dotaz podobu:

SELECT SprNomenclature.Link AS Nomenklatura, ProdejObrat.Protistrana AS Protistrana, ProdejObrat.Dohoda s protistranou JAKO Smlouva protistrany, ProdejObrat.MnožstvíObrat AS >Množství, ProdejObrat.CostObrat AS Cena, PRESENTATIONuLINKCounterSalesSales) ATIONLINK (Prodejní obrat. Protistrana ) AS Prezentace protistrany, Nomenklatura Spr.Prezentace AS Nomenklatura Prezentace Z Adresáře. Nomenklatura AS Nomenklatura Spr LEVÉ PŘIPOJENÍ Registrovat Accumulations.Sales.Turnover(&P , , , Counterparty = &P3 ) AS SalesTurnover BY SprNomenclature.Linku SalesTNomenclature

A podle toho výsledek:

Protistrana Dohoda Nomenklatura Množství Součet
nula nula _Test1 nula nula
LLC "Rohy a kopyta" Dohoda1 Bačkory 10 1200
nula nula Boty nula nula
nula nula Galoše nula nula
nula nula Břidlice nula nula

Test1 je skupina v adresáři Nomenclature, ve které se vše nachází

K publikaci je připojeno schéma XML sestavy použité v publikaci. Vytvořil jsem obvod v integrované automatizaci, ale myslím, že vše bude fungovat dobře v UPP i UT 10

Shrnutí

Tento příklad ukazuje, jak vytvořit vlastní nastavení výběru v systému řízení přístupu a deaktivovat automaticky vytvořená nastavení, pokud navrhujete obvod s povoleným příznakem Automatické vyplňování.

Pokud máte dostatek zkušeností na vytváření obvodů bez použití Automatické vyplňování- pak tato rada nedává smysl.

Použitý software

  • Program pro snímky obrazovkySnimOK!
  • Editor souborů XML