1c nastavte štandardné nastavenia formulára. Výbery v prehľadoch. Nuansy tvorcu nastavení. Nastavenie formulárov a práca so zoznamami

Subsystém v 1C 8.3— objekt stromu metadát, ktorý je zodpovedný za vytvorenie rozhrania konfiguračného príkazu.

Nižšie v článku budeme hovoriť o podsystémoch od verzie 8.2.

Faktom je, že verzia 8.1 (rovnako ako bežná aplikácia 8.2) mala tiež podsystémy, ktoré však slúžili úplne iným účelom, pravdepodobnejšie pre vývojára ako pre používateľa. Pomocou podsystémov v 8.1 boli zvyčajne oddelené rôzne funkcie. Subsystémy pomohli aj pri kombinovaní rôznych konfigurácií 1C – bolo možné určiť, ktorý systém sa má preniesť.

1C podsystémy a rozhranie programátora

Vo verziách 8.3 a 8.2 sú subsystémy hlavným nástrojom na vytváranie príkazového používateľského rozhrania. Subsystémy metaúdajové objekty majú hierarchická štruktúra Ak chcete nakonfigurovať „podmenu“ v rozhraní, musíte pridať podriadený podsystém:

Vlastnosti a nastavenia

Pozrime sa na nastavenia a vlastnosti podsystémov v konfigurátore:

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

Zahrnúť do príkazového rozhrania— ak ste zabudli nastaviť tento príznak, subsystém sa nezobrazí v rozhraní.

Tlačidlo otvorí panel nastavení rozhrania, kde môžete konfigurovať rozhrania v závislosti od roly aktuálneho používateľa:

Obrázok— obrázok priradený k podsystému sa zobrazí v podnikovom režime. Môžete vybrať štandardný obrázok alebo môžete pridať svoj vlastný tak, že ho najskôr vytvoríte ako konfiguračný objekt obrázok:

Na karte Funkčné možnosti označuje zoznam funkčných možností, v ktorých sa tento podsystém používa.

Tab Zlúčenina definuje množinu objektov metaúdajov zúčastňujúcich sa na danom subsystéme.

Na karte Iné môžete opísať pomoc pre podsystém a špecifikovať nastavenia Zahrnúť do obsahu pomocníka— či zahrnúť túto časť pomocníka do všeobecného informácie o pozadí podľa konfigurácie.

Ak v spravovanom rozhraní nevidíte prehľad alebo spracovanie

Tento problém sa veľmi často vyskytuje medzi začínajúcimi vývojármi - zdá sa, že do podsystému bola pridaná správa alebo spracovanie, ale nie je viditeľné.

Prvým dôvodom môže byť, že objekt nemá definovanú kontrolovanú formu.

Druhým dôvodom je, že na karte Príkazy objektu je začiarknuté políčko „Použiť štandardné príkazy“. Je to spôsobené tým, že na otvorenie spracovania je možné opísať buď vlastný postup, alebo použiť štandardný postup:

Článok pokračuje v sérii „Prvé kroky vo vývoji 1C“.

V konfigurácii na platforme 1C:Enterprise sa pri zobrazovaní informácií najčastejšie používajú tabuľky, ktoré zobrazujú rôzne informačné zoznamy. Práca s takýmito zoznamami môže prebiehať ako vo forme zoznamu, tak aj vo forme prvku (spracovanie).

V tomto článku sa zoznámime s týmito možnosťami prispôsobenia zoznamov a pozrieme sa aj na ďalšie funkcie prispôsobenia formulárov zo strany používateľa.

Použiteľnosť

Článok pojednáva o spravovanom rozhraní vo verzii „Verzia 8.2“ konfigurácie vyvinutej na platforme 1C 8.3.4.482.

Ak pracujete s konfiguráciami, ktoré podporujú toto rozhranie, informácie sú pre vás relevantné a aktuálne verzie platformy.

Ak pracujete v novom rozhraní Taxi, názvy niektorých konfiguračných príkazov, ako aj všeobecná postupnosť akcií, sa môžu mierne líšiť.

Okrem toho súčasná verzia platformy pridala nové možnosti vyhľadávania v zoznamoch.

Nastavenie formulárov a práca so zoznamami

Pre riadené formulárové prvky je možné zmeniť viditeľnosť a niektoré ďalšie vlastnosti. Na tieto účely v v zvládnuteľnej forme v ponuke Všetky akcie slúži ako položka Zmeniť formulár.

Po kliknutí na tento príkaz sa zobrazí okno „Nastavenia formulára“.

