Nastavení a možnosti pro zprávy o úložném systému. Nastavení a možnosti zpráv o uživatelském nastavení systému řízení přístupu programově

💖 Líbí se vám? Sdílejte odkaz se svými přáteli

Domnívám se, že není třeba vysvětlovat, co je systém kontroly přístupu, skladatel nastavení a obecně celá sada objektů navržených pro práci se systémem kontroly přístupu. Hlavními oblastmi použití, nepočítaje záludné akce v kódu, jsou dynamické seznamy a sestavy a v obou případech zůstává v pozadí velmi významná funkcionalita. Často ani nepřemýšlíme o logice chování a vztahů všech účastníků procesu, protože Obvykle řešíme poměrně jednoduché problémy nebo se spoléháme na výchozí nastavení platformy. Ale tam, kde jsou mlčení, existuje také vnitřní logika, jakási „medvědí služba“ 1C, jejíž plody je někdy obtížné a zjevné překonat, aby bylo dosaženo požadovaného účinku, a zároveň stačí jen správně používat nástroje.

Zájemci mohou přeskočit díly 1-4 a přejít rovnou k příkladům.

Pokusím se trochu podrobněji pozastavit nad fungováním ACS výběrů pro případ jejich použití v reportech. Věřím, že chování v dynamických seznamech bude s řadou výhrad podobné. Takže výběry v reportech, trocha teorie a pak konkrétní příklady.

Jsou použity SP 8.3.6 a vyšší, sekce ITS (článek 10.3.7.5 atd.), kniha „Profesionální rozvoj v systému 1C-Enterprise 8“ (Kazan, 2012, druhý díl). V knize E. Khrustaleva nebylo na toto téma vůbec nic srozumitelného.

Část 1

Tvůrce nastavení, jak víte, má kolekce „Nastavení“, „Pevná nastavení“ (dále jen „FN“) a „Vlastní nastavení“ (dále jen „CU“). Zpráva může mít několik možností a spojení mezi možností N, PN a FN jsou velmi unikátní. Nezapomínejme také na zdroj dostupných nastavení a jeho „progenitor“, což je obvykle samotný obvod, který má také své vlastní výchozí nastavení.

* Nastavení – nastavení vytvořená v režimu Konfigurátor a změněná v režimu úpravy verze sestavy;

* UserSettings – nastavení, která uživatel změní v režimu „1C:Enterprise“ čistě přes rozhraní;

* FixedSettings – tato nastavení, která jsou nastavena z vestavěného jazyka, vč. jsou implicitně nastaveny systémem. Tato vlastnost obsahuje hodnoty výběru, které se přenášejí do formuláře pomocí jeho parametrů (struktura „Výběr“).

Nastavení a FN mají podobný design a mají kolekci „Výběr“ typu „Výběr složení dat“, která je k dispozici pro změnu složení kdykoli během existence zprávy. Současně jsou k dispozici Nastavení pro změny rozhraní prostřednictvím úpravy varianty, ale FN nejsou vůbec přístupné. PN je zase „kaše“, kde rovnými prvky mohou být jak samotný „Výběr“, tak jednotlivé objekty typu „Prvek výběru datové kompozice“ (tzv. vnořený objekt). Navzdory dostupnosti vhodných metod není možné programově změnit složení kolekce prvků PN, pokud se jedná o PN samotné sestavy a nejsou vytvořeny „od nuly“ návrhářem - 1C oznámí, že „Sbírka uživatelů nastavení nemůže změnit jeho složení, protože je spojeno s daty nastavení rozvržení." ITS říká: „Na nemovitost nelze zapisovat pomocí vestavěného jazyka.“, ale jak uvidíme později, je možné ovlivnit PN. „Kaše“ objektů má vnitřní souvislosti – kontroluje se konzistence podmínek při generování reportu a při změně složení. Na ITS čteme: „Prvky, které jsou samy označeny jako vlastní, nebudou přidány. Vlastní výběr například nebude obsahovat prvek výběru, který je označen jako vlastní. Prvky obsahující vlastní prvky nebudou přidány. Například skupina podmínek nebude přidána, pokud skupina obsahuje prvky označené jako vlastní. U vnořených prvků se vlastnost DisplayMode neanalyzuje. Přidávají se nebo nepřidávají spolu s nadřazenými prvky." „Seniorita“ objektů tedy funguje v zákulisí. V tomto případě můžete získat efekt, když vám rozhraní umožňuje zadat protichůdné výběry pro variantu a její PN, stejně jako v rámci PN.

Zdálo by se, že možností je „senior“. Ale kliknutím na „Více“ / „Možnost změny“ a potvrzením změn v otevřeném formuláři vyvoláte obsluhu události formuláře , v tomto případě se výběr objeví v panelu "Základní" ve formuláři vyvolaném z "Nastavení..." a objeví se ve formuláři zprávy, ale NENÍ zobrazen na kartě "Výběr"; Navíc se buď objeví okamžitě jak ve formuláři hlavní sestavy, tak ve formuláři „Nastavení...“ (pokud je příznak „Zahrnout do uživatelského nastavení“), nebo ani tam, ani tam. Ale v žádném případě NEBUDE na záložce „Výběr“ formuláře „Nastavení...“. Rozdíl mezi záložkou „Základní“, formulářem „Nastavení...“ a hlavním formulářem výkazu je dán polem „Režim úprav“ (normální – pouze v „Nastavení“, rychlý – i na samotném formuláři výkazu), ale myslím, že to ví každý. Mimochodem, hodnoty „Selection“ a „Fast“ nejsou nijak synchronizovány a mohou si odporovat, ale „Fast“ ve formuláři zprávy a ve formuláři nastavení jsou přísně synchronní. Takže, když upravíte variantu, sama se změní (ale její ID a název se nezmění), ale PN zůstanou nezměněny (tj. i když o nich mluvíme, tj. o příznaku pro zahrnutí toho či onoho). prvek v PN ).

Kliknutí na „Vybrat možnost...“ a potvrzení změn ve formuláři, který se otevře, spustí události v následujícím pořadí:

