Zobrazenie údajov pomocou dynamického zoznamu

Okrem primitívnych dátových typov, ktoré možno nájsť v akomkoľvek programovacom jazyku, existujú v 1C aj jedinečné typy. Každý z nich má svoje vlastné vlastnosti, metódy, funkcie, účel a nuansy použitia v systéme. Jedným z týchto typov je dynamický zoznam, ktorý výrazne uľahčuje mnohé aplikované úlohy. Preto musia vývojári poznať a vedieť zvládnuť tento univerzálny nástroj.

Vlastnosti dynamických zoznamov v 1C

Účelom tohto typu je zobraziť informácie z ľubovoľných databázových tabuliek bez ohľadu na ich typ. Mechanizmus bol vytvorený na základe SKD a má podobné schopnosti. To však neznamená, že budete musieť nevyhnutne napísať žiadosť v jazyku 1C, hoci táto príležitosť existuje a mala by sa využiť. Môžete jednoducho zadať tabuľku, ktorej informácie vás zaujímajú, a 1C nezávisle vygeneruje jednoduchý dotaz.

Ak chcete vidieť, ako sa dynamický zoznam tvorí a aké údaje zobrazuje, musíte v konfigurátore otvoriť spravované formuláre, v ktorých sa nachádza: v zozname podrobností otvorte pomocou kontextového menu jeho vlastnosti a dávajte pozor na položku „Vlastné Žiadosť“. Ak nie je začiarkavacie políčko, parameter „Hlavná tabuľka“ odráža databázovú tabuľku, z ktorej sa preberajú údaje. V opačnom prípade dynamický zoznam odráža údaje vlastného dotazu, ktoré možno zobraziť otvorením nastavení zoznamu.

Schéma vlastného dotazu sa používa oveľa častejšie, pretože poskytuje vynikajúcu príležitosť na kombinovanie a zobrazenie širokej škály údajov. Najčastejšie sa tento mechanizmus používa na zobrazenie zostatkov skladu, cien položiek, príjmov, výdavkov alebo nákupov. Musíte ho používať opatrne, pretože pri zložitých dopytoch môže dôjsť k poklesu výkonu.

Ďalšia užitočná vlastnosť dynamického zoznamu sa otvorí, keď kliknete na nápis „Nastavenia zoznamu“. Táto ponuka vám umožňuje urobiť informácie dostupnejšie a zrozumiteľnejšie pre koncových používateľov, a to aj pri použití štandardnej sady polí. Bez ohľadu na to, či je žiadosť ľubovoľná alebo nie, zobrazí sa karta „Nastavenia“, kde môžete zadať:

  • Dynamický výber zoznamu;
  • skupiny;
  • Triedenie;
  • Dekor.

Použitie parametrov robí dynamické zoznamy univerzálnymi a celkom flexibilnými. Môžete ich tiež prepojiť s podrobnosťami v spravovanom formulári a údaje sa budú meniť v závislosti od parametrov vybraných používateľom. Použitie týchto mechanizmov možno pochopiť a oceniť zvážením príkladov problémov v reálnom živote.

Ako príklad zvážte úlohu reflektovania zvyškov nomenklatúry na kontrolovanom formulári. V reálnej praxi sa takéto objednávky vyskytujú pomerne často v rôznych konfiguráciách a ako pomôcka je ideálny dynamický zoznam. Pre túto úlohu budeme musieť použiť vlastný dotaz, parametre dynamického zoznamu a jeho nastavenia.

Pre väčšiu prehľadnosť vytvorme samostatné externé spracovanie a umiestnime naň dynamický zoznam. Na realizáciu našich plánov nebude stačiť tabuľka s nomenklatúrou, preto musíme povoliť ľubovoľný dotaz. Popíšeme si v ňom ľavé prepojenie adresára so zoznamom položiek a registrom zostatkov a nastavíme adresár ako hlavnú tabuľku. Táto schéma umožní používateľom, ktorí pracujú s dynamickým zoznamom, pridávať alebo meniť položky.



SELECT NomenclatureList.Name AS Name, GoodsInWarehousesRemainings.Warehouse AS Warehouse,TovarVWarehousesRemainings.QuantityRemaining AS QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList LEFT CONNECTION RegisterAkumulácia.TovarVSkladoch.Register ist.Link = ProductsInWarehousesRemainings.Nomenklatúra WHERE

Keďže naša požiadavka používala parameter „CurrentDate“, musíme pred použitím spracovania nastaviť jeho hodnotu. Ak to chcete urobiť, vo formulárovom module v procedúre „When CreatedOnServer“ mu pomocou štandardného príkazu priraďte funkciu „CurrentSessionDate“. Musíme tiež zobraziť dynamický zoznam na kontrolnom formulári a zmeniť poradie polí kvôli prehľadnosti. Presuňte atribút „Zostávajúca nomenklatúra“ do prvkov formulára (ľavá horná časť) a pomocou modrých šípok zmeňte poradie polí v tabuľke vo formulári.

&Na serveri Postup pri vytvorení na serveri (zlyhanie, štandardné spracovanie) nomenklatúra zostáva. Parametre. Set ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Už v tejto fáze môžeme otvoriť naše externé spracovanie v 1C a vidieť, že dynamický zoznam funguje. Môžeme sa pozerať na zostatky, vytvárať položky a skupiny a vyhľadávať. Zákazníci často žiadajú pridať možnosť vybrať si dátum, kedy uvidia zostatky. V prípade formulára s dynamickým zoznamom sa to dosiahne pomocou dodatočného poľa a pomocou neho nastavenia parametrov.

Pridajte atribút „DateRemaining“ typu „Dátum“ a preneste ho do prvkov formulára. V poli udalosti vytvoríme udalosť „OnChange“ a napíšeme kód pre nastavenie parametra „CurrentDate“ použitého v dynamickej požiadavke. Aby používateľ pri otvorení formulára okamžite pochopil, ku ktorému dátumu vidí zostatky, vykonáme malé zmeny v postupe „Pri CreatedOnServer“.



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); Koniec procedúry &Na klientovi Postup Zostávajúci DátumPriChange(Element)Nomenklatúra Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Koniec procedúry

Výsledkom je, že náš formulár Dynamický zoznam môže odrážať zostatky k akémukoľvek dátumu.

Zvážili sme len malú časť možností tejto sady nástrojov, ale to už stačí na pochopenie výhod tohto typu dynamického zoznamu. Podobný mechanizmus sa používa pre mnoho úloh, ale najčastejšie sa vyskytuje v typických konfiguráciách v spravovaných formulároch:

  1. Výber;
  2. zoznamy.

Na získanie dynamického zoznamu a jeho požiadavky v štandardných spravovaných formulároch musí vývojár otvoriť požadovaný formulár v konfigurátore. V sekcii podrobností nájdite podrobnosti s typom údajov „DynamicList“ (najčastejšie je zvýraznený tučným písmom). Jeho vlastnosti obsahujú text požiadavky, výbery a ďalšie nastavenia.

Platforma 1C:Enterprise 8.2 dokáže pracovať s mnohými záznamami v databázovej tabuľke dynamickým spôsobom, to znamená čítať údaje po častiach. V predošlých článkoch sme sa zaoberali mechanizmom dynamických zoznamov a metódami na optimalizáciu práce s nimi.

Dnes budeme riešiť neštandardný problém pre dynamické zoznamy. Celkovú sumu budeme musieť vypočítať pomocou atribútu dokumentu „Suma“ a zobraziť ju v päte zoznamu. Podobne vypočítajte priemernú hodnotu pre pole „Hodnotenie“ a tiež ju zobrazte v päte dynamického zoznamu. Výpočet celkových polí musí zohľadňovať výber nastavený používateľom v nastaveniach zoznamu dokladov.

Celý problém spočíva v tom, že dynamický zoznam neprijíma všetky záznamy naraz, ale prijíma ich po častiach. Preto nemôžeme okamžite získať súhrn všetkých dokumentov zodpovedajúcich aktuálnemu výberu. Ako vypočítať súčet?

Implementácia

A tak prejdime k riešeniu problému. Začnime zmenou formy, potom si popíšeme algoritmus na získanie konečných hodnôt.

Forma a rozhranie

Najprv si pripravíme formulár dokumentu na zobrazenie výsledných polí. Ak to chcete urobiť, pridajte dva reťazce podrobností vo forme „Hodnotenie“ a „Suma“.