V okne, ktoré sa zobrazí, môžete pomocou začiarkavacích políčok zmeniť viditeľnosť niektorých detailov. V tomto prípade sa mierka formulára automaticky upraví.

Môžete zmeniť poradie podrobností. Pridajte novú skupinu a umiestnite do nej niektoré detaily (prvky), pričom definujte možnosť ich zoskupenia (horizontálne, vertikálne).

Podrobnosti zahrnuté v skupine budú podľa toho zverejnené. Okrem toho môžete pre prvky nakonfigurovať vlastnosti, ako sú šírka, výška a údaje hlavičky.

Môžete definovať atribúty, ktoré sa aktivujú pri otvorení formulára.

Dôležitou funkciou je možnosť pridávať do formulára nové polia. To je možné prostredníctvom atribútov typu odkazu.

Napríklad mať vo formulári atribút typu odkazu Protistrana, môže pridať Kontaktná osoba, Ak táto rekvizita sa nachádza v adresári „Protistrany“.

V prípade potreby je možné odstrániť ďalšie polia. Polia vytvorené v konfigurátore nie je možné vymazať. Všetky nastavenia vykonané používateľom sa uložia.

Návrat k štandardným nastaveniam v okne Nastavenia formulára v ponuke Všetky akcie mali by ste vybrať položku Inštalácia štandardné nastavenia .

Okrem prispôsobenia formulárov v spravovanom rozhraní je možné prispôsobiť zoznamy (prvky adresára, dokumenty).

Vo forme zoznamu v menu Všetky akcie obsahuje špeciálny príkaz Prispôsobte zoznam.

Otvorí sa okno „Nastavenia zoznamu“. V tomto okne môžete vyberať, triediť, definovať podmienené formátovanie a zoskupovanie.

Na obrázku je zobrazený formulár na úpravu výberu.

Výber je možné vykonať pomocou niekoľkých polí. V tomto prípade bude výber štandardne fungovať podľa podmienky AND, môžete použiť aj podmienky OR a NOT.

Ak chcete použiť podmienku OR (NOT), musíte pridať príslušnú skupinu (OR Group, NOT Group) pomocou príkazu Group Conditions.

Na obrázku je zobrazený formulár na definovanie triediacich polí.

Zoskupovanie je možné nakonfigurovať. Na obrázku je vybraté pole na zoskupenie Protistrana.

Nasledujúci obrázok ukazuje, ako sa bude zoskupovanie vykonávať.

Zoznam môžete ľubovoľne zafarbiť alebo použiť ďalšie prvky podmieneného dizajnu (výber písma, špecifické formátovanie) podľa danej podmienky, ako aj vybrať zoznam polí, ktoré sa majú formátovať.

Na obrázku je znázornený výsledok podmieneného návrhu pozadia poľa Sum.
Keď je suma > 100 000.

Treba poznamenať, že je možné prezerať adresáre v režime hierarchie.

Prostredníctvom položky je možné konfigurovať hierarchické prezeranie adresárov Režim zobrazenia v ponuke Všetky akcie. Môžete si vybrať jednu z možností: Hierarchický zoznam, Zoznam, Strom.

Je tiež možné nakonfigurovať vlastné zoskupenie prvkov adresára podľa určitých detailov.

Môžete napríklad zoskupiť položky podľa dodávateľa. Príklad je podobný tomu, kde sme sa zaoberali zoskupovaním dokumentov „Predaj tovaru a služieb“ podľa protistrán.

Pohodlnou funkciou je viacnásobný výber v zoznamoch a následné vykonávanie skupinových akcií (zaúčtovanie, zrušenie, odškrtnutie zmazania).

Objekty v zozname sa vyberajú podržaním klávesu Shift alebo Ctrl.

Hľadanie určitej hodnoty v zozname má svoje vlastné charakteristiky. Vyhľadávanie funguje v režime výberu. Zostanú len tie riadky, ktoré spĺňajú podmienku vyhľadávania.

Ak chcete vyhľadávať podľa hodnoty v aktuálnom stĺpci, umiestnite kurzor na požadovaný stĺpec a kliknite na tlačidlo Nájsť v príkazovom paneli. Zobrazí sa okno, v ktorom by ste mali tiež kliknúť na tlačidlo Nájsť.

Ak chcete spresniť vyhľadávanie, môžete použiť začiarkavacie políčko Hľadať v nájdených.

Pri vyhľadávaní riadku údajov referenčného typu (napríklad merných jednotiek) by ste mali vybrať príslušnú možnosť vyhľadávania ...(podľa riadku).

To uzatvára zoznamy a spôsoby ich konfigurácie. V ďalšom článku budeme pokračovať v oboznamovaní sa s rozhraním a pozrieme sa na pohodlný nástroj na informovanie používateľa, o ktorom sme doteraz nehovorili. Čo je to za nástroj? :)