Při nahrávání OptionOn Server

Při aktualizaci složení uživatelských nastavení na serveru

V tomto případě se volba ani PN nijak nemění. Odtud je zřejmé, že možnost a nastavení, pokud jsou připojeny, nejsou v žádném případě přímo.

Kliknutím na „Nastavení...“ a potvrzením změn v otevřeném formuláři se pouze spustí událost Při aktualizaci složení uživatelských nastavení na serveru(v tomto případě se PN změní, ale pohledy a klíče (pokud tam nebyly) nejsou přijímány; pokud je pro prvky objektu PN „Výběr“ povoleno „Rychle“, pak kromě „Výběr“ jeho skutečné prvky se zobrazí jako pole, tj. chová se podobně jako vnořené prvky. Tato nastavení se při zavření uloží a obnoví se při příštím vstupu do formuláře.

Kliknutí na "Více"/"Nastavit standardní nastavení" ve formuláři nastavení (stejně jako na položku "Standardní nastavení" v editaci volby) pouze spustí událost Při aktualizaci složení uživatelských nastavení na serveru. V tomto případě se volba změní, ale změní se PN. Pokud byla volba změněna dříve, zůstane změněna (neresetuje se ani změněný příznak, ani se neresetuje aktuální nastavení).

Kliknutím na „Vlastnosti prvku vlastního nastavení“ ve stromu struktury ve formuláři pro úpravu variant přidáte objekt „Výběr“, který se ukáže jako prázdný a není nijak synchronizován s existujícím výběrem variant a existujícími vnořenými prvky výběru varianta se nijak nemění.

Z toho plyne doporučení: pokud potřebujete nastavit určité výběry v režimu „Konfigurátor“, abyste se nevrtali s kódem a aby nebyly ve volbě, ale byly by v rozhraní sestavy, neměli byste s výběrem manipulovat prvků volby, změnou jejich vlastností, ale samotným výběrem pomocí tlačítek „Vlastnosti prvku…“ a „Vlastní nastavení“.

Přidání něčeho, co se objeví v Nastavení, do PN vyžaduje akce v kódu nebo rozhraní, ale smazání a vymazání Nastavení ovlivní PN okamžitě a bez jakýchkoli aktualizací, například:

Report.SettingsLitter.Settings.Selection.Items.Clear();

Před uzavřením formuláře hlášení se systém zeptá pouze na to, zda došlo ke změnám varianty. Pokud došlo ke změnám PN, budou automaticky uloženy bez jakýchkoliv otázek a také se automaticky pokusí uplatnit v další relaci práce s přehledem.

Poznámky:

V případě řady chyb v aplikaci nastavení se nejprve zobrazí hláška o problému a poté stále dochází ke skladbě, událost je tzv. a generování zpráv. V tomto případě jsou FN, i když existovaly, stále ignorovány a roli hrají pouze Nastavení.

Přidání výběru na formuláři „Změnit možnost“ se provádí okamžitě s nastaveným příznakem „Zahrnout do PN“, ale opakuji, z hlediska vestavěného jazyka zůstává PN nezměněn.

Nastavení variace varianty a nastavení variace PN spolu přímo nesouvisí, jedná se o dva různé směry změn.

PN má mimo jiné „Další nastavení“. Nikdy jsem nedokázal pochopit, čím a v jakém okamžiku jsou naplněny. Přestože sestava obsahuje nastavení „označená ve výběru a podmíněném návrhu“ jako vlastní (podle společného podniku), další nastavení se ve všech případech ukázalo jako prázdné. Na ITS o tom nic není.

Navzdory prohlášení ve společném podniku jsou PN perfektně serializovány v xml.

Pokud jsou pro použití zahrnuty jak nezávislé prvky výběru, tak výběr samotný, je sestava sestavena správně, ale při zobrazení duplikuje informace o vytvořeném výběru v konečném rozložení.

Výchozí formulář pro úpravu verze sestavy obsahuje mnoho zajímavostí, ale nikde nefunguje s FN a PN a i se základním nastavením funguje spíše na čtení (až na to, že vymaže výběr, pořadí, konvence).

Část 2

Práce s Settings a FN prostřednictvím jejich kolekce je téměř vždy přijatelná, ale je důležité si uvědomit, že podstata „třetí úrovně“ se mění. První úroveň vždy obsahuje výchozí nastavení samotného systému řízení přístupu, která se také implicitně objevují ve zdroji dostupných nastavení; na druhé úrovni – nastavení použité volby. Zde však logika umožňuje buď „přepsat“ základní instrukce, nebo je ignorovat. Ale práce s PN již neumožňuje svobody a jemné manipulace musí být prováděny pomocí speciálních metod a někdy dočasných pomocných zprostředkovatelských objektů, například:

Comp=NewDataCompositionSettingsComposer; // můžete také spustit // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadCustomSettings(comp.CustomSettings);

Tvůrce nastavení má metodu (), který načte hodnoty uživatelského nastavení předané jako parametr metodě. Metoda GetSettings() umožňuje získat kopii aktuálního nastavení (s ohledem na uživatelská nastavení). Metoda Stáhnout Nastavení() načte předaná nastavení do tvůrce nastavení (uživatelská nastavení se také znovu naplní na základě předaných dat s přihlédnutím k přítomnosti klíčů, viz příklad níže).

Použití vlastního nastavení na hlavní nastavení se provádí v metodě GetSettings() tvůrce nastavení. Provádějí se následující akce:

* U typů DataCompositionSelectionElement se obsah prvků zkopíruje do odpovídajících prvků vlastního nastavení.

* U typů Výběr rozvržení dat zůstávají prvky umístěné v hlavním nastavení a označené jako Nepřístupné beze změny. Prvky z PN se převádějí na hlavní. Jsou přidány na konec kolekce pro Selection.

* U typů DataCompositionSelectionElementGroup se vlastnost Usage nastavuje v odpovídajícím prvku hlavního nastavení (na základě znaménka použití prvku PN).

Část 3

Při vytváření konečných nastavení, abych citoval ITS, se různé možnosti nastavení kombinují následovně:

* Pokud je jakýkoli typ nastavení zcela označen jako vlastní, pak výsledná nastavení zahrnují PN. V tomto případě, pokud jsou některé prvky nastavení označeny jako nedostupné, pak tato nastavení budou umístěna do výsledného nastavení z vlastnosti Settings Composer.Settings.

* Pokud je jakýkoli typ nastavení označen jako vlastní ne zcela, ale prvek po prvku, pak prvky označené jako vlastní budou převzaty do výsledného nastavení z vlastnosti Settings Composer.CustomSettings a prvky označené jako nedostupné budou převzaty do výsledná nastavení z vlastnosti Settings Composer.Settings .

* Pevná nastavení jsou přidána k výsledným nastavením "tak jak jsou". V tomto případě je nepřijatelná situace, kdy FN a PN mají nastavení stejného názvu, například výběr se stejnou levou hodnotou v podmínce. Podotýkám, že i úplná shoda všech vlastností těchto podmínek je zakázána. Abych byl upřímný, je to trochu nelogické.

Chtěl bych poznamenat, že pokud jakýkoli fragment nastavení podléhá funkční možnosti a musí být omezen, systém funguje „tiše“ - odebere tento fragment odkudkoli, nic nehlásí a během programových manipulací s takovým fragmentem , zpracovává „nečinné“ chyby, nevytváří, ale kód také nemá žádný účinek. Je však možné, že se různá vydání chovají odlišně.

Část 4.

Rozšíření formuláře reportu nám poskytuje parametry „FN“ a „PN“, ale nikde se nedoporučuje vyplňovat je přímo předáním do formuláře. Jak ukázaly experimenty, bez dalších tanečků s tamburínou je obsah těchto parametrů ignorován - je přepsán při inicializaci linkeru během procesu otevírání a při příjmu dříve uložených PN. Doporučuje se pracovat s PN klíči, pomocí kterých je můžete načíst z úložiště nastavení a následně je otevřít a použít, a to se děje automaticky na straně formuláře hlášení, nikoli na volacím formuláři.

Parametr „Source of AvailableSettings“ je automaticky přeložen do informací o tvůrci při vytvoření formuláře na serveru a nelze jej přepsat. Nebo spíše může, ale to se projeví až po úplném předefinování celého řetězce souvisejících objektů. V čem GetSourceAvailableSettings() vrátí Nedefinováno až do konce všech událostí otevření formuláře.

Dovolte mi poznamenat, že parametry formuláře, které v podstatě nejsou klíčovými parametry, „roztahují“ svou činnost na několik událostí, pokud je při otevírání nastaven příznak formace. Ano, v akci ProcessingCheckFillOnServer, vyvolané během otevírání a formování, bude k dispozici parametr „Výběr“, ale s ním, ale vyvolaný pouhým kliknutím uživatele na tlačítko „Generovat“, již nebude dostupný. To je způsobeno tím, že všechny tyto události jsou zpracovány v jedné „návštěvě“ na serveru, pokud je povolena formace při otevírání, a až na samém konci je řízení přeneseno na klienta a voláno PřiOtevření. V tomto případě se přirozeně ztratí neklíčové parametry.

Obecné pořadí provádění událostí při otevírání formuláře s příznakem pro vygenerování zprávy při otevření (o něco více, než je popsáno v části „Profesionální rozvoj“):

Když CreatedOnServer

Před nahráním možnosti na server

Při nahrávání OptionOn Server

Před nahráním uživatelských nastavení na server

Při načítání uživatelských nastavení na server

Při aktualizaci složení uživatelských nastavení na serveru

ProcessingCheckFillOnServer

PřiOtevření

V tomto případě se volba ani PN nemění, pokud nebylo vynaloženo zvláštní úsilí.

Část 5.

Nyní se podíváme podrobněji na úkol otevřít formulář sestavy s jeho konstrukcí a předem zadaným výběrem. Stručné informace o tom jsou v ITS a v metodických doporučeních, ale tam je pokryt pouze samotný princip a jemnosti nejsou zveřejněny. Chcete-li tedy kontextově volat sestavu, musíte jejímu formuláři předat parametr „GenerateOnOpen“ rovný True; a parametr Selection obsahující strukturu. Klíče struktury jsou názvy polí ACS nebo parametrů ACS a hodnoty jsou jejich hodnoty. Cituji SP, pokud existuje parametr ACS s názvem odpovídajícím názvu klíče struktury, pak bude hodnota nastavena na něj. Pokud není uveden žádný parametr, ale existuje pole, bude do tohoto pole přidán výběr. Přitom pokud je tam stejnojmenný parametr a pole, tak to systém prostě tiše ignoruje a nic nenainstaluje.

„Profesionální rozvoj“ poskytuje příklad změny (tj. zachycení a překonfigurování) PN „za běhu“ v události Před nahráním uživatelských nastavení na server, kde je předán argument obsahující aktuální PN. Ve skutečnosti tomu tak není vždy – mohou například nastat případy, kdy chyba při ukládání PN v předchozí relaci nebo nesrovnalosti mezi Nastaveními, FN a PN povedou k tomu, že argument „Nastavení“ bude prázdný. A co je nejzajímavější, v této události to nebude možné úplně překonfigurovat, to lze provést pouze „na konci“ sledu událostí, konkrétně v události ProcessingCheckFillOnServer.

Podívejme se, co máme, než nahrajeme PN na server.

Pro jednoduchý případ, kdy v ACS není nic přednastaveno a v PN nejsou zahrnuty žádné prvky, je situace následující: Nastavení – prázdné; FN – obsahují správný výběr; Po obsahují prázdný výběr. Tvarování funguje správně, ale z uživatelského pohledu rozhraní odporuje vnitřnostem a odrazuje - výběr funguje, ale není vidět. Podobně, pokud povolíte Výběr v PN v nastavení struktury voleb, sestava se také sestaví s ohledem na výběr, ale uživatel také nevidí žádné výběry.

Nastavme předvolby (rovná se prázdným hodnotám) v nastavení ACS v Konfigurátoru a zahrneme je do PN. Teoreticky by měly FN vyplnit Nastavení a ty by měly vyplnit PN, ale ve skutečnosti máme: v Nastavení - Výběr s požadovaným prvkem, ale prázdnou pravou hodnotou, obsahují FN správný výběr a PN stále nic neobsahují. Navíc v tomto případě nebude sestava sestavena, protože pravá hodnota výběru je prázdná, navzdory hodnotě předané v parametru Vybrat.

Pokus o práci s prvky PN také nepřináší výsledky. U prvku PN můžete změnit pouze příznak „Použít“ a účast na „Rychle“. Hodnota výběru na rozhraní bude prázdná, systém nebude generovat žádné chyby. Podobně bude fungovat i pokus o práci s Výběrem PN v debuggeru, bude vidět správná hodnota jako správně vyplněná, ale na rozhraní nic neuvidíte. Připomínám, že složení PN nelze změnit. Jsou tedy nutné další triky. Například:

&Na serveru Procedura SetPresetSelections(UserSettings) If not Parameters.Property("Selection") Then Return EndIf; If Parameters.Selection.Quantity()=0 Then Return EndIf; rTypeEO=Type("Prvek výběru DataComposition"); Pro každý klíč From Parameters.Selection Loop pField=NewDataCompositionField(key.Key); // If (ValueType(kiz.Value)=Type("Array") orValueType(kiz.Value)=Type("ValueList")) a kiz.Value.Quantity()>1 Then pViewComparison=DataCompositionComparisonType.InL Jinak pComparisonType=DataCompositionComparisonType.Equals; endIf; // pNecessarySelection = Nedefinováno; // podívejte se, zda je v uživatelském nastavení Selection pNecessaryEO=Undefined; // zjistěte, zda existuje samostatný prvek výběru DataComposition v uživatelských nastaveních Pro každý elnastr From UserSettings.Elements Cycle If TypeValue(elnastr) = Type("DataComposition Selection") a pNecessarySelection=Undefined Then // může být pouze jeden pNecessarySelection= elnastr; // to by šlo udělat i mimo smyčku, ale kvůli prvkům je nutné třídit uživatelská nastavení... Jinak If TypeZnch(elnastr) = pTypeEO Then // toto je výběrový prvek, může jich být mnoho nás, ale zajímají nás ty, které nejsou inicializované nebo s povinným polem If elstr.LeftValue=pField nebo elstr.LeftValue=Nedefinováno a rNeedEO=Nedefinováno Then pNeedEO=elstr; endIf; endIf; EndCycle; // Pokud pNecessarySelection<>Undefined Potom // jde jako priorita pNecessaryEOFromSelection = Undefined; Pro každý elotb z cyklu pNecessarySelection.Elements If elotb.LeftValue=pField Then pNecessaryEOfromSelection=eloteb; Přerušit EndIf; EndCycle; If pNecessary EO from Selection = Undefined Then pNecessary EO from Selection = pNecessary Selection.Elements.Add(pType of EO); pNeedEOFromSelection.LeftValue=pPole; endIf; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=True; // rNeededEO.Use=False; JinakIf pNecessarySelection=Nedefinováno a pNecessaryEO<>Undefined Potom // vložte prvek pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=True; endIf; pNeed=Nedefinováno; Pro každý elotb Z Report.ComposerSettings.Settings.Selection.Elements Loop // přátelským způsobem by mělo existovat rekurzivní vyhledávání! If TypeValue(elotb)=pTypeEO a elotb.LeftValue=pField Then pNeed=elotb; Přerušit EndIf; EndCycle; If pNeed = Undefined Then pNeed = Report.Settings Composer.Settings.Selection.Elements.Add(pEOType); pNeed.LeftValue=pMargin; endIf; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=True; //EndCycle; Report.Settings Composer.FixedSettings.Selection.Items.Clear(); // jinak to řekne, že se prvky protínají/protiřečí Konec procedury

Nejsprávnější způsob, jak to nazvat, je:

&Na serveru Postup Zpracování Vyplnění kontrol Na serveru (selhání, zkontrolované podrobnosti) Nastavte předdefinované výběry (Propojovač sestav. Nastavení. Uživatelská nastavení); EndProcedure

Potom bude kontextové volání, například z adresářového formuláře, vypadat takto:

&Procedura OnClient OpenReport(Command) If ValueFilled(Object.Link) Then ot=New Structure("LinkToDirectory",Object.Link); // takto se pole jmenuje v sestavě SDS Form Parameters = New Structure ("Selection, GenerateWhen Opening", select, True); OpenForm("Report.Report1.Form.ReportForm",FormParameters,ThisForm); endIf; EndProcedure

Část 6.

V případě potřeby změňte nastavení sestavy při práci s ní vč. jak při spuštění, tak po otevření je nejsprávnější změnit „od začátku“, tzn. z nastavení ACS. Změna schématu ACS se provádí pouze s objektem Zpráva (nebo Externí sestavou), nikoli s daty formuláře, a sama o sobě nic nemění - v Nastavení a v PN zůstává stejné jako bylo a může zůstat FN prázdný. Proto v závislosti na našich úkolech:

Po provedení

Report.Settings Composer.LoadSettings(SKD.DefaultSettings)

změní se pouze volba a nic víc;

Po provedení techniky uvedené v odstavci 2 (pomocí „prostředníka“ a metody NačístCustomSettings()

funguje pouze v případě, že resetujete aktuální PN pomocí rozhraní. Samy o sobě, pokud se volba změní, se nezmění. V tomto případě se výběr změní, ale nový prvek výběru nebude přidán.

Po provedení

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

plošina jen tiše padá. Testováno na několika různých verzích. A volat režim pro zobrazení nastavení jen pro rychlá nemá smysl – jejich složení jsme neovlivnili, takže se stejně nic nezmění.

A protože stále potřebujeme plně změnit nejen interní výběry, ale i zobrazení na formuláři sestavy a v souvisejících formulářích, musíme buď změnit pouze Výběr, nebo postupovat následovně:

&Na serveru Změna procedury SKD() pObject = Form AttributesValue("Report"); selection=pObject.DataCompositionScheme.SettingsOptions.Get(0).Settings.Selection; eo = selection.Elements.Add(Type("DataCompositionSelectionElement")); eo.LeftValue=NewDataCompositionField("LinkToDirectory.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equals; eo.RightValue=True; eo.Use=True; ValueВFormAttributes(pObject,"Report"); Report.SettingsLitter.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.Restore(); // žádoucí, i když to stále neovlivňuje FN. // ve skutečnosti je to přesně to, co lze nazvat změnou složení PN Pro každý e-mail From Report.ComponentSettings.Settings.Selection.Elements Cycle email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; If EmptyString(el.UserSettingsIdentifier) ​​​​Then // můžete pro prvek PN použít metodu electronicSetIdentifier, viz její nápověda v SP, tam je vše celkem jasné e.UserSettingsIdentifier="ID123"; // důležité - identifikátor může být JAKÝKOLI, nikoli UUID nebo GUID! e.ViewUserSettings="Test"; endIf; EndCycle; comp=NewDataCompositionSettingsComposer; comp.LoadSettings(pObject.DataCompositionScheme.DefaultSettings); Report.SettingsComposer.LoadCustomSettings(comp.CustomSettings); Pro každý e-mail From Report.Settings Composer.CustomSettings.Elements Cyklus email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // vytáhněte EndCycle do formuláře zprávy; // a nyní to bude mít efekt: ThisForm.CreateFormElementsUserSettings(,DataCompositionSettingsDisplayMode.QuickAccess); EndProcedure

Ve skutečnosti můžete tuto mechaniku studovat po dlouhou dobu. Tato publikace vyrostla ze studia způsobů řešení jednoho konkrétního problému, a je tedy značně jednostranná; ale mám podezření, že o vnitřní logice nastavení, zejména těch uživatelských, by se dala napsat samostatná kniha, o nic jemnější než ta Khrstalevova. Bohužel na to nemám čas ani energii. Kdo považuje konkrétní vývoj za užitečný, je již dobrý.

Některé věci byly experimentálně objasněny, a proto jsou kontroverzní. Ti, kteří vědí více, jsou vyzváni, aby kritizovali a komentovali.

Pro jeden report lze zadat více možností jeho vizuální prezentace - to znamená, že stejné informace lze rozšiřovat, seskupovat atd. různými způsoby. Předdefinované možnosti se nastavují v návrháři ACS na záložce Nastavení (obr.); variantu lze vytvořit i v režimu Enterprise.

Možnost, která je v pořadí nejvyšší, bude považována za výchozí možnost.

U konfiguračně předdefinovaných možností můžete určit, která nastavení budou uživateli k dispozici. Můžete například zakázat výběr nebo seskupování prvku. Toto je uvedeno ve vlastnostech prvku uživatelského nastavení:

Zadejte možnost přístupu uživatele k nastavení:

To určuje, co uživatel uvidí v nastavení sestavy v Enterprise:

Otázka 11.32 zkoušky 1C: Platform Professional. Která možnost přehledu ve schématu složení dat bude považována za výchozí?
  1. Ten, který je na prvním místě v seznamu možností
  2. Ten s výchozí vlastností nastavenou volbou
  3. Ten, který byl určen jako první v procesu vytváření opcí
Správná odpověď je první, popis v textu.
Otázka 11.35 zkoušky 1C: Platform Professional. Jak přidat nastavení do seznamu uživatelských nastavení?
  1. ve formuláři nastavení vlastního prvku můžete zadat označení, že prvek je vlastní
  2. ve formuláři nastavení vlastního prvku povolte rychlý přístup v režimu úprav
  3. přidání se provádí zaškrtnutím políčka ve vlastnosti "Použít".
Správná odpověď je ta první.
Otázka 11.40 zkoušky 1C: Platform Professional. V nastavení systému skládání dat je třeba zadat:
  1. Struktura nastavení
  2. Možnosti
  3. Vybraná pole
  4. Seskupitelná pole
  5. Řazení
  6. Vše výše uvedené
Správná odpověď je ta první. Struktura je vyžadována, vše ostatní může systém kontroly přístupu přidat automaticky, nebo to v zásadě není nutné.
Otázka 11.41 zkoušky 1C: Platform Professional. Jak bude formulář zprávy vypadat po použití následujících nastavení?
  1. Ve formě tabulky se čtyřmi sloupci: „Produkt“, „Sklad“, „Zbývající množství“, „Zbývající množství“
  2. Ve formě tabulky se třemi sloupci: „Produkt“, „Sklad“, „Zbývající množství“
  3. ve formě tabulky, jejíž počet sloupců bude záviset na počtu skladů, které mají nenulové zůstatky
  4. Zpráva nebude generována
Správná odpověď je čtvrtá - v kořenovém prvku struktury nastavení není zatržítko, proto nejsou definována data pro výstup.
Otázka 11.42 zkoušky 1C: Platform Professional. Co se stane při generování sestavy, pokud v uživatelském režimu neexistují žádná systémová nastavení složení dat?
  1. Použije se "Výchozí nastavení" určené vývojářem ve schématu složení dat
  2. Ze seznamu možností nastavení se použije volba vedle aktuální
  3. Použije se vlastní nastavení
  4. Zpráva nebude generována
Čtvrtá správná odpověď je, že prioritou je to, co uživatel zadal. Uživatelská nastavení jsou prázdná, proto nebude sestava generována.
Otázka 11.43 zkoušky 1C: Platform Professional.
  1. K levému okraji první sekundy data zadaného v parametru "Období".
  2. Budou získány aktuální zůstatky, pokud nebude v parametru systému složení dat vytvořeném na základě názvu externího parametru uvedeného v textu dotazu pro parametr "Období" virtuální tabulky specifikována jiná hodnota.
Správná odpověď je čtvrtá. Zaškrtávací políčko "Období" není zaškrtnuté, to znamená, že výběr uživatele není zadán. Obecně to znamená aktuální zůstatky, ale je možné, že parametr období je definován v jiném nastavení ACS.
Otázka 11.44 zkoušky 1C: Platform Professional. V jakém bodě na časové ose budou při generování sestavy získány zůstatky?
  1. K levému okraji první sekundy data zadaného v parametru "Období".
  2. K pravému okraji poslední sekundy data zadaného v parametru "Období".
  3. Budou přijaty aktuální zůstatky
  4. Budou získány aktuální zůstatky, pokud nebude v parametru systému složení dat vytvořeném na základě názvu externího parametru uvedeného v textu dotazu pro parametr "Období" virtuální tabulky specifikována jiná hodnota.
Správná odpověď je první - výběr je zde jasně vyznačen.

Otázka 11.45 zkoušky 1C: Platform Professional. Obrázek ukazuje formulář hlášení, který systém generuje ve výchozím nastavení. Jaký typ prvku nastavení je zarámován?

  1. Vlastní nastavení
  2. Pevné nastavení
  3. Možnosti nastavení
  4. Prvek může patřit k jakémukoli typu nastavení v závislosti na hodnotě jeho vlastnosti "Data Path".
Správná odpověď je ta první.
Otázka 11.46 zkoušky 1C: Platform Professional. V sestavě je výběr polem "Sklad" specifikován současně ve všech typech nastavení. Co se stane, když se pokusíte vygenerovat přehled?
  1. Zpráva nebude generována
  2. Report bude generován pomocí výběru z uživatelského nastavení
  3. Zpráva bude generována pomocí výběru z pevných nastavení
  4. Zpráva bude generována pomocí výběru z možnosti aktuálního nastavení
Není jasné, co jsou „všechny typy nastavení“, ale podle odpovědí je správná možnost první.
Otázka 11.47 zkoušky 1C: Platform Professional. V přehledu je výběr polem "Sklad" specifikován jak v uživatelském nastavení, tak ve volbě aktuálního nastavení. Co se stane, když se pokusíte vygenerovat přehled?
  1. Pokud je vybrán příznak "Využití", sestava bude generována pomocí výběru z uživatelského nastavení. Pokud není nastaven příznak "Použít", nebude výběr
  2. Pokud je vybrán příznak "Využití", sestava bude generována pomocí výběru z uživatelského nastavení. Pokud není nastaven příznak "Použít", použije se nastavení výběru z možnosti nastavení
  3. Zpráva bude generována pomocí výběru z možnosti nastavení, pokud je vybrán příznak "Použití". Pokud není nastaven příznak "Použít", nebude výběr
  4. Zpráva bude generována pomocí výběru z možnosti nastavení, pokud je vybrán příznak "Použití". Pokud není nastaven příznak "Použít", pak se použije nastavení výběru z uživatelského nastavení
První možnost je správná.
Otázka 11.49 zkoušky 1C: Platform Professional. Při práci s nastavením může uživatel určit pole seskupení
  1. V samostatném okně "Seskupení"
  2. V samostatném okně "Úprava seskupovacích polí"
  3. Na kartě Seskupená pole
  4. V samostatném okně "Seskupování" a na kartě "Seskupená pole".
  5. V samostatném okně „Seskupování“, v samostatném okně „Úprava polí seskupení“ a na kartě „Seskupená pole“
Správná odpověď je číslo pět. Okno seskupení:

Možnosti Upravit seskupovací pole a Seskupitelná pole:

Otázka 11.50 zkoušky 1C: Platform Professional. Uživatel vytvořil možnost nastavení od začátku. Jaká nastavení musel upravit? Vyberte nejúplnější a nejsprávnější odpověď
  1. Vybraná pole sestav, výběr sestav, výběr skladu, doplňkové nastavení tabulek, řazení položek, parametry, podmíněný návrh položky
  2. Vybraná pole sestav, výběr sestav, doplňkové nastavení tabulek, podmíněný návrh položky, vybraná skladová pole, parametry, řazení sestav
  3. Vybraná pole sestav, výběr sestavy, výběr skladu, doplňkové nastavení tabulek, podmíněný návrh položky, parametry, struktura sestavy
  4. Vybraná pole sestav, výběr sestav, výběr skladu, další nastavení sestav, parametry, podmíněný návrh položky, struktura sestavy
Správná odpověď je třetí, musíte se pozorně podívat na snímek obrazovky.

Podrobně jsme prozkoumali nastavení reportů implementovaných na základě systémů kontroly přístupu. Nyní se podíváme na jemnější a podrobnější nastavení možností sestavy. Okno pro „pokročilé“ nastavení volby reportu vyvoláme příkazem „Více“ - „Jiné“ - „Změnit volbu reportu“.

Okno pro změnu verze sestavy je rozděleno na dvě části:

1. Struktura zprávy.

2. Nastavení zpráv.


Sekce struktury možností sestavy je podobná kartě „Struktura“ ve standardním nastavení sestavy. Účel a konfigurace seskupení je podrobně popsána v 1. části článku.

Tabulka struktury variant sestavy kromě skutečného sloupce se seskupeními obsahuje několik dalších sloupců:

Sekce nastavení možností sestavy poskytuje uživateli dostatek příležitostí nakonfigurovat sestavu tak, aby vyhovovala jeho potřebám. Téměř zcela se shoduje se standardním nastavením přehledu uvedeným v části 1. Podívejme se na všechny karty této části a povšimněme si rozdílů.

Sekce nastavení se skládá z následujících záložek:

1. Parametry. Obsahuje parametry ACS dostupné uživateli.

Parametr ACS je hodnota používaná k získání dat sestavy. Může to být hodnota podmínky pro výběr nebo kontrolu dat a také pomocná hodnota.


Tabulka parametrů je prezentována ve formátu „Parameter“ - „Value“. V případě potřeby můžete změnit hodnoty parametrů. Kliknutím na tlačítko „Vlastnosti prvku uživatelského nastavení“ se otevře vlastní nastavení prvku.


V tomto okně můžete vybrat, zda bude prvek zahrnut do uživatelského nastavení (tj. viditelný pro uživatele při nastavování sestavy), nastavit způsob prezentace prvku a úpravy (rychlý přístup v záhlaví sestavy, normální v nastavení přehledu a nepřístupné).

Vlastnosti položky uživatelského nastavení mají také seskupitelná pole, okraje, výběry a prvky podmíněného vzhledu.

2. Vlastní pole. Obsahuje pole, která jsou generována samotným uživatelem na základě dat vybraných sestavou.


Uživatel může přidat dva typy polí:

  • Nové pole výběru...
  • Nové výrazové pole...

Pole výběru umožňují vypočítat hodnotu na základě zadané podmínky. Editační okno výběrového pole obsahuje název pole a tabulku, ve které je specifikován výběr, hodnota a zobrazení pole. Výběr je podmínkou, podle které bude požadovaná hodnota nahrazena.


Spočítejme si například odhad počtu prodejů. Budeme předpokládat, že pokud se prodá méně než 10 kusů produktu, prodali jsme málo, a pokud více než 10 kusů, prodali jsme hodně. K tomu nastavíme 2 hodnoty pro počítané pole: první bude s výběrem „Počet zboží menší nebo rovno „10“, druhá s výběrem „Počet zboží větší než „10“ “.

Pole výrazů umožňují vypočítat hodnotu pomocí libovolných algoritmů. Mohou využívat funkce dotazovacího jazyka a vestavěného programovacího jazyka 1C. Okno editace pole výrazu obsahuje dvě pole pro vyjádření podrobných a souhrnných záznamů. Celkové záznamy jsou seskupení konfigurovaná v oblasti „Struktura sestavy“, musí používat agregační funkce („Součet“, „Minimum“, „Maximum“, „Množství“).

Spočítejme si například průměrné procento slevy. Průměrné procento slevy se vypočítá pomocí vzorce: [Částka prodeje bez slevy] - [Částka prodeje se slevou] / [Částka prodeje bez slevy]. Je důležité si uvědomit, že prodejní částka bez slevy může být nulová, proto ke kontrole používáme operátor SELECT. Dostaneme následující výrazy:

· Podrobné záznamy:

Výběr

Když [Částka prodeje bez slevy] = 0

Potom 0

Jinak [Částka prodeje bez slevy] - [Částka prodeje se slevou] / [Částka prodeje bez slevy]

Konec

· Pro souhrnné záznamy:

Výběr

Když Částka([Částka prodeje bez slevy]) = 0

Potom 0

Jinak Součet([Částka prodeje bez slevy]) - Součet([Částka prodeje se slevou]) / Součet([Částka prodeje bez slevy])

Konec

Jak již bylo zmíněno, při vyjádření celkových záznamů používáme agregační funkci „Součet“.

3. Seskupitelná pole. Obsahuje pole, podle kterých budou seskupeny výsledky varianty sestavy. Seskupená pole jsou konfigurována samostatně pro každé seskupení, ale můžete nastavit obecná seskupená pole pro možnost sestavy, pokud ve stromu struktury vyberete kořen „Zpráva“. Můžete přidat pole z výsledku zprávy, vlastní pole nebo vybrat automatické pole, pak systém vybere pole automaticky. Tato karta také umožňuje změnit pořadí seskupených polí.


4. Pole. Obsahuje pole, která budou zobrazena jako výsledek varianty sestavy. Pole se konfigurují samostatně pro každé seskupení, ale můžete nastavit společná pole pro možnost sestavy, pokud ve stromu struktury vyberete kořen „Sestava“. Můžete přidat pole z výsledku zprávy, vlastní pole nebo vybrat automatické pole, pak systém vybere pole automaticky. Tato karta také umožňuje změnit pořadí polí.

Pole lze seskupit, aby bylo možné logicky zvýraznit jakoukoli část sestavy nebo určit zvláštní uspořádání sloupců. Při přidávání skupiny se aktivuje sloupec „Umístění“ a umožňuje vám vybrat jednu z možností umístění:

  • Auto - systém umísťuje pole automaticky;
  • Horizontální - pole jsou umístěna vodorovně;
  • Vertical - pole jsou uspořádána svisle;
  • V samostatném sloupci - pole jsou umístěna v různých sloupcích;
  • Společně - pole jsou umístěna v jednom sloupci.


5. Výběr. Obsahuje výběry použité ve variantě sestavy. Nastavení výběrů bylo podrobně probráno v části 1 tohoto článku. Filtry se konfigurují samostatně pro každé seskupení, ale můžete nastavit obecné filtry pro možnost sestavy, pokud ve stromu struktury vyberete kořen „Zpráva“.


6. Třídění. Obsahuje třídicí pole použitá ve variantě sestavy. Nastavení třídicích polí bylo podrobně popsáno v 1. části tohoto článku. Třídění je nakonfigurováno samostatně pro každé seskupení, ale můžete nastavit obecná třídicí pole pro možnost sestavy, pokud ve stromu struktury vyberete kořen „Sestava“.


7. Podmíněná registrace. Obsahuje prvky podmíněného návrhu použité ve variantě sestavy. Nastavení podmíněného vzhledu bylo podrobně probráno v části 1 tohoto článku. Podmíněný vzhled se konfiguruje samostatně pro každé seskupení, ale můžete nastavit obecné prvky podmíněného vzhledu pro možnost sestavy, pokud ve stromu struktury vyberete kořen „Sestava“.


8. Další nastavení. Obsahuje další nastavení návrhu sestavy. Umožňuje vybrat obecný vzhled sestavy, umístění polí, seskupení, podrobnosti, zdroje, součty, nastavit nastavení grafu, ovládat zobrazení nadpisu, parametrů a výběru, určit polohu zdrojů a opravit záhlaví a seskupení sloupce verze sestavy.


Na závěr bych rád poznamenal, že nastavení sestavy lze nejen uložit jako možnost sestavy, ale také nahrát do souboru (nabídka „Více“ - „Uložit nastavení“). Chcete-li stáhnout, musíte vybrat „Načíst nastavení“ a vybrat uložený soubor. Můžeme tak přenášet nastavení variant sestav mezi různými databázemi, které mají stejnou konfiguraci.


Na základě toho můžeme shrnout, že uživatel si může sestavu nejen samostatně upravit podle svých potřeb, ale také svá nastavení uložit a v případě potřeby použít v budoucnu.

Pozornost! Toto je úvodní verze lekce, jejíž materiály mohou být neúplné.

Přihlaste se na stránku jako student

Pro přístup ke školním materiálům se přihlaste jako student

Systém skládání dat 1C 8.3 pro začátečníky: propojování datových sad

  • Napište zprávu, která zobrazí zákazníky a jejich oblíbené produkty. Každý klient má oblíbenou barvu a každý produkt má svou vlastní barvu - na základě těchto barev musíte určit „oblíbený“ produkt. Pokud je například Andreyho oblíbená barva červená, pak jedním z jeho oblíbených jídel budou rajčata (jsou červená).
  • Použijte v sestavě dvě sady dat. První množinou jsou data z adresářové tabulky "Klienti". Druhým jsou data z adresářové tabulky „Potraviny“.
  • Nářadí spojení mezi těmito dvěma sadami, takže report obsahuje pouze oblíbené produkty pro každého klienta.

Vytvořte nový přehled

Otevřete v konfigurátoru databázi "Gastronom" a vytvořte nový report přes hlavní menu:

Typ dokumentu - "Externí zpráva":

Ve formě nové zprávy uveďte název „Lekce 6“ a klikněte na tlačítko „Otevřít diagram složení dat“:

Ponechte výchozí název schématu:

Přidání první datové sady

V diagramu, který se otevře, přejděte na kartu „Soubory dat“ a vyberte „Přidat soubor dat – dotaz“ pomocí zeleného znaménka plus:

Zavolejte konstruktor požadavku:

Označujeme tabulku "Zákazníci" a pole, která je třeba získat z požadavku:

Přidání druhého souboru dat

Přidejte druhou sadu dat:

Vyberte ji (DataSet2) a znovu zavolejte konstruktor dotazu:

Označujeme tabulku adresáře "Potraviny" a pole, která je třeba získat z požadavku:

Výsledný text požadavku byl:

Upozorňujeme, že v současnosti máme v přehledu dvě sady dat: Sada dat1 a Sada dat2. Každý má svůj vlastní text požadavku a data.

Udělat jména popisnější

Pro názornost přejmenujme DataSet1 na Customers a DataSet2 na Food.

Udělejte to dvojitým kliknutím na každou ze sad:

V naší zprávě můžeme použít data z každé sady. K těmto údajům budeme přistupovat prostřednictvím polí.

V současné době má sada „Zákazníci“ tato pole: „Název“ a „Oblíbená barva“ a sada „Jídlo“ obsahuje: „Název“ a „Barva“.

Vidíme, že se názvy překrývají a snadno se můžeme splést. Změňme tedy názvy polí, aby byly smysluplnější.

Vyberte sadu „Klienti“ a změňte názvy polí takto:

Poté vyberte sadu „Potraviny“ a změňte názvy polí takto:

Volání konstruktoru nastavení

Nakonec přejděte na kartu „Nastavení“ a kliknutím na kouzelnou hůlku vyvolejte návrháře nastavení:

Typ přehledu - "Seznam...":

Vyberte pole pro sestavu z obou sad:

Vidíte, proč bylo tak důležité změnit názvy polí? Ve fázi nastavení kompozice dat nevidíme, ze kterých sad tato pole pocházejí. Vidíme pouze jejich jména.

Kontrola hlášení

Přehled uložíme a vygenerujeme v uživatelském režimu:

To jo. Dobře, ale vlastně ne. Došlo k takzvanému křížovému spojení dvou množin (měli byste to dobře znát ze spojení v dotazech, které jsme studovali v předchozích modulech). Každý záznam z tabulky Zákazníci má odpovídající záznam z tabulky Jídlo.

Ale ze všech těchto záznamů musíme ponechat pouze ty, jejichž pole „Client’s FavoriteColor“ se rovná poli „FoodColor“:

Propojíme dvě datové sady

K tomu propojíme dvě sady dat (Zákazníci a Jídlo) pomocí polí Oblíbená barva zákazníka a Barva jídla.

Přejděte na kartu „Odkazy na sadu dat“ a kliknutím na tlačítko plus přidejte nový odkaz:

Nakonfigurujeme parametry jako na obrázku níže:

Podám vysvětlení.

Zdroj a příjemce komunikace. Tady je vše jasné. Označujeme první sadu (Zákazníci) a druhou sadu (Potraviny) dat. Chtěl bych zvláště upozornit na skutečnost, že komunikace bude probíhat podle principu vnější levý spoj(zabývali jsme se jí v tématu požadavků v předchozích modulech). Na základě toho je třeba zvolit, která sestava bude zdrojem a která přijímačem.

Zdroj výrazu. Zde uvádíme výraz nebo jednoduše pole ze zdrojové datové sady (zadali jsme pole ClientFavoriteColor ze zde nastavené klienti).

Výraz přijímače. Zde uvádíme výraz nebo jednoduše pole z datové sady přijímače (zde jsme uvedli pole ColorFood ze sady Food).

Toto spojení tedy ponechá z předchozího seznamu pouze ty řádky, pro které se pole Oblíbená barva zákazníka rovná poli Barva jídla.

Uložíme sestavu a spustíme ji v uživatelském režimu:

Skvělý!

Udělám vysvětlení o poli" Podmínka komunikace“, o kterém začínající programátoři tak často narážejí oštěpy.

Podmínkou připojení je pomocné pole. Můžete tam psát výrazy zahrnující pole pouze z datové sady specifikované ve zdroji odkazu.

V tomto případě pro všechny řádky ze zdroje odkazu bude tento výraz (podmínka odkazu) před vytvořením odkazu zkontrolován. A pokud je tento výraz PRAVDA, bude proveden pokus o vytvoření spojení mezi tímto řádkem a řádky z přijímače spojení. Je-li výraz FALSE, nebudou provedeny žádné takové pokusy.

říct přátelům