V týchto detailoch budú zaznamenané celkové hodnoty pre dokumenty.

Ak chcete zobraziť hodnoty podrobností v päte dynamického zoznamu, musíte povoliť príslušnú možnosť pre príslušný prvok formulára zoznamu (pozrite si nasledujúci obrázok).

Teraz sa musíte rozhodnúť, pre akú udalosť sa budú aktualizovať výsledky v päte zoznamu. Pre zjednodušenie vývoja pridáme do príkazového panela príkaz "Aktualizovať" a príslušný formulárový prvok. Po vykonaní tohto príkazu sa aktualizujú súčty.

V testovacej konfigurácii, ktorú si môžete stiahnuť z odkazu na konci článku, som pridal aj súhrnnú udalosť aktualizácie pri nahrávaní dokumentu. V tomto prípade sa používa mechanizmus oznamovania formulára. Nebudeme sa tým podrobnejšie zaoberať.

Algoritmus

Najproblematickejšia časť zostáva - musíte získať celkové hodnoty. Postupujeme nasledovne: vytvoríme požiadavku do databázy na získanie hodnôt konečných polí v súlade s výberom nastaveným v dynamickom zozname. Stojí za zváženie, že výber môže mať zložitú podmienku zo skupín.

Poznámka: Nastavenia pre dynamické zoznamy (pozri snímku obrazovky vyššie) sú založené na mechanizmoch systému zostavovania údajov (DCS). Podľa toho s nimi môžete pracovať podobným spôsobom (programovo pridávať, meniť, čítať atď.).

Fázy vytvárania žiadosti o získanie výsledkov sú nasledovné:

1. Dostaneme počiatočnú požiadavku na dynamický zoznam.

Ako vidíme, žiadosť vyberá všetky podrobnosti dokumentu. Aby som pridal trochu viac zložitosti, pridal som svoje vlastné pole „Úroveň hodnotenia“, vygenerované konštruktom „SELECT“.

2. Spracujeme text podmienok žiadosti (časť „KDE“) a nahradíme ho do pôvodnej žiadosti.

Do prijatého zdrojového textu požiadavky musíme pridať podmienky v súlade s nakonfigurovaným dynamickým výberom zoznamu.

Procedúra v závislosti od typu odovzdaného prvku výberu (skupina alebo prvok výberu) vygeneruje zodpovedajúci text podmienky. Všetky podmienky v skupine sú ohraničené zátvorkami a podmienky zahrnuté v skupine sú tiež ohraničené zátvorkami. Podmienky medzi výrazmi závisia od nadradenej skupiny (podmienka „AND“ je umiestnená medzi najvyššie prvky v hierarchii).

Ak má prvok nastavený príznak použitia (vlastnosť "Usage"), prvok sa spracuje. Vygenerovaný text závisí aj od podmienky porovnania (rovná sa, nerovná sa, v zozname atď.). Závislosť vygenerovaného textu podmienky od typu porovnania je možné vidieť v nasledujúcej funkcii.

Ďalšou zaujímavou funkciou je podľa mňa „GetFieldTextByView“. Je potrebný na nahradenie polí, ktoré sú tvorené výrazmi dotazovacieho jazyka, do podmienok dotazu. Vyššie som k pôvodnej žiadosti pridal pole „Úroveň hodnotenia“. Ak ho používateľ použije pri výbere, potom musí byť do podmienky dotazu dosadený celý výraz. Táto funkcia získa text poľa z požiadavky na základe jej reprezentácie. Pre takéto zložité polia vráti celý text výrazu.

Ďalšie podrobnosti o algoritme nájdete v konfigurácii testu priloženej k článku. Nižšie je snímka obrazovky nastavení výberu a podmienok požiadavky, ktoré sú pre ne vygenerované.

Vygenerovaný text podmienky sa pripojí k pôvodnej žiadosti o dynamický zoznam. Výsledok dotazu sa umiestni do dočasnej tabuľky.

3. Prvý dotaz umiestnime do dočasnej tabuľky a vykonáme zoskupenie podľa súhrnných polí s potrebnými agregačnými funkciami.

Dovoľte mi pripomenúť, že potrebujeme získať priemernú hodnotu pre pole „Hodnotenie“ a celkovú sumu pre pole „Suma“. Už sme vygenerovali požiadavku zohľadňujúcu výbery, ostáva už len vypočítať celkové hodnoty. To sa vykonáva pomocou nasledujúcej žiadosti:

Po vykonaní požiadavky spracujeme výsledný výsledok, vrátime ho klientovi a zapíšeme do údajov formulára, ktoré sme predtým vytvorili. Nakoniec sme dostali výsledky zobrazené v päte dynamického zoznamu (pozri prvú snímku obrazovky v článku).

Optimálnosť riešenia

Vo všeobecnosti môže mať tento prístup negatívny vplyv na výkon. Napríklad, ak program vypočíta súčet bez nastaveného výberu v dynamickom zozname, potom môže byť počet vybraných záznamov obrovský (napríklad v priebehu niekoľkých rokov). Výsledkom je, že každá aktualizácia výsledkov môže trvať desiatky (!!!) sekúnd. Preto má zmysel vypočítať výsledky iba vtedy, ak bol stanovený výber. Tieto podmienky som nastavil v testovacej konfigurácii.

Navyše môžeme vypočítať len súčty a požiadavky na strane servera. Preto musíte k serveru pristupovať vážne, pretože postup aktualizácie súčtu sa môže vykonávať veľmi často. Predstavte si pokladničný denník v obchodnej organizácii, kde je možné zadať až 5 účteniek za minútu a až 300 účteniek za hodinu. Zakaždým, keď je dokument napísaný, súčty sa aktualizujú. Preto by bolo rozumné znížiť prenášanú prevádzku použitím postupov vytrhnutých z kontextu.

Nasledujúca snímka obrazovky zobrazuje kód programu na volanie funkcie servera mimo kontextu, ktorá vracia súčty.

Prvým parametrom je prechod cez dynamický výber zoznamu, druhým je štruktúra typu „SelectionFieldNameSelectionFieldValueType“. Upozorňujeme, že prvý parameter vo funkcii sa získa ako jeho vlastná hodnota. Neviem presne povedať prečo, ale ak odošlete výber ako odkaz, platforma zobrazí chybu, že výber nemožno zmeniť. Chyba sa obišla iba týmto spôsobom.->

Poznámka: použitie procedúr mimo kontextu vám umožňuje niekoľkonásobne znížiť veľkosť prenášanej prevádzky, pretože údaje formulára sa na server neprenášajú na rozdiel od kontextovo citlivých procedúr servera (direktíva „&OnServer“).

Záver

Na záver poviem, že tento prístup k výpočtu súčtov v dynamickom zozname je z hľadiska metodiky vývoja nesprávny. Bolo by správne získať súčet podľa registrov. Napríklad v kontrolnom denníku opäť môžeme získať sumu peňazí v aktuálnej pokladnici buď z dokladov, alebo z príslušnej akumulačnej evidencie.

Navyše, použitie akumulačných registrov vám umožní vypočítať súčty bez zohľadnenia výberu, pretože systém pracuje optimálne s už vypočítanými súčtami za predchádzajúce mesiace.

Napriek tomu sa metóda opísaná v článku uskutočňuje pri riešení problémov.

Súbory na stiahnutie:

Tlačiť (Ctrl+P)

Dynamický zoznam

1. Všeobecné informácie

Dynamický zoznam je špeciálny dátový typ, ktorý vám umožňuje zobraziť ľubovoľné informácie z databázových tabuliek vo formulári. Ak to chcete urobiť, musíte zadať tabuľku, z ktorej chcete zobraziť údaje, alebo opísať výsledný výber v jazyku dotazu.
Mechanizmus je založený na systéme skladania údajov a poskytuje možnosti triedenia, výberu, vyhľadávania, zoskupovania a podmieneného formátovania prijatých údajov. V tomto prípade je zdrojom údajov požiadavka, ktorá je buď vygenerovaná systémom automaticky (na základe zadaných údajov), alebo zapísaná manuálne vývojárom.

Ryža. 1. Možnosti vytvorenia dynamického zoznamu