Domnievam sa, že vám nie je potrebné hovoriť, čo je systém kontroly prístupu, zostavovateľ nastavení a vo všeobecnosti celý súbor objektov navrhnutých na prácu so systémom kontroly prístupu. Hlavnými oblasťami použitia, nepočítajúc zložité akcie v kóde, sú dynamické zoznamy a zostavy, pričom v oboch prípadoch zostáva v zákulisí veľmi významná funkcionalita. Často ani neuvažujeme o logike správania a vzťahov všetkých účastníkov procesu, pretože Zvyčajne riešime pomerne jednoduché problémy alebo sa spoliehame na predvolené nastavenia platformy. Ale tam, kde sú ticho, existuje aj vnútorná logika, akási „medvedia služba“ 1C, ktorej ovocie je niekedy ťažké a neočividné prekonať, aby sa dosiahol požadovaný účinok, a zároveň stačí len správne používať nástroje.

Záujemcovia môžu preskočiť časti 1-4 a prejsť rovno na príklady.

Pokúsim sa trochu podrobnejšie venovať fungovaniu výberov ACS pre prípad ich použitia v prehľadoch. Myslím, že správanie v dynamické zoznamy, s množstvom rezervácií, bude blízko. Takže výbery v správach, trocha teórie a potom konkrétne príklady.

Používajú sa SP 8.3.6 a vyššie, časti ITS (odsek 10.3.7.5 atď.), Kniha „Profesionálny rozvoj v systéme 1C-Enterprise 8“ (Kazan, 2012, druhý diel). V knihe E. Khrustaleva nebolo na túto tému vôbec nič zrozumiteľné.

Časť 1

Tvorca nastavení, ako viete, má kolekcie „Nastavenia“, „Pevné nastavenia“ (ďalej len „FN“) a „Vlastné nastavenia“ (ďalej len „CU“). Správa môže mať niekoľko možností a spojenia medzi možnosťami N, PN a FN sú veľmi jedinečné. Taktiež nezabudnime na zdroj dostupné nastavenia, a jeho „predchodca“, ktorým je zvyčajne samotný obvod, ktorý má tiež svoje vlastné predvolené nastavenia.

* Nastavenia – nastavenia vytvorené v režime Konfigurátor a zmenené v režime úpravy verzie zostavy;

* UserSettings – nastavenia, ktoré používateľ zmení v režime „1C:Enterprise“ čisto cez rozhranie;

* FixedSettings – tie nastavenia, ktoré sa nastavujú zo vstavaného jazyka, vrátane. sú implicitne nastavené systémom. Táto vlastnosť obsahuje hodnoty výberu, ktoré sa prenesú do formulára pomocou jeho parametrov (štruktúra „Výber“).

Nastavenia a FN majú podobný dizajn a majú kolekciu „Výber“ typu „Výber zloženia údajov“, ktorá je k dispozícii na zmenu zloženia kedykoľvek počas existencie správy. Nastavenia sú zároveň dostupné pre zmeny rozhrania prostredníctvom úpravy variantu, ale FN nie sú vôbec prístupné. PN je zasa „kaša“, kde rovnakými prvkami môže byť samotný „Výber“ aj jednotlivé objekty typu „Prvok výberu kompozície dát“ (tzv. vnorený objekt). Napriek dostupnosti vhodných metód nie je možné programovo zmeniť zloženie kolekcie prvkov PN, ak ide o PN samotnej správy a nie sú vytvorené „od nuly“ dizajnérom - 1C oznámi, že „Kolekcia používateľov nastavenia nemôžu zmeniť jeho zloženie, pretože sú spojené s údajmi o nastaveniach rozloženia." ITS hovorí: „Nehnuteľnosť nie je zapisovateľná pomocou vstavaného jazyka.“, ale ako uvidíme neskôr, PN je možné ovplyvniť. „Kaša“ predmetov má interná komunikácia– kontroluje sa konzistentnosť podmienok pri generovaní správy a pri zmene zloženia. Na ITS čítame: „Prvky, ktoré sú samy označené ako vlastné, nebudú pridané. Napríklad vlastný výber nebude obsahovať prvok výberu, ktorý je označený ako vlastný. Prvky obsahujúce vlastné prvky nebudú pridané. Skupina podmienok sa napríklad nepridá, ak skupina obsahuje prvky označené ako vlastné. Pre vnorené prvky sa vlastnosť DisplayMode neanalyzuje. Sú pridané alebo nepridané spolu s rodičovské prvky." „Seniorita“ objektov teda funguje v zákulisí. V tomto prípade môžete získať efekt, keď vám rozhranie umožňuje zadať protichodné výbery pre variant a jeho PN, ako aj v rámci PN.