Pri vytváraní atribútov formulára typu DynamicList vývojár si môže vybrať dva spôsoby vytvorenia dátového dotazu:
● Zadaním hlavnej tabuľky – v tomto prípade stačí zadať tabuľku (Vlastnosť hlavnej tabuľky), z ktorej chcete prijímať údaje, a systém automaticky vygeneruje dopyt na údaje (pozri pravú časť na obr. 1).
● Manuálne generovanie požiadavky - na to je potrebné nastaviť vlastnosť Vlastná požiadavka (pozri ľavú stranu Obr. 1). Potom bude k dispozícii manuálne generovanie požiadavky na získanie údajov z infobázy.
Dotaz môže získať údaje z viacerých tabuliek, takže môžete zadať primárnu tabuľku. Je to preto, aby dynamický zoznam mohol určiť, ktoré údaje sú primárne a ktoré sekundárne, a mohol správne vybrať a zobraziť informácie, ako aj poskytnúť štandardné príkazy. Ak však nie je možné určiť hlavnú tabuľku v dotaze, nemožno ju špecifikovať, ale potom
dynamický zoznam nebude poskytovať príkazy súvisiace s hlavnou tabuľkou. Okrem toho sa v tomto prípade (bez uvedenia hlavnej tabuľky) výrazne zníži efektivita získavania údajov dynamickým zoznamom.
Na zlepšenie výkonu sa odporúča, aby všetky spojenia používané vo vlastnom dotaze len na získanie ďalších údajov boli voliteľné pomocou rozšírenia systému dotazovania na zloženie údajov.
Pre dynamický zoznam, ktorý je hlavným atribútom formulára, je možné nastaviť hodnoty výberu pomocou parametra formulára Výber. Na to je potrebné, aby sa názov vlastnosti štruktúry nachádzal v parametri Výber,
sa zhoduje s názvom poľa dynamického výberu zoznamu. V tomto prípade bude hodnota vlastnosti štruktúry nastavená ako správna hodnota prvku výberu. Ak sa pole, pevné pole alebo zoznam hodnôt odovzdá ako hodnota prvku parametra Výber formulára dynamického zoznamu, potom sa k výberu pridá podmienka s možnosťou V zozname so správnou hodnotou. z ktorých je umiestnený zoznam hodnôt (na ktoré sa konvertuje pole a pevné pole).
Ľubovoľným dotazom v dynamickom zozname môže byť dotaz, v ktorom sa parameter používa na generovanie hodnoty poľa, napríklad:

VYBERTE SI
VOĽBA
KEĎ Doručenie. Koeficient = 1 POTOM &Prezentácia
INAK Dodanie. Koeficient
KONIEC AS pomer
OD

Navyše, ak sa typ hodnoty parametra líši od typu atribútu objektu (napr. Rekvizity1 má typ číslo a hodnota parametra je typ Linka), potom na správne zobrazenie poľa musíte explicitne preniesť hodnotu parametra na požadovaný typ:

VYBERTE SI
VOĽBA
KEĎ Delivery.Coefficient = 1 TAK EXPRESS(&Representation AS String(100)) ELSE Delivery. Koeficient
KONIEC AS pomer
OD
Dokument.Dodanie produktov AKO doručiť

Ak je pole, ktorým sa nastavuje výber, deaktivované pomocou funkčných možností, výber pomocou takéhoto poľa sa nenainštaluje, aj keď sa hodnota výberu odovzdá ako parametre formulára alebo odkazy na parametre výberu.
Pomocou vlastnosti dynamického čítania údajov označíte dynamický zoznam potrebu čítať údaje po malých častiach
(ďalšie podrobnosti o spôsoboch získavania údajov pomocou dynamického zoznamu a ukladania údajov do vyrovnávacej pamäte nájdete nižšie). Bez ohľadu na tento atribút platia nasledujúce podmienky:

● Ak je režim zobrazenia nastavený na hierarchický zoznam, budú sa čítať iba údaje aktuálnej skupiny a údaje všetkých rodičovských prvkov (bez potomkov).
● Ak je nastavený režim stromového zobrazenia, budú sa čítať iba údaje z otvorených uzlov stromu.
● Jednorazové načítanie údajov dynamického zoznamu nie je podporované, ak je nastavené hierarchické prehliadanie (vlastnosť zobrazenia je nastavená na Strom) a počiatočné zobrazenie stromu je nastavené na možnosť Rozbaliť všetky úrovne. Na získanie údajov sa odošle toľko požiadaviek na server, koľko je uzlov v zobrazenom zozname.
V rámci jediného načítania údajov dynamický zoznam opätovne používa predtým vytvorené dočasné tabuľky, ak sú splnené nasledujúce podmienky:
● Dávkový dotaz zoznamu nemá po hlavnom dávkovom dotaze žiadne dotazy.
● Zloženie dočasných tabuliek a polí v nich je nezmenené od predchádzajúceho vykonania dávkovej požiadavky.

Vo svojej práci dynamický zoznam používa hodnoty nasledujúcich vlastností podrobností o objekte metadát:
● formát,
● úprava formátu,
● nápoveda,
● znak pre zvýraznenie záporných hodnôt,
● maska,
● viacriadkový znak režimu,
● znak pokročilých úprav,
● režim hesla.
Pri zobrazovaní a úprave výberu a parametrov systému skladania údajov sa používa formát úpravy príslušného poľa.

2. Obmedzenia a funkcie

Pri nastavovaní výberu v dynamickom zozname nezabudnite, že výber neovplyvní skupiny, ak je režim zobrazenia dynamického zoznamu Hierarchický zoznam alebo Strom. Pod „skupinami“ rozumieme prvok adresára alebo plánu typov charakteristík, ktorých vlastnosť ThisGroup je nastavená na hodnotu True.
Použijú sa kvalifikácie automaticky aplikované dynamickým zoznamom na štandardné podrobnosti Vlastník, Rodič, Dátum, Obdobie a Táto skupina
pomocou štandardných nástrojov systému na zostavovanie údajov. Výber, automaticky aplikovaný dynamickým zoznamom na kľúčové polia, je možné použiť štandardnými prostriedkami systému na zostavovanie údajov, ako aj priamym pridaním podmienok do textu požiadavky IN do polí hlavnej tabuľky. V dôsledku aplikovania výberov pomocou nástrojov rozloženia je možné ich použiť vo vnorených dopytoch aj v parametroch virtuálnych tabuliek.

Pri vývoji dynamických zoznamov sa odporúča otestovať všetky dynamické zoznamy pomocou vlastných dopytov. Počas procesu overovania by ste sa mali uistiť, že ak dotaz na zoznam obsahuje vnorené dotazy alebo virtuálne tabuľky a v nich polia s aliasmi, ktoré sa zhodujú s aliasmi štandardných podrobností Vlastník, Rodič, Dátum, Obdobie, Táto skupina alebo kľúčové polia sú k dispozícii pre výber, potom sú tieto polia platné, zodpovedajú štandardným údajom, s ktorými sa zhoduje ich prezývka. Ak to tak nie je, treba zmeniť požiadavku tak, aby sa zhodovali resp
prezývka bola iná.
Ak sa rozhodnete manuálne vygenerovať požiadavku, potom sa na žiadosť vzťahujú určité obmedzenia:
● Použitie príkazu FIRST v dotaze na dynamický zoznam nie je podporované. Ak potrebujete použiť výber obmedzený počtom záznamov v dynamickom zozname, mali by ste prepracovať požiadavku na generovanie dynamického zoznamu tak, aby sa skutočný obsah požiadavky umiestnil do poddotazu a obmedzili počet záznamov prijaté v tomto poddotaze. Namiesto poddotazu môžete použiť aj dočasnú tabuľku.
● Výber, triedenie a zoskupovanie nie sú podporované:

  • Podľa detailov tabuľkových častí.
  • Zobraziť polia.
  • Pole DataVersion.
  • Pole PredefinedDataName.
  • Pole typu tabuľky účtovnej osnovy.
  • Pole Typ pohybu tabuľky registra akumulácie.
  • Pole TypeValues ​​tabuľky charakteristického typového plánu.
  • Typ poľa Typ;
  • Pole typu String (neobmedzená dĺžka).
  • Pole typu BinaryData.

● Triedenie a zoskupovanie podľa polí subconto nie je podporované<НомерСубконто>a ViewSubconto<НомерСубконто>Tabuľky Pohyby Podkonto účtovného registra.
● Zoskupovanie podľa polí, ktoré sú výrazmi v jazyku dotazov obsahujúcich agregačné funkcie, nie je podporované.
● Keď je vybratá hlavná tabuľka, dotaz na dynamický zoznam má nasledujúce obmedzenia:

  • Pripojenia nie sú podporované.
  • Sekcia ORDER BY nie je podporovaná. Mali by ste použiť dotaz bez hlavnej tabuľky alebo nastaviť potrebné zoradenie prostredníctvom nastavení dynamického zoznamu.

● Ak je dynamický zoznam zobrazený ako hierarchický zoznam alebo strom, potom sa položka nezobrazí ako dynamický zoznam, pokiaľ nie je zobrazený aspoň jeden rodič tejto položky. Inými slovami, na zobrazenie prvku hierarchického zoznamu musí dynamický zoznam zobraziť aj všetkých rodičov tohto prvku až po začiatok zoznamu. V tomto prípade hornou časťou zoznamu máme na mysli jedno aj druhé
koreňový prvok hierarchického objektu zobrazeného dynamickým zoznamom alebo prvok nastavený ako vlastnosť ParentTopLevel rozšírenia tabuľky formulárov pre dynamický zoznam.

Použitie nasledujúcich tabuliek ako hlavnej tabuľky dynamického zoznamu nie je podporované:

● Tabuľka, ktorá nemá kľúč, ktorý jednoznačne identifikuje každý záznam tabuľky (odkaz pre tabuľky objektov a kľúč záznamu pre tabuľky registrov). Nasledujúce tabuľky však možno nastaviť ako hlavnú tabuľku dynamického zoznamu (napriek tomu, že nemajú kľúč):

● Tabuľka podsúborov účtovného registra;
● všetky virtuálne tabuľky účtovného registra okrem tabuľky MovementsSubconto;
● tabuľky konštantných hodnôt ​​(vrátane tabuľky konštant);
● tabuľky externých zdrojov údajov bez kľúčových polí;
● kockové tabuľky externých zdrojov údajov;
● tabuľky akumulačných registrov:

  • revolučný stôl;
  • bilančná tabuľka;
  • tabuľka obratu a zostatkov.

● tabuľky výpočtových registrov:

  • tabuľka skutočnej doby platnosti;
  • rozvrhové údaje;
  • základné údaje.

● Tabuľky tabuľkových častí objektov;
● Zmeniť registračné tabuľky (používané v mechanizmoch výmeny údajov);
● sekvenčné tabuľky;
● Konverzné tabuľky (používané v mechanizmoch pravidelného zúčtovania).
● Tabuľka, ktorá sa používa v dotaze iba vo vonkajšom spojení.

Inými slovami, dynamický zoznam so zadanou hlavnou tabuľkou bude fungovať správne, ak v dôsledku vykonania dotazu
zadaný ako zdroj údajov sa počet riadkov získaných z hlavnej tabuľky nezvýši (berúc do úvahy uložený výber). Ak sa v dôsledku vykonania dotazu zvýši počet riadkov získaných dotazom z hlavnej tabuľky, povedie to k narušeniu jedinečnosti kľúča záznamov tabuľky zobrazenej zoznamom. V tomto prípade musíte zakázať používanie hlavnej tabuľky dynamického zoznamu.
Pri práci s dynamickým zoznamom musíte brať do úvahy prístupové práva k detailom zobrazeným zoznamom:
● Údaje zo stĺpcov dynamického zoznamu, ktoré sú označené vlastnosťou Vždy použiť, ale pre ktoré aktuálny používateľ nemá právo Zobraziť, sa neprenášajú na stranu klienta. Prístup k údajom takýchto stĺpcov (pomocou vlastnosti CurrentData a metódy RowData())
na strane klienta nie je možné.
● Ak aktuálny používateľ nemá právo Zobraziť na kľúčové pole dynamického zoznamu, načítanie údajov z tohto dynamického zoznamu bude mať za následok chybu narušenia prístupu.
Pre dynamický zoznam, ktorý zobrazuje zoznam enumerácií, neexistuje možnosť interaktívneho prispôsobenia zoznamu.
Zloženie stĺpcov a nastavenia dynamického zoznamu sú spojené s poľami dotazu pomocou aliasov polí výberu. Ak alias nie je explicitne špecifikovaný v dotaze na výberové pole a pole je systémové, potom sa ako alias použije názov poľa pre anglickú verziu vstavaného jazyka.
Zadaný vzťah znamená, že pri zmene (alebo explicitnom určení aliasu pre pole, pre ktoré bol použitý automatický alias)
alias poľa dopytu, ktoré generuje údaje dynamického zoznamu, sa stratia nastavenia atribútov dynamického zoznamu, prvky formulára „stratia“ zobrazené podrobnosti, nastavenia dynamického zoznamu budú nesprávne atď.
Ak je zdrojom údajov dynamického zoznamu tabuľka (bežná alebo virtuálna), ktorá umožňuje nastaviť výber podľa obdobia, tak ak používateľ nastaví obdobie zobrazenia v takomto dynamickom zozname (príkaz Nastaviť interval dátumu...),
zadané hranice obdobia budú nastavené ako hodnoty výberu alebo parametre virtuálnej tabuľky. Ak pomocou jazykového rozšírenia
dopytov na systém skladania údajov boli explicitne špecifikované názvy parametrov virtuálnej tabuľky - parametre so zadanými
mená. Tabuľky, u ktorých je možné ovládať obdobie zobrazovania alebo spracovania údajov:
● registrovať tabuľky (hlavné alebo virtuálne), pre ktoré je možné vyberať podľa obdobia (pre kalkulačný register - podľa obdobia registrácie);
● hlavné tabuľky dokumentov, obchodných procesov a úloh;
● hlavné tabuľky denníkov dokumentov;
● hlavné sekvenčné tabuľky, sekvenčné hraničné tabuľky.
Parametrom dotazu na dynamický zoznam môže byť pole alebo zoznam hodnôt. Ak je však parametrom zoznam hodnôt, potom sa ako hodnota výberu použije iba prvá hodnota v zozname. Ak dynamický zoznam používa dotaz s parametrami, počiatočné nastavenie hodnôt parametrov sa musí vykonať v obslužnom programe OnCreateOnServer.
Pri zobrazovaní údajov dynamického zoznamu majte na pamäti nasledujúce body:
● Keď programovo zmeníte vlastnosti dynamického zoznamu, panely príkazov priradené k zoznamu sa automaticky znovu nevyplnia.
s týmto dynamickým zoznamom.
● Ak sú viaceré polia zoskupené do skupiny s režimom zoskupovania v bunke a v zoskupených poliach je pole, ktoré sa zobrazuje ako začiarkavacie políčko, potom sa toto začiarkavacie políčko vždy zobrazí ako prvé vo výslednej bunke (naľavo od text).
V dynamickom zozname pri určovaní typu údajov pre polia, ktorých výrazy zahŕňajú parametre, polia alebo literály, je výsledný typ určený typmi polí a literálov. Ak typ hodnoty parametra nie je zahrnutý vo výslednom dátovom type, jeho hodnota bude skrátená.
Napríklad v nasledujúcom príklade bude pole typu Číslo.

VOĽBA
KEĎ JE TO KLAMSTVO
POTOM 5
INAK
&Parameter
KONIEC

Ak nastavíte parameter Parameter na hodnotu iného typu, dynamický zoznam pre toto pole dostane hodnotu 0 (predvolená hodnota pre typ Číslo).
Ak v takejto situácii potrebujete vybrať parameter iného typu, odporúča sa použiť konštrukciu dotazovacieho jazyka EXPRESNÉ. Napríklad,
ak vo vyššie uvedenom príklade potrebujete do parametra vložiť reťazec nie dlhší ako 100 znakov, mali by ste nahradiť jednoduchú indikáciu parametra výrazom s explicitným typovým pretypovaním:

VOĽBA
KEĎ JE TO KLAMSTVO
POTOM 5
INAK
EXPRESS(&Parameter AS String(100))
KONIEC

Ak ľubovoľný text žiadosti o dynamický zoznam používa parametre vo výrazoch výberových polí, mali by ste explicitne uviesť typ parametrov pomocou konštrukcie EXPRESNÉ. Napríklad namiesto &Nomenklatúra AS Nomenklatúra použitie
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS Nomenklatúra. V opačnom prípade môže vyhľadávanie cez vyhľadávací panel fungovať
nesprávne alebo spôsobujú chyby.