Zdá sa, že „senior“ je možnosťou. Kliknutím na „Viac“ / „Možnosť zmeny“ a potvrdením zmien v otvorenom formulári však vyvoláte obsluhu udalosti formulára , v tomto prípade sa výber zobrazí na paneli „Základné“ vo formulári vyvolanom z „Nastavenia...“ a zobrazí sa vo formulári správy, ale NIE JE zobrazený na karte „Výber“; Navyše sa buď objaví okamžite ako vo formulári hlavného prehľadu, tak aj vo formulári „Nastavenia...“ (ak je tam príznak „Zahrnúť do používateľských nastavení“), alebo ani tam, ani tam. V žiadnom prípade sa však NEBUDE nachádzať na karte „Výber“ vo formulári „Nastavenia...“. Rozdiel medzi záložkou „Základné“, formulárom „Nastavenia...“ a hlavným formulárom výkazu určuje pole „Režim úprav“ (normálne – len v „Nastaveniach“, rýchle – aj na samotnom formulári výkazu), ale myslím, že to každý vie. Mimochodom, hodnoty „Selection“ a „Fast“ nie sú žiadnym spôsobom synchronizované a môžu si navzájom odporovať, ale „Fast“ vo formulári správy a vo formulári nastavení sú prísne synchrónne. Takže, keď upravíte variant, zmení sa sám (ale jeho ID a názov sa nezmení), ale PN zostanú NEupravené (t.j. aj keď sa bavíme o nich, t.j. o príznaku pre zahrnutie toho či onoho prvok v PN ).

Kliknutím na „Vybrať možnosť...“ a potvrdením zmien vo formulári, ktorý sa otvorí, sa spúšťajú udalosti v nasledujúcom poradí:

Pri nahrávaní OptionOn Server

Pri aktualizácii zloženia používateľských nastavení na serveri

Možnosť ani PN sa v tomto prípade nijako nemení. Odtiaľto je jasné, že možnosť a nastavenia, ak sú pripojené, nie sú v žiadnom prípade priamo spojené.