3. Metódy na získavanie a ukladanie údajov do vyrovnávacej pamäte s dynamickým zoznamom

Pri získavaní údajov na zobrazenie využíva dynamický zoznam jednu z troch metód:
1. Čítanie z databázy sa vykonáva po častiach s počtom dátových prvkov o niečo väčším, ako je počet riadkov súčasne zobrazených v zozname (ale nie menej ako 20). Údaje sa neukladajú do vyrovnávacej pamäte na serveri.
2. Čítanie z databázy sa vykonáva po stranách 1 000 údajových položiek. Údaje sa ukladajú do vyrovnávacej pamäte na serveri. Hierarchické údaje sa ukladajú do vyrovnávacej pamäte: pre každého rodiča sa do vyrovnávacej pamäte neukladajú viac ako 2 stránky prvkov. Na jeden dynamický zoznam sa neukladá viac ako 20 stránok položiek. Ukladanie do vyrovnávacej pamäte bude povolené dynamickým zoznamom pre nasledujúce tabuľky:
● Kritériá výberu;
● všetky tabuľky účtovného registra okrem hlavnej tabuľky a tabuľky Pohyby Podkont;
● Všetky tabuľky akumulačných registrov okrem hlavnej tabuľky;
● všetky tabuľky informačného registra okrem hlavnej tabuľky;
● Všetky tabuľky výpočtového registra okrem hlavnej tabuľky;
● Virtuálna tabuľka úloh podľa účinkujúcich;
● Tabuľky externých zdrojov bez kľúčov;
● Kocky z externých zdrojov.

3. Čítanie z databázy sa vykonáva po stranách 1 000 prvkov. Prvá časť sa rovná 1 strane. Každá nasledujúca časť sa zväčší o 1 stranu (keď sa dosiahne koniec predchádzajúcej ukážky). Čím bližšie sa „bod pohľadu“ približuje ku koncu zobrazených údajov, tým väčšia je vzorka načítaná z databázy, ktorá sa prípadne rovná všetkým zobrazeným údajom. Údaje sa ukladajú do vyrovnávacej pamäte na serveri. Maximálny počet záznamov vo vyrovnávacej pamäti a dynamickom zozname je 1 000 000.
V závislosti od toho, čo je vybrané hlavnou tabuľkou dynamického zoznamu a akú hodnotu má vlastnosť Dynamické čítanie, sa používa jeden alebo druhý spôsob čítania údajov:

● Ako hodnota vlastnosti Hlavná tabuľka je určená jedna z nasledujúcich tabuliek: výmenný plán, adresár, zoznam dokladov, dokladový denník, plán druhov charakteristík, účtová osnova, plán druhov kalkulácií, obchodný proces, úloha, tabuľka body obchodného procesu:



● Ako hodnota vlastnosti Hlavná tabuľka je určená jedna z nasledujúcich tabuliek: hlavná tabuľka informačného registra, akumulačný register, účtovný register, kalkulačný register, virtuálna tabuľka účtovného registra PohybySubkonto:

● Vlastnosť dynamického čítania:
● Nainštalované: používa sa metóda 1 (popis metód je uvedený vyššie).
● Reset: Používa sa metóda 2 (popis metód je uvedený vyššie).

● Vlastnosť Hlavná tabuľka obsahuje tabuľku kritérií výberu alebo tabuľku úloh podľa vykonávateľa (Úlohy podľa interpreta):
● Kľúč identifikujúci riadok tabuľky: Odkaz.

● Vlastnosť Main table určuje virtuálnu tabuľku informačného registra SliceFirst alebo SliceLast:
● Kľúč identifikujúci riadok tabuľky: RecordKey.
● Nie je možné použiť vlastnosť Dynamické čítanie.
● Používa sa metóda 2 (popis metód je uvedený vyššie).

● Vlastnosť Hlavná tabuľka je nastavená na jednu z tabuliek virtuálnych registrov, okrem tých, ktoré sú uvedené vyššie:

● Nie je možné použiť vlastnosť Dynamické čítanie.

● Nie je špecifikovaná vlastnosť Main table, používa sa ľubovoľný dotaz:
● Kľúč identifikujúci riadok tabuľky: Číslo.
● Nie je možné použiť vlastnosť Dynamické čítanie.
● Používa sa metóda 3 (popis metód je uvedený vyššie).

Na zobrazenie sa dáta prenášajú klientovi po častiach, ktorých veľkosť je podobná veľkosti časti pri 1. spôsobe čítania dát (popísaný na začiatku tejto časti).
Keď vytvoríte formulár, ktorý obsahuje dynamický zoznam, klientovi sa na začiatku odovzdá 45 údajových položiek pre každý viditeľný dynamický zoznam (ak má zoznam viac ako 45 položiek). Ak dynamický zoznam zobrazuje viac ako 45 riadkov, pri otvorení formulára sa uskutoční dodatočné volanie servera na získanie chýbajúcich údajových položiek.

4. Nastavenia dynamického zoznamu

Nastavenia zoznamu nehnuteľností - kliknutím na hypertextový odkaz Otvoriť sa otvorí formulár pre nastavenie zobrazenia dynamického zoznamu. Nastavenie zoznamu sa vykonáva rovnakým spôsobom ako podobné operácie v systéme zostavovania údajov.


Ryža. 2. Podmienený štýl dynamického zoznamu

Pri nastavovaní dynamického zoznamu v konfigurácii má vývojár aplikácie možnosť vykonať nasledovné:
● nastavte polia, podľa ktorých chcete triediť;
● popísať výber údajov v zozname;
● špecifikovať podmienené nastavenia vzhľadu;
● nastavte polia, podľa ktorých chcete zoskupiť údaje.
Má zmysel nastaviť triedenie vývojárovi, ak nie ste spokojní s predvoleným triedením nastaveným systémom.

RADY. Je potrebné pripomenúť, že zlý výber triediacich polí (ako aj výber a zoskupovanie údajov) negatívne ovplyvňuje účinnosť dynamického vzorkovania.
Z pohľadu vývojára aplikácie sa nastavenia dynamického zoznamu skladajú z niekoľkých častí, ktoré sú vzájomne prepojené. Hlavnou vlastnosťou, prostredníctvom ktorej môžete spravovať nastavenia dynamického zoznamu, je LinkerSettings. Tento objekt obsahuje tri sady nastavení, ktoré po spustení systému určujú konečné nastavenia použité na dynamický zoznam:
● Nastavenia – nastavenia vytvorené v režime Konfigurátor. Vlastnosť Order dynamického zoznamu poskytuje rýchly prístup k vlastnosti Settings.Order nástroja na tvorbu nastavení dynamického zoznamu, takže nasledujúce konštrukcie sú ekvivalentné:
List.Order a List.SettingsLinker.Settings.Order;
● UserSettings – sú to nastavenia, ktoré mení používateľ v režime 1C:Enterprise;
● Pevné nastavenia – tieto nastavenia sa nastavujú zo vstavaného jazyka. Táto vlastnosť obsahuje aj hodnoty výberu, ktoré sa prenesú do formulára pomocou jeho parametrov. Vlastnosti dynamického zoznamu Výber, Možnosti, Podmienený vzhľad poskytujú rýchly prístup k pevným nastaveniam nástroja na tvorbu nastavení dynamického zoznamu. Inými slovami, tieto hovory sú ekvivalentné:
List.Settings Composer.FixedSettings.Selection a List.Selection.
Pri vytváraní konečných nastavení pre dynamický zoznam sa rôzne možnosti nastavení kombinujú takto:
● Ak je akýkoľvek typ nastavení úplne označený ako vlastný, výsledné nastavenia zahŕňajú vlastné nastavenia
(List.ComposerSettings.UserSettings). Navyše, ak sú niektoré prvky nastavení označené ako nedostupné, potom sa tieto nastavenia umiestnia do výsledných nastavení z vlastnosti List.Settings Composer. Nastavenie.
● Ak je akýkoľvek typ nastavení označený ako vlastný nie celý, ale prvok po prvku, potom:
● Položky označené ako vlastné budú zahrnuté do výsledných nastavení z vlastnosti List.SettingsComposer.CustomSettings.
● Položky označené ako nedostupné budú zahrnuté do výsledných nastavení z vlastnosti List.SettingsComposer.Settings.
● Pevné nastavenia (List.SettingsComposer.FixedSettings) sa pridajú k výsledným nastaveniam „tak, ako sú“. Zároveň je neprijateľné, aby pevné a používateľské nastavenia obsahovali nastavenia s rovnakým názvom, napríklad výber s rovnakou ľavou hodnotou v podmienke.

Ak nastavenia dynamického zoznamu obsahujú nastavenia, ktoré sú vypnuté pomocou funkčných možností, tieto nastavenia budú odstránené zo zoznamu dostupných nastavení, keď sa načítajú údaje dynamického zoznamu.
Ovládanie toho, ktoré nastavenia budú pre používateľa dostupné a ktoré nie, sa vykonáva v okne nastavení dynamického zoznamu.


Ryža. 3. Kontrolujte zahrnutie do používateľských nastavení

Zaškrtávacie políčko v spodnej časti okna (pozri obr. 3) je zodpovedné za umiestnenie celého typu nastavení do nastavení (normálne alebo rýchle). Táto funkcia je k dispozícii na výber, zoradenie, zoskupenie a podmienenie. Ak sú nastavenia zadané v režime úprav Rýchly výber, potom vo vlastnosti Skupina používateľských nastavení tabuľky formulára zobrazujúceho dynamický zoznam musíte zadať prázdnu skupinu formulára, v ktorej budú prvky spojené s rýchlymi používateľskými nastaveniami nájde sa dynamický zoznam. Ak nie je zadaná skupina, rýchle užívateľské nastavenia sa vo formulári nezobrazia. Je tiež možné explicitne vyvolať vytvorenie vlastných nastavení pomocou vstavaného jazyka pomocou metódy CreateCustomSettingsFormItems() rozšírenia dynamického zoznamu.
V používateľských nastaveniach je možné zvoliť aj umiestnenie konkrétnych položiek nastavení. Táto funkcia je dostupná pre prvky výberu a podmieneného návrhu (pozri obrázok 3).

Ak pri otváraní dynamického zoznamu potrebujete načítať nejaké špeciálne nastavenia, môžete to urobiť dvoma spôsobmi:
● Použitie parametra formulára dynamického zoznamu UserSettings. Údaje obsiahnuté v tomto parametri budú umiestnené v nastaveniach dynamického zoznamu používateľa.
● Použitie formulára dynamického zoznamu parametraUserSettingsKey. Ak pri otváraní formulára zadáte tento parameter, do dynamického zoznamu, ktorý je hlavným atribútom formulára, sa načítajú používateľské nastavenia nachádzajúce sa v úložisku nastavení so zadaným kľúčom.

5. Hľadajte v dynamickom zozname

Dynamický zoznam umiestnený na formulári poskytuje možnosť interaktívneho vyhľadávania zobrazených údajov. Vyhľadávanie je možné vykonať pomocou nasledujúcich nástrojov: vyhľadávací panel, vyhľadávacie dialógové okno, vyhľadávanie aktuálnej hodnoty, používanie histórie vyhľadávania a nastavenie obdobia (pre dynamické zoznamy zobrazujúce dokumenty). Výsledkom vyhľadávania je obmedzený súbor záznamov
dynamický zoznam (tých, ktoré sú dostupné danému používateľovi), ktoré zodpovedajú kritériám vyhľadávania.
Na ovládanie možností vyhľadávania dynamického zoznamu existujú tri vlastnosti tabuľky v riadenom formulári, ktorý zobrazuje dynamický zoznam:
● Pozícia vyhľadávacieho reťazca – určuje pozíciu vyhľadávacieho reťazca. Môže nadobudnúť nasledujúce hodnoty: Auto, Panel príkazov, Žiadny, Horný, Dolný.


Ryža. 4. Vyhľadajte reťazec v dynamickom zozname

Ak je hodnota tejto vlastnosti nastavená na Panel príkazov, potom sa hľadaný reťazec zobrazí v paneli príkazov formulára (ak je dynamický zoznam hlavným atribútom formulára) alebo v paneli príkazov pridruženom k ​​dynamickému zoznamu. Panel vyhľadávania umiestnený na paneli príkazov je vždy stlačený na pravom okraji panela príkazov (spolu s tlačidlami umiestnenými napravo od panela vyhľadávania).
Ak je vlastnosť nastavená na Nie, potom hľadaný reťazec nebude vo formulári a keď začnete písať hľadaný reťazec, otvorí sa dialógové okno.
Ak je vlastnosť nastavená na Hore, vyhľadávací panel sa bude nachádzať medzi panelom príkazov zoznamu a tabuľkou zobrazujúcou dynamický zoznam. Ak je vlastnosť nastavená na Dole, hľadaný reťazec sa umiestni hneď za tabuľku zobrazujúcu dynamický zoznam.


● Ak je vlastnosť Režim kompatibility nastavená na Nepoužívať alebo je staršia ako verzia 8.3.4 – hodnota je Príkazový panel.
Prejdite na riadok vyhľadávania takto:
● Stlačením kombinácie kláves Ctrl+F;
● Myš;
● Keď začnete písať do dynamického zoznamu (berúc do úvahy hodnotu vlastnosti SearchOnTyping dynamického zoznamu).
● Pozícia stavu zobrazenia – popisuje, kde sa zobrazí stav zobrazenia: aké polia boli vyhľadávané a aké hodnoty
hľadali v každej oblasti. Môže nadobudnúť nasledujúce hodnoty: Auto, None, Top, Bottom


Ryža. 5. Stav vyhľadávania v dynamickom zozname

Ak je vlastnosť nastavená na Nie, potom sa vo formulári nebude nachádzať stav zobrazenia. V dôsledku toho bude možné určiť, či bolo vyhľadávanie dokončené alebo nie, iba dostupnosťou tlačidla Zrušiť vyhľadávanie.
Ak je vlastnosť nastavená na Top, stav zobrazenia sa bude nachádzať medzi panelom príkazov zoznamu a tabuľkou zobrazujúcou dynamický zoznam. Ak je vlastnosť nastavená na Dole, stav zobrazenia sa umiestni hneď za tabuľku zobrazujúcu dynamický zoznam.
Ak bol formulár vytvorený vo verzii 1C:Enterprise 8.3.4 a staršej, vlastnosť je nastavená na No. Ak bol formulár vytvorený vo verzii 1C:Enterprise 8.3.5 a staršej, vlastnosť je nastavená na Auto. Skutočná hodnota nehnuteľnosti sa v tomto prípade určí takto:
● Ak je vlastnosť Režim kompatibility nastavená na Verzia 8.3.4 (a nižšia) – hodnota Nie;
● Ak je vlastnosť Režim kompatibility nastavená na Nepoužívať alebo je staršia ako verzia 8.3.4 – hodnota Top;
● Pozícia ovládania vyhľadávania – určuje, kde sa zobrazí tlačidlo ovládania vyhľadávania. Tlačidlom sa otvorí ponuka, ktorá obsahuje nasledujúce informácie: príkazy Hľadať podľa aktuálnej hodnoty, Rozšírené vyhľadávanie, Zrušiť vyhľadávanie, Nastaviť obdobie (pre zoznamy dokladov a denníkov) a históriu vyhľadávacích dopytov (posledných 5 dotazov). Vlastnosť môže nadobúdať nasledujúce hodnoty: Auto, Žiadne, Panel príkazov.


Ryža. 6. Správa vyhľadávania v dynamickom zozname