Kliknutím na „Nastavenia...“ a potvrdením zmien v otvorenom formulári sa iba spustí udalosť Pri aktualizácii zloženia používateľských nastavení na serveri(v tomto prípade sa PN zmenia, ale pohľady a kľúč (ak tam neboli) sa neprijmú; ak je pre prvky objektu PN „Výber“ povolené „Rýchlo“, potom okrem „Výber“, jeho skutočné prvky sa zobrazujú ako polia, t. j. správa sa podobne ako vnorené prvky. Tieto nastavenia sa uložia pri zatvorení a obnovia sa pri ďalšom vstupe do formulára. Možnosť sa nedotkne ani nezmení.

Kliknutím na "Viac"/"Nastaviť štandardné nastavenia" vo formulári nastavení (rovnako ako na položku "Štandardné nastavenia" v možnosti editácia) sa spustí iba udalosť Pri aktualizácii zloženia používateľských nastavení na serveri. V tomto prípade sa možnosť zmení, ale zmení sa PN. Ak bola možnosť predtým zmenená, zostane zmenená (neresetuje sa ani zmenený príznak, ani skutočné nastavenia).

Kliknutím na „Vlastnosti prvku vlastných nastavení“ v strome štruktúry vo formulári na úpravu variantov sa pridá objekt „Výber“, ktorý sa ukáže ako prázdny a nie je nijako synchronizovaný s existujúcim výberom variantov a existujúcimi vnorenými prvkami výberu. variant sa nijako nemení.

Z toho vyplýva odporúčanie: ak potrebujete nastaviť určité výbery v režime „Konfigurátor“, aby ste sa nehrabali v kóde a neboli vo voľbe, ale boli by v rozhraní zostavy, nemali by ste s výberom manipulovať prvky možnosti, zmena ich vlastností, ale aj samotný výber pomocou tlačidiel „Vlastnosti prvku...“ a „Vlastné nastavenia“.

Pridanie niečoho, čo sa zobrazí v Nastaveniach do PN vyžaduje akcie v kóde alebo rozhraní, ale odstránenie a vymazanie nastavení ovplyvní PN okamžite a bez akýchkoľvek aktualizácií, napríklad:

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

Pred zatvorením formulára hlásenia sa systém spýta iba na to, či došlo k zmenám variantu. Ak nastali zmeny v PN, automaticky sa uložia bez akýchkoľvek otázok a tiež sa automaticky pokúsia uplatniť v ďalšej relácii práce s prehľadom.

Poznámky:

V prípade množstva chýb v aplikácii nastavení sa najskôr zobrazí hlásenie o probléme a potom sa stále vyskytuje skladba, udalosť je tzv. a generovanie správ. V tomto prípade sú FN, aj keď existovali, stále ignorované a úlohu zohrávajú iba nastavenia.

Pri pridávaní výberu do formulára „Zmeniť možnosť“ sa to robí okamžite s nastaveným príznakom „Zahrnúť do PN“, ale opakujem, z hľadiska vstavaného jazyka zostáva PN nezmenený.

Nastavenie variácie variantu a nastavenie variácie PN spolu priamo nesúvisia, ide o dva rôzne smery zmien.

PN má okrem iného „Ďalšie nastavenia“. Nikdy som nedokázal pochopiť, čím a v akom momente sú naplnené. Správa síce obsahuje nastavenia „označené vo výbere a podmienenom dizajne“ ako vlastné (podľa spoločného podniku), ale dodatočné nastavenia vo všetkých prípadoch boli prázdne. Na ITS o tom nič nie je.

Napriek vyhláseniu v spoločnom podniku sú PN perfektne serializované v xml.

Ak sú na použitie zahrnuté nezávislé prvky výberu aj samotný výber, zostava je zostavená správne, ale pri zobrazení duplikuje informácie o zavedenom výbere v konečnom rozložení.

Predvolený formulár na úpravu verzie zostavy obsahuje veľa zaujímavostí, no nikde nefunguje s FN a PN a aj so základnými nastaveniami funguje skôr na čítanie (okrem toho, že vymaže výber, poradie, konvencie).

Časť 2

Práca s nastaveniami a FN prostredníctvom ich zbierky je takmer vždy prijateľná, ale je dôležité si uvedomiť, že podstata „tretej úrovne“ sa mení. Prvá úroveň vždy obsahuje predvolené nastavenia samotného systému kontroly prístupu, ktoré sa implicitne zobrazujú aj v zdroji dostupných nastavení; na druhej úrovni – nastavenie použitej možnosti. Ale tu vám logika umožňuje buď „prepísať“ základné inštrukcie, alebo ich ignorovať. Práca s PN však už neumožňuje slobodu a jemné manipulácie sa musia vykonávať pomocou špeciálnych metód a niekedy dočasných pomocných sprostredkovateľských objektov, napríklad:

Comp=NewDataCompositionSettingsComposer; // môžete tiež spustiť // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadCustomSettings(comp.CustomSettings);

Tvorca nastavení má metódu (), ktorý načíta hodnoty používateľských nastavení odovzdané ako parameter do metódy. Metóda GetSettings() vám umožňuje získať kópiu aktuálnych nastavení (berúc do úvahy používateľské nastavenia). Metóda Stiahnuť Nastavenia() načíta odovzdané nastavenia do tvorcu nastavení (používateľské nastavenia sa tiež znova vyplnia na základe odovzdaných údajov, pričom sa zohľadní prítomnosť kľúčov, pozri príklad nižšie).

Použitie vlastných nastavení na hlavné nastavenia sa vykonáva v metóde GetSettings() tvorca nastavení. Vykonajú sa tieto akcie:

* Pre typy DataCompositionSelectionElement sa obsah prvkov skopíruje do zodpovedajúcich prvkov vlastných nastavení.

* Pre typy výberu rozloženia údajov prvky umiestnené v hlavných nastaveniach a označené ako Neprístupné zostávajú nezmenené. Prvky z PN sa prenášajú na hlavné. Pridávajú sa na koniec kolekcie pre Selekciu.

* Pre typy DataCompositionSelectionElementGroup sa vlastnosť Usage nastavuje v zodpovedajúcom prvku hlavných nastavení (na základe znamienka použitia prvku PN).

Časť 3

Pri vytváraní konečných nastavení, aby som citoval ITS, sa rôzne nastavenia kombinujú takto:

* Ak je akýkoľvek typ nastavení úplne označený ako vlastný, výsledné nastavenia zahŕňajú PN. V tomto prípade, ak sú niektoré prvky nastavení označené ako nedostupné, potom sa tieto nastavenia umiestnia do výsledných nastavení z vlastnosti Settings Composer.Settings.

* Ak je akýkoľvek typ nastavení označený ako vlastné nie úplne, ale prvok po prvku, potom prvky označené ako vlastné sa prevezmú do výsledných nastavení z vlastnosti Settings Composer.CustomSettings a prvky označené ako nedostupné sa prevezmú do výsledné nastavenia z vlastnosti Settings Composer.Settings .

* Pevné nastavenia sa pridajú k výsledným nastaveniam "tak, ako sú". V tomto prípade je neprijateľná situácia, keď FN a PN majú nastavenia s rovnakým názvom, napríklad výber s rovnakou ľavou hodnotou v podmienke. Podotýkam, že aj úplná zhoda všetkých vlastností týchto podmienok je zakázaná. Úprimne povedané, je to trochu nelogické.

Chcel by som poznamenať, že ak niektorý fragment nastavení podlieha funkčnej možnosti a mal by byť obmedzený, systém funguje „potichu“ - odstráni tento fragment zo všetkých strán, nič nehlási a počas programových manipulácií s takýmto fragmentom , spracováva „nečinné“ chyby, nevytvára, ale kód tiež nemá žiadny účinok. Je však možné, že rôzne vydania sa správajú odlišne.

4. časť.

Rozšírenie formulára prehľadu nám poskytuje parametre „FN“ a „PN“, ale nikde sa neodporúča vypĺňať ich priamo odovzdaním do formulára. Ako ukázali experimenty, bez ďalších tancov s tamburínou sa obsah týchto parametrov ignoruje - prepíše sa pri inicializácii linkera počas procesu otvárania a pri prijatí predtým uložených PN. Odporúča sa pracovať s kľúčmi PN, pomocou ktorých ich môžete získať z úložiska nastavení a potom ich otvoriť a použiť, a to sa deje automaticky na strane formulára správy, nie na formulári na zavolanie.

Parameter „Source of AvailableSettings“ sa pri vytváraní formulára na serveri automaticky preloží do informácií o tvorcovi a nemožno ho prepísať. Alebo skôr môže, ale to sa prejaví až po úplnej redefinícii celého reťazca súvisiacich objektov. V čom GetSourceAvailableSettings() vráti hodnotu Nedefinované až do konca všetkých udalostí otvárania formulára.

Dovoľte mi poznamenať, že parametre formulára, ktoré v podstate nie sú kľúčovými parametrami, „natiahnu“ svoj účinok na niekoľko udalostí, ak je pri otváraní nastavený príznak formácie. Áno, v prípade ProcessingCheckFillOnServer, vyvolaný počas otvárania a formovania, bude dostupný parameter „Výber“, ale s ním, ale vyvolaný jednoducho kliknutím používateľa na tlačidlo „Generovať“, už nebude dostupný. Je to spôsobené tým, že všetky tieto udalosti sú spracované v jednej „návšteve“ na serveri, ak je formácia pri otváraní povolená, a až na samom konci sa kontrola prenesie na klienta a zavolá KeďOtvorenie. V tomto prípade sa prirodzene stratia nekľúčové parametre.

Všeobecné poradie vykonávania udalostí pri otvorení formulára s príznakom na vygenerovanie správy pri otvorení (o niečo viac, ako je popísané v časti „Profesionálny rozvoj“):

Keď CreatedOnServer

Pred odovzdaním možnosti na server

Pri nahrávaní OptionOn Server

Pred nahraním používateľských nastavení na server

Pri načítavaní používateľských nastavení na server

Pri aktualizácii zloženia používateľských nastavení na serveri

ProcessingCheckFillOnServer

KeďOtvorenie

V tomto prípade sa možnosť ani PN nemenia, pokiaľ nebolo vynaložené osobitné úsilie.

5. časť.

Teraz sa pozrime podrobnejšie na úlohu otvorenia formulára prehľadu s jeho konštrukciou a vopred špecifikovaným výberom. Stručná informácia sú o tom informácie na ITS a v metodické odporúčania, ale je tam pokrytý len samotný princíp a nie sú odhalené jemnosti. Ak teda chcete kontextovo vyvolať prehľad, musíte do jeho formulára odovzdať parameter „GenerateOnOpen“, ktorý sa rovná True; a parameter Selection obsahujúci štruktúru. Kľúče štruktúry sú názvy polí ACS alebo parametrov ACS a hodnoty sú ich hodnoty. Citujem SP, ak existuje parameter ACS s názvom zodpovedajúcim názvu kľúča štruktúry, potom sa naň nastaví hodnota. Ak neexistuje žiadny parameter, ale existuje pole, do tohto poľa sa pridá výber. Zároveň, ak existuje parameter a pole s rovnakým názvom, systém ho jednoducho bude ticho ignorovať a nič nenainštaluje.

„Profesionálny rozvoj“ poskytuje príklad zmeny (t. j. zachytenie a prekonfigurovanie) PN „za behu“ v udalosti Pred nahraním používateľských nastavení na server, kde sa odovzdáva argument obsahujúci aktuálnu PN. V skutočnosti to tak nie je vždy – môžu sa napríklad vyskytnúť prípady, keď chyba pri ukladaní PN v predchádzajúcej relácii alebo nezrovnalosti medzi nastaveniami, FN a PN povedú k tomu, že argument „Nastavenia“ bude prázdny. A čo je najzaujímavejšie je, že v tomto prípade ho nebude možné úplne prekonfigurovať; to sa dá urobiť iba „na konci“ sledu udalostí, konkrétne v prípade ProcessingCheckFillOnServer.

Pozrime sa, čo máme pred načítaním PN na server.

Pre jednoduchý prípad, keď v ACS nie je nič prednastavené a v PN nie sú zahrnuté žiadne prvky, je situácia nasledovná: Nastavenia – prázdne; FN – obsahujú správny výber; Mon obsahujú prázdny výber. Tvarovanie funguje korektne, ale z pohľadu používateľa rozhranie odporuje vnútorným a odrádza - výber funguje, ale nie je viditeľný. Podobne, ak v nastaveniach štruktúry možností povolíte Výber v PN, zostava sa zostaví aj s ohľadom na výber, ale používateľ tiež nevidí žiadne výbery.

Nastavme si predvoľby (rovnajúce sa prázdnym hodnotám) v nastaveniach ACS v Konfigurátore a zaraďme ich do PN. Teoreticky by mali FN vyplniť Nastavenia a tie by mali vyplniť PN, ale v skutočnosti máme: v Nastaveniach - Výber s požadovaným prvkom, ale prázdnou pravou hodnotou, FN obsahujú správny výber a PN-ky stále nič neobsahujú. Okrem toho v tomto prípade nebude zostava zostavená, pretože pravá hodnota výberu je prázdna, napriek hodnote odovzdanej v parametri Select.

Pokus o prácu s prvkami PN tiež neprináša výsledky. Pre prvok PN môžete zmeniť iba príznak „Použiť“ a účasť na „Rýchle“. Hodnota výberu na rozhraní bude prázdna, systém nebude generovať žiadne chyby. Podobne bude fungovať aj pokus o prácu s Výberom PN, v debuggeri bude viditeľná správna hodnota ako správne vyplnená, ale na rozhraní nič neuvidíte. Pripomínam, že zmeniť zloženie PN-ky je nemožné. Preto sú potrebné ďalšie triky. Napríklad:

&Na serveri Procedúra SetPresetSelections(UserSettings) Ak nie Parameters.Property("Selection") Then Return EndIf; If Parameters.Selection.Quantity()=0 Then Return EndIf; rTypeEO=Typ("Prvok výberu DataComposition"); Pre každý kľúč 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 Inak pComparisonType=DataCompositionComparisonType.Equals; koniec Ak; // pNecessarySelection = Nedefinované; // pozri, či je v používateľských nastaveniach Selection pNecessaryEO=Undefined; // zistite, či existuje samostatný prvok výberu DataComposition v používateľských nastaveniach Pre každý elnastr From UserSettings.Elements Cycle If TypeValue(elnastr) = Type("DataComposition Selection") a pNecessarySelection=Undefined Then // môže byť len jeden pNecessarySelection= elnastr; // dalo by sa to urobiť aj mimo cyklu, ale kvôli prvkom je potrebné pretriediť používateľské nastavenia... V opačnom prípade If TypeZnch(elnastr) = pTypeEO Then // toto je výberový prvok, môže existovať veľa ich, ale nás zaujímajú tie, ktoré nie sú inicializované alebo s povinným poľom If elstr.LeftValue=pField alebo elstr.LeftValue=Nedefinované a rNeedEO=Nedefinované Potom pNeedEO=elstr; koniec Ak; koniec Ak; EndCycle; // Ak pRequiredSelection<>Undefined Potom // ide ako prioritu pNecessaryEOFromSelection = Undefined; Pre každý elotb z cyklu pNecessarySelection.Elements If elotb.LeftValue=pField Then pNecessaryEOfromSelection=eloteb; Abort EndIf; EndCycle; Ak pNecessary EO from Selection = Undefined Then pNecessary EO from Selection = pNecessary Selection.Elements.Add(pType of EO); pNeedEOFromSelection.LeftValue=pPole; koniec Ak; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=True; // rNeededEO.Use=False; InakIf pNecessarySelection=Nedefinované a pNecessaryEO<>Undefined Potom // vložte prvok pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=True; koniec Ak; pNeed=Nedefinované; Pre každý elotb Z Report.ComposerSettings.Settings.Selection.Elements Loop // priateľským spôsobom by malo existovať rekurzívne vyhľadávanie! If TypeValue(elotb)=pTypeEO a elotb.LeftValue=pField Then pNeed=elotb; Abort EndIf; EndCycle; Ak pNeed = Undefined Then pNeed = Report.Settings Composer.Settings.Selection.Elements.Add(pEOType); pNeed.LeftValue=pMargin; koniec Ak; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=True; //EndCycle; Report.Settings Composer.FixedSettings.Selection.Items.Clear(); // inak povie, že sa prvky pretínajú/protirečia Koniec konania

Najsprávnejší spôsob, ako to nazvať, je:

&Na serveri Spracovanie procedúry Vyplnenie kontrol Na serveri (zlyhanie, skontrolované podrobnosti) Nastavte preddefinované výbery (Prepojovač správ. Nastavenia. Používateľské nastavenia); Koniec procedúry

Potom bude kontextové volanie, napríklad z adresárového formulára, vyzerať takto:

&Procedúra OnClient OpenReport(Command) If ValueFilled(Object.Link) Then ot=New Structure("LinkToDirectory",Object.Link); // takto je pomenované pole v prehľade SDS Form Parameters = New Structure ("Selection, GenerateWhen Opening", select, True); OpenForm("Report.Report1.Form.ReportForm",FormParameters,ThisForm); koniec Ak; Koniec procedúry

Časť 6.

V prípade potreby zmeňte nastavenia zostavy počas práce s ňou vr. aj pri spustení aj po otvorení je najsprávnejšia zmena „od začiatku“, t.j. z nastavení ACS. Zmena schémy ACS sa vykonáva iba s objektom Správa (alebo Externá zostava), a nie s údajmi formulára, a sama o sebe nič nemení - v Nastaveniach a v PN zostáva to isté, čo bolo, a FN môže zostať prázdny. Preto v závislosti od našich úloh:

Po vykonaní

Report.Settings Composer.LoadSettings(SKD.DefaultSettings)

Zmení sa iba možnosť a nič viac;

Po vykonaní techniky uvedenej v odseku 2 (pomocou „sprostredkovateľa“ a metódy NačítaťCustomSettings()

funguje iba vtedy, ak resetujete aktuálnu PN pomocou rozhrania. Samy o sebe, ak sa možnosť zmení, nezmenia sa. V tomto prípade sa výber zmení, ale nový prvok výberu sa nepridá.

Po vykonaní

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

plošina len ticho padá. Testované na niekoľkých rôznych vydaniach. A volať režim zobrazenia nastavení len pre rýchle nastavenia nemá zmysel – neovplyvnili sme ich kompozíciu, takže sa aj tak nič nezmení.

A keďže ešte potrebujeme plnohodnotne zmeniť nielen interné výbery, ale aj zobrazenie na formulári výkazu a v súvisiacich formulároch, musíme buď zmeniť iba Výber, alebo postupovať nasledovne:

&Na serveri Postup ChangeSKD() 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(); // žiaduce, aj keď to stále nemá vplyv na FN. // v skutočnosti je to presne to, čo možno nazvať zmenou v zložení PN Pre každý e-mail From Report.ComponentSettings.Settings.Selection.Elements Cycle email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; If EmptyString(el.UserSettingsIdentifier) ​​​​Then // môžete použiť metódu electronicSetIdentifier pre prvok PN, pozri jej nápovedu v SP, tam je všetko celkom jasné e.UserSettingsIdentifier="ID123"; // dôležité - identifikátor môže byť ANY, nie UUID alebo GUID! el.ViewUserSettings="Test"; koniec Ak; EndCycle; comp=NewDataCompositionSettingsComposer; comp.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.LoadCustomSettings(comp.CustomSettings); Pre každý e-mail From Report.Settings Composer.CustomSettings.Elements Cyklus email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // vytiahnite EndCycle do formulára správy; // a teraz to bude mať efekt: ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.QuickAccess); Koniec procedúry

V skutočnosti môžete túto mechaniku študovať dlho. Táto publikácia vyrástla zo štúdia spôsobov riešenia jedného konkrétneho problému, a preto je dosť jednostranná; ale mám podozrenie, že o vnútornej logike nastavení, najmä používateľských, sa dá napísať samostatná kniha, nie jemnejšia ako tá Khrstalevova. Žiaľ, nemám na to čas ani energiu. Kto považuje konkrétny vývoj za užitočný, je už dobrý.

Niektoré veci boli experimentálne objasnené, a preto sú kontroverzné. Tí, ktorí vedia viac, sú pozvaní kritizovať a komentovať.