Ak je vlastnosť nastavená na Nie, potom ovládacie tlačidlo vyhľadávania nebude vo formulári (príkazy však budú dostupné pomocou ponuky Viac). Hodnota vlastnosti Panel príkazov umiestni tlačidlo na panel príkazov priradený k tabuľke zobrazujúcej dynamický zoznam.
Ak bol formulár vytvorený vo verzii 1C:Enterprise 8.3.4 a staršej, vlastnosť je nastavená na No. Ak bol formulár vytvorený vo verzii 1C:Enterprise 8.3.5 a staršej, vlastnosť je nastavená na Auto. Skutočná hodnota nehnuteľnosti sa v tomto prípade určí takto:
● Ak je vlastnosť Režim kompatibility nastavená na Verzia 8.3.4 (a nižšia) – hodnota Nie;
● Ak je vlastnosť Režim kompatibility nastavená na Nepoužívať alebo je staršia ako verzia 8.3.4 – hodnota je Príkazový panel;
Ak je na formulári niekoľko panelov príkazov, ktorých zdrojom príkazov je jedna tabuľka spravovaného formulára (zobrazuje údaje dynamického zoznamu), potom sa riadok vyhľadávania a tlačidlo ovládania vyhľadávania budú nachádzať iba v jednom paneli príkazov:
● Alebo na paneli príkazov samotného dynamického zoznamu (ak má povolené automatické dokončovanie)
● Alebo v ktoromkoľvek zo zostávajúcich príkazových panelov.

Pozrime sa na funkcie používania vyhľadávania v dynamickom zozname:
● Aby bolo vyhľadávanie pohodlné (aj z hľadiska výkonu), musíte povoliť fulltextové vyhľadávanie pre všetky konfiguračné objekty, ktoré možno použiť ako hlavnú tabuľku dynamického zoznamu. Fulltextové vyhľadávanie by malo zahŕňať aj všetky podrobnosti o konfiguračných objektoch, ktoré sa môžu zobraziť v dynamickom zozname a pre ktoré môže byť potrebné vyhľadávanie.
Ak je objekt vylúčený z fulltextového vyhľadávania, príslušný mechanizmus vyhľadávania bude fungovať, ale výkon takéhoto vyhľadávania bude extrémne nízky. Neodporúča sa používať vyhľadávanie na objektoch, ktoré nie sú indexované fulltextovým vyhľadávaním.
● Aplikačné riešenie musí mať rutinnú úlohu, ktorá pravidelne aktualizuje index fulltextového vyhľadávania.

● Vyhľadávanie sa nevykonáva vo všetkých stĺpcoch dynamického zoznamu (a konfiguračného objektu), ale iba v tých stĺpcoch, ktoré sú zobrazené v tabuľke.
● Vyhľadávanie v dynamickom zozname podľa polí referenčných typov s ľubovoľným zastúpením sa vykonáva podľa polí, na ktoré sa používajú
zastupovanie (pozri tu). Polia zahrnuté v zobrazení sa získajú s prihliadnutím na obslužný program ViewFieldGettingProcessing() príslušného objektu.
● Pre dynamické zoznamy so zadanou hlavnou tabuľkou sa používa fulltextové vyhľadávanie v hlavnej tabuľke. Všetky neindexované odkazy z hlavnej tabuľky sa pridajú do výsledkov fulltextového vyhľadávania. Výsledok fulltextového vyhľadávania hlavnej tabuľky sa použije ako výber na základe kľúčových polí. Fulltextové vyhľadávanie sa vykonáva aj v poliach zobrazených v zozname z iných tabuliek (ak pole a konfiguračný objekt používajú fulltextové vyhľadávanie). Bez zapnutého fulltextového vyhľadávania môžu byť údaje
nájdené, ale samotné vyhľadávanie bude veľmi pomalé.
Ak sa pri pokuse o vykonanie fulltextového vyhľadávania vyskytne chyba, vyhľadávanie sa vykoná bez použitia fulltextového vyhľadávania.
Môže sa to stať napríklad pri hľadaní jedného písmena a veľkého počtu riadkov v informačnej báze začínajúcich na toto písmeno.
● Ak sa pre pole v hlavnej tabuľke dynamického zoznamu použije výber s typom porovnania Rovná sa, potom pri vykonávaní fulltextového vyhľadávania sa k vyhľadávaciemu dopytu pre túto tabuľku pridá hodnota výberu.
● Hľadaný reťazec je rozdelený na slová. Toto rozdelenie sa vykonáva podľa nasledujúcich pravidiel:
● Riadok je prerušený pomocou medzery a tabulátorov ako oddeľovačov.
● Potom sa spracuje každý výsledný fragment:
● Ak je fragment reprezentáciou dátumu (s časom alebo bez času) na základe aktuálneho miestneho nastavenia relácie, potom slovo je fragment.
● V opačnom prípade sa fragment ďalej rozdelí pomocou znakov „,.-/\“ ako oddeľovačov. V tomto prípade sa každý výsledný fragment reťazca berie ako slovo.

● Pre každé slovo sa vytvorí vlastný súbor podmienok, ktoré sa kombinujú „alebo“. Táto sada podmienok sa vygeneruje, ak fulltextové vyhľadávanie daného slova v tabuľke, z ktorej bolo toto pole získané, vrátilo aspoň jeden objekt, alebo nebolo pre toto pole použité fulltextové vyhľadávanie. Podmienky sa tvoria takto:
● Pre pole typu String je podmienkou názov poľa LIKE %Word%.
● Pre pole typu Číslo má podmienka tvar NázovPoľa=Hodnota, kde Hodnota je slovo skonvertované na typ Číslo. Ak nie je možné vykonať obsadenie, vyhľadávanie poľa sa nevykoná.
● Slovo sa vyhľadá ako podreťazec v predvolenej boolovskej reprezentácii definovanej pre aktuálnu reláciu. Ak sa hľadané slovo nájde v zobrazení, potom vyhľadá hodnotu zodpovedajúcu zobrazeniu, v ktorom sa slovo našlo. V tomto prípade vyhľadávanie nepoužíva zobrazenia, ktoré sú zadané pomocou vlastnosti prvku formulára Formát.
● Pre pole typu Dátum bude podmienka vyzerať takto<=КонецДня(Слово). Если Слово подобно дате, в которой год
označené jednou alebo dvoma číslicami, rok sa zredukuje na aktuálne storočie a táto hodnota sa pripočíta k podmienke vyhľadávania.
● V prípade referenčných polí sa vykoná vyhľadávanie v poliach použitých na vytvorenie referenčného zobrazenia. V každom z týchto polí hľadajte
vykonávané podľa vyššie opísaných pravidiel. Vyhľadávanie nepoužíva polia používané na vytvorenie vlastnej reprezentácie údajov.
Súbor podmienok pre každé slovo je kombinovaný „A“.
● Pre hodnoty s úvodnými nulami môžete hľadať buď reťazec s úvodnými nulami, alebo reťazec zadaný bez úvodných núl.
● Ak dynamický zoznam zobrazuje zoznam dokumentov alebo históriu dokumentov, interval zobrazenia zoznamu, ktorý určíte, sa zobrazí aj v oblasti formulára vyhradenej na zobrazenie stavu zobrazenia pre požadovaný dynamický zoznam.
● Príkaz na vyhľadávanie podľa aktuálnej hodnoty nie je dostupný, ak je kritériom výberu hlavná tabuľka dynamického zoznamu.
● Nájdené fragmenty reťazcov sú pri zobrazení v tabuľke zvýraznené.
● Pre jeden stĺpec je podporovaný iba jeden vyhľadávací reťazec. Pri pridávaní nového vyhľadávacieho dopytu pre stĺpec, ktorý sa už prehľadáva, sa namiesto sčítania dvoch vyhľadávacích dopytov nahradí hľadaný výraz.
● Ak formulár nemá pridanie prvku formulára k formuláru Zobrazenie reťazca vyhľadávania spojeného s tabuľkou (vlastnosť zdroja pridania prvku formulára), ktorá zobrazuje dynamický zoznam, stlačením kombinácie kláves Ctrl+F sa otvorí dialógové okno vyhľadávania.


Ryža. 7. Dialógové okno vyhľadávania

Ak formulár obsahuje pridanie prvku formulára do formulára Zobrazenie vyhľadávacieho reťazca spojeného s tabuľkou (vlastnosť zdroja pridania prvku formulára) zobrazujúceho dynamický zoznam, potom na otvorenie dialógového okna vyhľadávania by ste mali použiť príkaz Rozšírené vyhľadávanie.
● Pri používaní dialógového okna vyhľadávania majte na pamäti nasledujúce body:
● Otvorenie dialógového okna vyhľadávania pomocou klávesovej skratky spôsobí, že hodnota aktuálnej bunky sa zobrazí v riadku Čo hľadať a hodnota prepínača Ako hľadať je nastavená na Podľa presnej zhody.

● Otvorenie dialógového okna vyhľadávania priamym zadávaním hľadaného reťazca do dynamického zoznamu vedie k tomu, že hodnota prepínača Ako hľadať je nastavená na hodnotu Podľa časti reťazca a zadaný text skončí v poli Čo do vyhľadávacieho poľa.

6. Zobrazenie údajov pomocou dynamického zoznamu

Pri používaní dynamických zoznamov možno budete musieť vykonať rôzne akcie s údajmi, ktoré sú aktuálne zobrazené v dynamickom zozname, berúc do úvahy použité výbery a vyhľadávania. Takéto akcie zahŕňajú: spracovanie zobrazených informácií, napríklad opätovné odoslanie vybraných dokumentov alebo nastavenie niektorých detailov pre vybrané objekty, vygenerovanie zoznamu dostupných objektov (s dizajnom atď.), napríklad na tlač alebo uloženie do tabuľkového dokumentu.
Na získanie údajov, ktoré sú zobrazené v dynamickom zozname, by ste mali použiť GetExecutableDataCompositionSchema() a
GetExecutableDataCompositionSettings().
Príklad prijímania údajov:

Schema = Elements.List.GetExecutableDataCompositionSchema();
Settings = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Scheme, Settings);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Nový OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Získavanie údajov do kolekcie hodnôt (tabuľky alebo zoznamu hodnôt) sa vykonáva rovnakým spôsobom.
Získavanie údajov dynamického zoznamu týmto spôsobom má množstvo funkcií, ktoré je potrebné vziať do úvahy pri vývoji aplikačných riešení:
● Nasledujúci dizajn tabuľky nie je podporovaný:
● Striedajúce sa farby čiar;
● Obrázok hlavičky;
● Obrázok suterénu;
● Farba pozadia päty;
● Farba textu päty;
● Písmo päty;
● Vodorovná poloha v suteréne;
● Režim hesla.
● Podmienený vzhľad určený pre spravovaný formulár nie je podporovaný;
● Pri zoradení hierarchickej tabuľky vo vzostupnom poradí podľa poľa typu Odkaz sa vždy na prvé miesto umiestnia záznamy obsahujúce prázdny odkaz.

V procese dokončovania konfigurácií sa každý programátor 1C stretáva s dynamickými zoznamami.
Dynamický zoznam je objekt rozhrania, ktorý slúži na zobrazenie rôznych zoznamov databázových objektov alebo neobjektových údajov – záznamov registra.
Napríklad dynamický zoznam sa používa na zobrazenie zoznamu položiek:

Aby sme demonštrovali možnosti dynamického zoznamu, vytvorte externé spracovanie a pridajte hlavný formulár. Do formulára s typom „Dynamický zoznam“ pridáme nový atribút. Poďme do jeho vlastností a uvidíme, čo tam je.
Máme záujem o vlastnosť „Vlastná požiadavka“. Jeho povolením sa nám zobrazia všetky možnosti dynamického zoznamu. Budeme môcť napísať požiadavku pomocou takmer všetkých možností dopytovacieho jazyka systému 1C: Enterprise. Začiarknite políčko a kliknite na odkaz „Otvoriť“:

Náš zoznam štandardne zobrazí zoznam položiek s celkovým zostatkom za všetky sklady. Ak chcete implementovať takýto zoznam, pridajte nasledujúci dotaz:


Ako hlavnú tabuľku vyberieme “Directory.Nomenclature”, to nám umožní pracovať s dynamickým zoznamom, ako so zoznamom nomenklatúry - pridávať, meniť, označovať prvky adresára na vymazanie. Inštalácia hlavnej tabuľky tiež umožňuje dynamické čítanie údajov - to znamená, že výber sa bude vykonávať po častiach podľa potreby.
Ďalej musíme vytvoriť prvky formulára pre náš zoznam:

Ak sa pokúsime spustiť spracovanie v tomto formulári, zobrazí sa chyba:


Aby ste to odstránili, musíte nastaviť hodnotu pre parameter „Period“. Na tento účel môžete použiť metódu „SetParameterValue“ kolekcie „Parameters“ dynamického zoznamu. Metóda má dva parametre:
. "Parameter" - Typ: Reťazec; DataCompositionParameter. Názov parametra alebo parametra zloženia údajov, ktorého hodnotu chcete nastaviť;
. „Hodnota“ – Typ: Ľubovoľný. Hodnota, ktorá sa má nastaviť.
Dá sa zavolať v obslužnom programe „OnCreateOnServer“ formulára:

Máte otázku alebo potrebujete pomoc od konzultanta?


Používateľovi poskytneme možnosť zmeniť obdobie prijímania zostatkov. Ak to chcete urobiť, pridajte atribút a k nemu priradený prvok formulára „Dátum“:


V obslužnom programe „OnChange“ elementu formulára „Date“ zavoláme metódu „SetParameterValue“, pričom ako hodnotu odovzdáme hodnotu priradeného atribútu. Podobným spôsobom zmeňme postup formulára „Pri vytváraní na serveri“. Keďže metóda je dostupná na klientovi, nie je potrebné volať server:


Teraz, keď sa dátum zmení, zostatky sa automaticky aktualizujú:




Predpokladajme, že používatelia chcú vidieť buď aktuálne zostatky alebo plánované príjmy. Zvážme jednu z možností implementácie. Pridajme atribút formulára typu boolean a priradený prepínač:


Pri zmene hodnoty prepínača zmeníme text požiadavky. Na tento účel použijeme obsluhu udalosti „Pri zmene“ pre prvok formulára „Zobraziť množstvo pri prijatí“. Musíme zmeniť vlastnosť „QueryText“ dynamického zoznamu v závislosti od hodnoty atribútu. Keďže táto vlastnosť nie je na klientovi dostupná, musí sa zavolať serverová procedúra:


Výsledok vykonaných zmien:



Konečne sa splnil sen každého siedmaka. Ako často používatelia programu 7.7 žiadali normálny výber položiek? Aby ste mohli vidieť zostatky, ceny a nastaviť filtre. Museli sme vymýšľať rôzne triky, vrátane zápisu externých komponentov. V 1C 8.2 sa objavili dynamické zoznamy. Navrhujem zvážiť, čo to je a čo nám môžu dať v 1C 8.3.

Zoberme si ako základ určitú testovaciu konfiguráciu 1C: „Enterprise Accounting 3.0“. Teraz nebudeme robiť výber, len pridáme ďalší formulár výberu do adresára „Nomenklatúra“ a dočasne ho urobíme hlavným:

Po vytvorení systém štandardne pridá do formulára pole tabuľky typu „Dynamický zoznam“.

Poďme do jeho vlastností a uvidíme, čo tam je.

V prvom rade nás zaujíma zaškrtávacie políčko „Vlastná požiadavka“. To nám odhalí všetky výhody dynamického zoznamu. Budeme mať možnosť napísať vlastnú požiadavku s parametrami. Začiarknite políčko a kliknite na odkaz „Otvoriť“:

Otvorí sa okno s hotovým kódom v . Zatiaľ sú tam jednoducho uvedené všetky polia adresára „Nomenklatúra“.

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

Ako vidíte, existuje tlačidlo volania „ “ a začiarkavacie políčko, ktoré umožňuje dynamicky meniť obsah zoznamu. To znamená, že keď iný používateľ zmení niečo v adresári, zmení sa to aj v našom zozname. Okrem toho existuje karta „Nastavenia“, ale tej sa dotkneme neskôr.

Vlastný dopyt v dynamickom zozname

Najprv vytvorte požiadavku, ktorú potrebujeme, so zostatkami a cenami. Ako to:

Karta „Nastavenia“.

A teraz tá najlepšia časť! Prejdite na kartu „Nastavenia“. A hneď vidíme, že na prvej karte môžeme urobiť ľubovoľný výber pre ľubovoľné pole v požiadavke:

Programové nastavenie parametrov dotazu v dynamickom zozname 1C 8.3

Nezabudnite, že v požiadavke máme dva parametre: „Obdobie“ a „Typ ceny“. Musíme ich zadať do požiadavky, inak dôjde k chybe.

Zapíšme tieto parametre do parametrov formulára a do modulu formulára pridajte nasledujúce riadky:

&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing) List. Možnosti. SetParameterValue("Obdobie" , Parametre. Dátum) ; Zoznam. Možnosti. SetParameterValue("PriceType", Parameters.PriceType) ; Koniec procedúry