1s nastavte parameter dynamického zoznamu. Obmedzenia a funkcie

Domov pre začínajúcich vývojárov Naučte sa programovať

Existuje formulár obsahujúci dynamický zoznam s ľubovoľnou požiadavkou. Ako nastaviť pri otváraní formulára požadované parametre v tejto žiadosti?

Jedným z problémov, ktoré vznikajú pri otváraní formulára, môže byť, že dynamický zoznam v otvorenom formulári obsahuje ľubovoľný dotaz s parametrami. A keď otvoríte takýto formulár, musíte do tohto zoznamu preniesť konkrétne hodnoty parametrov.

Táto úloha je vyriešená vytvorením ďalších parametrov formulára, odovzdaním potrebných hodnôt im a ich nastavením na parametre požiadavky v obslužnom programe udalosti formulára OnCreateOnServer.

Predpokladajme, že existuje register Ceny tovaru . Formulár zoznamu tohto registra obsahuje dynamický zoznam s ľubovoľným dotazom:

SELECT Informácie o cene tovaru Register.Obdobie, Register informácií o cene tovaru Registrovať informácie o cene tovaru Cena Z Informácie o cene tovaru Registrovať AKO Informácie o cene tovaru Registrovať KDE Registrovať informácie o cene tovaru.<= &КонецПериода

Ako môžete vidieť z textu požiadavky, požiadavka má tri parametre: Produkt , Počiatočné Obdobie a Koniec . Pre normálne fungovanie formulára musia byť hodnoty týchto parametrov nastavené pri otváraní formulára, inak sa v dôsledku otvorenia formulára zobrazí chyba.

Ak chcete odoslať vlastné parametre do formulára, je dobré ich vytvoriť v editore formulárov.

Vo všeobecnosti sa to nevyžaduje. Všetky parametre odovzdané funkcii OpenForm() budú dostupné v obsluhe udalosti formulára OnCreateOnServer. Ale stále je lepšie ich vytvoriť výslovne vo forme.

Potom po prvé, v module formulára nebudete musieť kontrolovať, či takéto parametre existujú alebo nie. A po druhé, explicitné vytváranie parametrov formulára uľahčuje podporu aplikovaného riešenia tým vývojárom, ktorí sa na jeho tvorbe nepodieľali.

Vytvorme teda tri parametre pre formulár zoznamu informačného registra: StartPeriod, EndPeriod (typ Dátum) a Produkt (typ DirectoryLink.Products).

Teraz vo forme elementu Tovarový adresár vytvorte príkaz Decembrové ceny s nasledujúcim textom:

FormParameters = New Structure("Počiatočné obdobie, Koniec, Položka", "20121201000000", "20121231235959", Objekt.Odkaz); OpenForm("InformationRegister.Ceny Tovaru.Formular.Formulár zoznamu",Parametre formulára);

Týmto príkazom otvoríme formulár zoznamu informačných registrov a prenesieme do neho hodnoty troch parametrov.

V samotnom formulári registra informácií, v obsluhe udalosti formulára OnCreateOnServer, nastavte odovzdané hodnoty ako parametre ľubovoľnej požiadavky na dynamický zoznam takto:

&OnServerCreateOnServerProcedure(Failure, StandardProcessing) List.Parameters.SetParameterValue("PeriodStart", Parameters.PeriodStart); List.Parameters.SetParameterValue("EndPeriod", Parameters.EndPeriod); List.Parameters.SetParameterValue("Produkt", Parametre.Produkt); EndProcedure

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 zjednodušuje mnohé aplikované úlohy. Preto by vývojári mali poznať a vedieť zvládnuť tento všestranný 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 určite budete musieť napísať dotaz v jazyku 1C, aj keď táto možnosť existuje a musíte ju použiť. Môžete jednoducho zadať tabuľku, informácie, z ktorých máte záujem, 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, kde sa nachádza: v zozname podrobností otvorte jeho vlastnosti cez kontextové menu a venujte pozornosť položke „Vlastné Žiadosť“. Ak nie je začiarkavacie políčko, potom parameter "Hlavná tabuľka" odráža databázovú tabuľku, z ktorej sú prevzaté údaje. V opačnom prípade dynamický zoznam odzrkadľuje údaje vlastného dopytu, ktoré je možné zobraziť otvorením nastavenia zoznamu.

Oveľa bežnejšie sa používa ľubovoľná schéma dotazu, pretože poskytuje skvelú príležitosť na kombinovanie a zobrazenie širokej škály údajov. Najčastejšie sa tento mechanizmus používa na vyjadrenie stavov zásob, 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 výkon klesnúť.

Ďalšia užitočná vlastnosť dynamického zoznamu sa otvorí kliknutím na nápis „Nastavenia zoznamu“. Toto menu umožňuje, aj keď používate štandardnú sadu polí, aby boli informácie prístupnejšie a zrozumiteľnejšie pre koncových používateľov. Či už ide o svojvoľnú požiadavku alebo nie, zobrazí sa karta „Nastavenia“, kde môžete určiť:

  • Výber dynamického zoznamu;
  • zoskupenia;
  • triedenie;
  • Dekor.

Vďaka použitiu parametrov sú dynamické zoznamy dostatočne univerzálne a flexibilné. Môžete ich tiež naviazať na rekvizity na spravovanom formulári a údaje sa budú meniť v závislosti od možností vybratých používateľom. Použitie týchto mechanizmov možno pochopiť a oceniť pohľadom na príklady problémov v reálnom svete.

Ako príklad si uveďme problém premietnutia zvyškov nomenklatúry do riadeného formulára. V reálnej praxi sú takéto objednávky v rôznych konfiguráciách úplne bežné a ako pomôcka je ideálny dynamický zoznam. Pre túto úlohu budeme musieť použiť ľubovoľný 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 bude k dispozícii niekoľko tabuliek s nomenklatúrou, takže musíme povoliť ľubovoľnú požiadavku. V nej popíšeme ľavé prepojenie príručky so zoznamom nomenklatúry a registra rezíduí a príručnú knihu nastavíme ako hlavnú tabuľku. Takáto schéma umožní používateľom pri práci s dynamickým zoznamom pridávať alebo meniť nomenklatúru.



Vyberte si nomenklatúru Názov Názov ako názov, tovarové a predajné náklady Sklad ako sklad, tovarové a predajné náklady Oblečenie ako množstvo inštalácií z adresára Nomenklatúra ako nomenklatúru ľavého spojenia registra Kontinuita Inštalácie (a prevádzky) ako tovar a spotreba.

Keďže v našej požiadavke bol použitý parameter CurrentDate, musíme pred použitím spracovania nastaviť jeho hodnotu. Ak to chcete urobiť, vo formulárovom module v procedúre "On CreationOnServer" mu štandardným príkazom priraďte funkciu "CurrentSessionDate" štandardným príkazom. Musíme tiež zobraziť dynamický zoznam na kontrolnom formulári a zmeniť poradie polí kvôli prehľadnosti. Potiahnite rekvizity „Nomenclature Remains“ do prvkov formulára (vľavo hore) a pomocou modrých šípok zmeňte poradie polí v tabuľke vo formulári.

&Na serveri Procedúra Pri vytváraníNa serveri(Failure, StandardProcessing) Nomenklatúra Remains.Parameters.SetParameterValue("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ť nomenklatúru a skupiny a hľadať. Zákazníci často žiadajú pridať možnosť vybrať si dátum, ku ktorému uvidia zostatok. V prípade formulára s dynamickým zoznamom to zabezpečuje doplnkové pole a nastavenie parametrov pomocou neho.

Pridáme atribút „Zostáva dátum“ typu „Dátum“ a prenesieme 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 dynamickom dotaze. Aby používateľ pri otvorení formulára okamžite pochopil, ku ktorému dátumu vidí zostatky, vykonáme malé zmeny v postupe OnCreateOnServer.



&OnServerProcedureOnCreateOnServer(Failure, StandardProcessing)RemainsDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Koniec procedúry &U klienta Procedúra RemainsDateOnChange(Element) Položka Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); EndProcedure

Výsledkom je, že náš formulár Dynamický zoznam môže zobraziť zostatky pre akýkoľvek dátum.

Pokryli sme len malú časť možností tejto sady nástrojov, ale to už stačí na pochopenie pohodlia tohto typu dynamického zoznamu. Podobný mechanizmus sa používa pre mnoho úloh, ale najčastejšie sa nachádza 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 typických spravovaných formulároch musí vývojár otvoriť požadovaný formulár v konfigurátore. V sekcii atribúty nájdite atribút s dátovým typom "DynamicList" (najčastejšie je zvýraznený tučným písmom). Jeho vlastnosti obsahujú text požiadavky, výbery a ďalšie nastavenia.

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, údaje, z ktorých chcete zobraziť, alebo popísať výsledný výber v jazyku dopytu.
Mechanizmus je založený na systéme skladania údajov a poskytuje možnosti triedenia, výberu, vyhľadávania, zoskupovania a podmieneného spracovania prijatých údajov. V tomto prípade je zdrojom údajov požiadavka, ktorá je buď vygenerovaná automaticky systémom (na základe zadaných údajov), alebo zapísaná vývojárom manuálne.

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

Pri vytváraní formulárového atribútu typu DynamicList Vývojár si môže vybrať dva spôsoby dopytovania údajov:
● Zadaním hlavnej tabuľky – v tomto prípade stačí zadať tabuľku (Main table property), z ktorej chcete získať dáta, a systém automaticky vygeneruje dotaz na dáta (viď pravá strana 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.
Pomocou dotazu môžete vybrať údaje z viacerých tabuliek, takže môžete zadať primárnu tabuľku. Je to potrebné, aby dynamický zoznam mohol určiť, ktoré údaje sú primárne a ktoré sekundárne, a aby mohol správne vyberať a zobrazovať informácie, ako aj poskytovať štandardné príkazy. Ak však nie je možné určiť hlavnú tabuľku v dotaze, možno ju vynechať, ale potom
dynamický zoznam nebude poskytovať príkazy súvisiace so základnou 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, ktoré sa používajú v ľubovoľnom dotaze len na získanie dodatočných údajov, boli voliteľné pomocou rozšírenia dopytovacieho jazyka systému 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. K tomu je potrebné zadať názov vlastnosti štruktúry, ktorá je 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 Dynamický zoznam formulára Výber, potom sa k výberu pridá podmienka s možnosťou V zozname, v ktorej správnej hodnote umiestni sa zoznam hodnôt (na ktoré sa prevedie 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Ď Delivery.Factor = 1 POTOM &Odoslanie
INÉ Doručenie. Koeficient
KONIEC AKO Koeficient
OD

V tomto prípade, ak sa typ hodnoty parametra líši od typu atribútu objektu (napr. Rekvizity1 má typ číslo a hodnotou 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.Factor = 1 TAK EXPRESS(&Representation AS String(100)) ELSE Delivery. Koeficient
KONIEC AKO Koeficient
OD
Document.DeliveryProducts AS Delivery

Ak je pole, na ktorom je nastavený filter, zakázané pomocou funkčných možností, potom filter v tomto poli nie je nastavený, aj keď sa hodnota filtra odovzdáva ako parametre formulára alebo odkazy na parametre výberu.
Pomocou vlastnosti Dynamické čítanie údajov sa zobrazí dynamický zoznam, ktorý vyžaduje čítanie údajov v malých častiach
(ďalšie podrobnosti o tom, ako získať údaje z dynamického zoznamu a ako ukladať údaje do vyrovnávacej pamäte, nájdete nižšie). Bez ohľadu na túto charakteristiku 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 (žiadne podradené prvky).
● Ak je nastavený režim stromového zobrazenia, budú sa čítať iba údaje otvorených uzlov stromu.
● Jednorazové načítanie údajov dynamického zoznamu nie je podporované, keď je nastavené hierarchické zobrazenie (vlastnosť Zobrazenie je nastavená na Strom) a počiatočné stromové zobrazenie je nastavené na 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 jedného získavania údajov dynamický zoznam opätovne používa predtým vytvorené dočasné tabuľky za nasledujúcich podmienok:
● Po hlavnom dávkovom dotaze v dávkovom dotaze zoznamu nie sú žiadne dotazy.
● Zloženie dočasných tabuliek a ich polí sa od predchádzajúceho vykonania dávkového dotazu nezmenilo.

Vo svojej práci dynamický zoznam používa hodnoty nasledujúcich vlastností atribútov objektov metadát:
● formát,
● úprava formátu,
● nápoveda,
● znak zvýraznenia záporných hodnôt,
● maska,
● znak viacriadkového 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í filtra v dynamickom zozname nezabudnite, že filter neovplyvňuje skupiny, ak je režim zobrazenia pre dynamický zoznam Hierarchický zoznam alebo strom. Pod pojmom "skupiny" sa rozumie prvok referenčnej knihy alebo plán typov charakteristík, v ktorých je vlastnosť ThisGroup nastavená na hodnotu True.
Použijú sa filtre automaticky použité dynamickým zoznamom na štandardné atribúty Vlastník, Rodič, Dátum, Obdobie a Táto skupina
štandardné prostriedky systému zostavovania údajov. Filtre automaticky aplikované dynamickým zoznamom na kľúčové polia možno použiť štandardnými prostriedkami systému na zostavovanie údajov, ako aj priamym pridaním podmienky do textu dopytu AT na poliach hlavnej tabuľky. V dôsledku použitia filtrov nástrojmi rozloženia je možné ich použiť vo vnorených dopytoch aj v parametroch virtuálnej tabuľky.

Pri vývoji dynamických zoznamov je dobré 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 polia s aliasmi, ktoré sa zhodujú s aliasmi štandardných atribútov Owner, Parent, Date, Period, ThisGroup alebo kľúčových polí, sú dostupné na výber, potom sú tieto polia platné a zodpovedajú štandardným atribútom, s ktorými majú rovnaký alias. Ak to tak nie je, treba zmeniť požiadavku tak, aby sa zhodovali resp
alias je iný.
Ak je vybraté manuálne generovanie dotazu, na dotaz sa vzťahujú určité obmedzenia:
● Použitie klauzuly FIRST v dotaze na dynamický zoznam nie je podporované. Ak je potrebné použiť výber v dynamickom zozname, ktorý je obmedzený počtom záznamov, dotaz na generovanie dynamického zoznamu treba prepracovať tak, aby sa skutočný obsah dotazu umiestnil do poddotazu a obmedzil počet záznamov prijatých v tomto poddotaze. Namiesto poddotazu môžete použiť aj dočasnú tabuľku.
● Filtrovanie, triedenie a zoskupovanie nie sú podporované:

  • Podľa podrobností tabuľkových sekcií.
  • Zobraziť polia.
  • Pole DataVersion.
  • Pole PredefinedDataName.
  • Pole Typ tabuľky účtovnej osnovy.
  • Pole MovementType tabuľky registra akumulácie.
  • Pole TypeValues ​​tabuľky typov plánov charakteristík.
  • Typ poľa Typ;
  • Pole typu String (neobmedzená dĺžka).
  • Pole typu BinaryData.

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

  • Pripojenia nie sú podporované.
  • Použitie sekcie 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 v hierarchickom zozname musí dynamický zoznam zobraziť aj všetkých rodičov tohto prvku až po začiatok zoznamu. V tomto prípade horná časť zoznamu znamená buď
koreňový prvok hierarchického objektu vykreslený dynamickým zoznamom alebo prvok nastavený ako vlastnosť ParentTopLevel rozšírenia tabuľky formulára dynamického zoznamu.

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ú položku tabuľky (odkaz pre tabuľky objektov a kľúč položky pre tabuľky registrov). Nasledujúce tabuľky však možno nastaviť ako hlavnú tabuľku dynamického zoznamu (napriek chýbajúcemu kľúču):

● Tabuľka podsúborov účtovného registra;
● všetky virtuálne tabuľky účtovného registra okrem tabuľky PohybySubkonto;
● 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:

  • tabuľka obratu;
  • bilančná tabuľka;
  • tabuľka obratov a zostatkov.

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

  • tabuľka skutočnej doby platnosti;
  • grafové ú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 nástrojoch na opakované zúčtovanie).
● Tabuľka, ktorá sa používa v dotaze iba vo vonkajšom spojení.

Inými slovami, dynamický zoznam so špecifikovanou hlavnou tabuľkou bude fungovať správne, ak v dôsledku vykonania dotazu
zadaný ako zdroj údajov sa počet riadkov prijatých z hlavnej tabuľky nezvýši (berúc do úvahy vynútený výber). Ak sa v dôsledku vykonania dotazu zvýši počet riadkov prijatých dotazom z hlavnej tabuľky, povedie to k narušeniu jedinečnosti kľúča záznamu tabuľky zobrazenej v zozname. V tomto prípade musíte zakázať používanie hlavnej tabuľky dynamického zoznamu.
Pri práci s dynamickým zoznamom je potrebné brať do úvahy prístupové práva k detailom, ktoré zoznam zobrazuje:
● Údaje stĺpcov dynamického zoznamu, ktoré sú označené vlastnosťou Použiť vždy, ale pre ktoré aktuálny používateľ nemá oprávnenie na zobrazenie, 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, získanie údajov pomocou tohto dynamického zoznamu bude mať za následok chybu narušenia prístupu.
V prípade dynamického zoznamu, ktorý zobrazuje zoznam enumerácií, neexistuje spôsob, ako zoznam interaktívne prispôsobiť.
Zloženie stĺpcov a nastavenia dynamického zoznamu sú spojené s poľami dotazu pomocou aliasov výberových polí. Ak alias pre pole výberu nie je explicitne špecifikovaný v dotaze a pole je systémové pole, potom sa ako alias použije názov poľa pre anglickú verziu vstavaného jazyka.
Zadaný vzťah znamená, že keď zmeníte (alebo explicitne určíte alias pre pole, ktoré používalo automatický alias)
alias poľa dopytu, ktoré generuje údaje dynamického zoznamu, sa stratia nastavenia atribútu dynamického zoznamu, prvky formulára „stratia“ zobrazené atribúty, nastavenia dynamického zoznamu budú nesprávne atď.
V prípade, že zdrojom údajov dynamického zoznamu je 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 (nastaviť interval dátumu .. . príkaz),
zadané hranice obdobia budú nastavené ako hodnoty výberu alebo parametre virtuálnej tabuľky. Ak prostriedky rozšírenia jazyka
dopyty pre systém na zostavovanie údajov explicitne špecifikovali názvy parametrov virtuálnej tabuľky - parametre budú nastavené s uvedeným
mená. Tabuľky, u ktorých je možné ovládať obdobie zobrazovania alebo spracovania údajov:
● tabuľky registrov (hlavné alebo virtuálne), pre ktoré je možnosť výberu 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, tabuľky sekvenčných hraníc.
Parameter dotazu dynamického zoznamu môže byť pole alebo zoznam hodnôt. Ak je však parametrom zoznam hodnôt, potom sa ako hodnota filtra použije iba prvá hodnota zo zoznamu. Ak dynamický zoznam používa dotaz s parametrami, počiatočné nastavenie hodnôt parametrov sa musí vykonať v obslužnom programe OnCreateAtServer.
Pri zobrazovaní údajov dynamického zoznamu majte na pamäti nasledujúce body:
● Programová zmena vlastností dynamického zoznamu automaticky nevyplní riadky príkazov, ktoré sú s ním spojené
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é je zobrazené so zaškrtávacím políčkom, potom sa toto začiarkavacie políčko vždy zobrazí ako prvé vo výslednej bunke (naľavo od textu ).
V dynamickom zozname pri definovaní 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Ď NEPRAVDA
POTOM 5
INAK
&Parameter
KONIEC

Ak parametru Parameter priradíte hodnotu iného typu, dynamický zoznam pre toto pole získa hodnotu 0 (predvolená hodnota pre typ Číslo).
Ak je v takejto situácii potrebné vybrať parameter iného typu, odporúča sa použiť konštrukciu dotazovacieho jazyka EXPRESNÉ. Napríklad,
ak vo vyššie uvedenom príklade chcete parametru odovzdať reťazec nie dlhší ako 100 znakov, mali by ste nahradiť jednoduchú indikáciu parametra výrazom s explicitnou konverziou typu:

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

Ak sa vo výrazoch výberových polí vo voľnom texte dopytu dynamického zoznamu používajú parametre, musíte explicitne špecifikovať 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 by vyhľadávanie cez vyhľadávací panel mohlo fungovať.
nesprávne alebo vyhadzovať chyby.

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

Pri prijímaní údajov na zobrazenie využíva dynamický zoznam jednu z troch metód:
1. Čítanie z databázy sa vykonáva v dávkach, pričom počet údajových prvkov mierne prevyšuje počet riadkov zobrazených súčasne 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 do vyrovnávacej pamäte 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 účtovnej knihy okrem hlavnej tabuľky a tabuľky Pohybov Podkont;
● Všetky tabuľky akumulačného registra 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 TasksBy Performer;
● Tabuľky externých zdrojov bez kľúčov;
● Externé zdrojové kocky.

3. Čítanie z databázy sa vykonáva po stranách 1 000 položiek. Prvá časť sa rovná 1 strane. Každá ďalšia časť sa zvýši o 1 stranu (keď sa dosiahne koniec predchádzajúcej ukážky). Čím bližšie sa „uhol pohľadu“ blíži ku koncu zobrazovaných údajov, tým väčší je výber z databázy, pričom limit sa 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, vyhľadávanie, zoznam dokladov, dokladový denník, typová tabuľka, účtová osnova, kalkulačná osnova, 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 registra informácií, register akumulácií, účtovný register, register zúčtovania, virtuálna tabuľka účtovného registra PohybySubkonto:

● Vlastnosti dynamického čítania:
● Nainštalované: Používa sa metóda 1 (spôsoby sú popísané vyššie).
● Reset: Používa sa metóda 2 (metódy sú popísané vyššie).

● Ako vlastnosť Main table je špecifikovaná tabuľka výberových kritérií alebo tabuľka úloh podľa vykonávateľa (TasksBy Executor):
● Kľúč, ktorý identifikuje riadok tabuľky: Odkaz.

● Vlastnosť hlavnej tabuľky je nastavená na virtuálnu tabuľku informačného registra SliceFirst alebo SliceLast:
● Kľúč, ktorý identifikuje riadok tabuľky: RecordKey.
● Vlastnosť Dynamické čítanie sa nedá použiť.
● Používa sa metóda 2 (metódy sú popísané vyššie).

● Jedna z tabuliek virtuálnych registrov je špecifikovaná ako vlastnosť hlavnej tabuľky, okrem tých, ktoré sú uvedené vyššie:

● Vlastnosť Dynamické čítanie sa nedá použiť.

● Nie je špecifikovaná vlastnosť Main table, používa sa ľubovoľný dotaz:
● Kľúč, ktorý identifikuje riadok tabuľky: Číslo.
● Vlastnosť Dynamické čítanie sa nedá použiť.
● Používa sa metóda 3 (metódy sú popísané vyššie).

Na zobrazenie sa dáta prenášajú klientovi v kúskoch, ktorých veľkosť je podobná veľkosti chunku pri 1. spôsobe čítania údajov (popísaný na začiatku tejto časti).
Pri vytváraní formulára obsahujúceho dynamický zoznam sa klientovi na začiatku odovzdá 45 položiek údajov pre každý viditeľný dynamický zoznam (ak má zoznam viac ako 45 položiek). Ak dynamický zoznam zobrazuje viac ako 45 riadkov, po 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

Vlastnosť nastavenia zoznamu – kliknutím na hypertextový odkaz Otvoriť otvoríte formulár nastavenia 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 aplikovaného riešenia možnosť vykonať nasledovné:
● nastaviť polia, podľa ktorých sa má vykonávať objednávanie;
● popísať výber údajov v zozname;
● špecifikovať nastavenia podmieneného formátovania;
● nastavte polia, podľa ktorých chcete zoskupovať údaje.
Má zmysel nastaviť triedenie vývojárovi, ak predvolené triedenie nastavené systémom nevyhovuje.

RADY. Malo by sa pamätať na to, ž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é. Hlavná vlastnosť, prostredníctvom ktorej môžete ovládať nastavenia dynamického zoznamu, je LinkerSettings. Tento objekt obsahuje tri sady nastavení, ktoré, keď je systém spustený, určujú konečné nastavenia použité na dynamický zoznam:
● Nastavenia – nastavenia vytvorené v režime Konfigurátor. Vlastnosť dynamického zoznamu Order 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.SettingsComposer.Settings.Order;
● UserSettings sú nastavenia, ktoré môže používateľ zmeniť v režime 1C:Enterprise;
● FixedSettings – tieto nastavenia sa nastavujú zo vstavaného jazyka. Táto vlastnosť obsahuje aj hodnoty výberu, ktoré sa prenášajú do formulára pomocou jeho parametrov. Vlastnosti filtra dynamického zoznamu, parametrov, podmieneného vzhľadu 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.SettingsComposer.FixedSettings.Filter a List.Filter.
Pri vytváraní konečného nastavenia dynamického zoznamu sa rôzne nastavenia kombinujú nasledovne:
● Ak je akýkoľvek druh nastavení úplne označený ako definovaný používateľom, potom sa do výsledných nastavení zahrnú používateľské nastavenia
(List.SettingsComposer.UserSettings). 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 List.Settings Composer. Nastavenie.
● Ak je niektorý typ nastavení označený ako špecifický pre používateľa nie úplne, ale prvok po prvku, potom:
● Prvky 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á situácia, keď pevné a používateľské nastavenia obsahujú nastavenia s rovnakým názvom, napríklad výber s rovnakou ľavou hodnotou v podmienke.

Ak sú v nastaveniach dynamického zoznamu nastavenia, ktoré sú vypnuté pomocou funkčných možností, tieto nastavenia sa po prijatí údajov dynamického zoznamu odstránia zo zoznamu dostupných nastavení.
Ovládanie toho, ktoré nastavenia budú dostupné pre používateľa a ktoré sa nevykonajú v okne nastavení dynamického zoznamu.


Ryža. 3. Správa zahrnutia 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í (bežné alebo rýchle). Táto funkcia je k dispozícii na výber, poradie, zoskupovanie a podmienený štýl. Ak sú nastavenia špecifikované v režime úprav rýchleho výberu, potom vo vlastnosti skupiny vlastných nastavení tabuľky formulárov zobrazujúcej dynamický zoznam musíte zadať prázdnu skupinu formulárov, v ktorej budú prvky spojené s rýchlymi používateľskými nastaveniami dynamického zoznamu byť lokalizovaný. Ak nie je zadaná skupina, rýchle užívateľské nastavenia sa vo formulári nezobrazia. Je tiež možné explicitne volať vytvorenie používateľských nastavení pomocou jazyka 1C:Enterprise pomocou metódy CreateUserSettingsFormItems() rozšírenia dynamického zoznamu.
V užívateľských nastaveniach je možné zvoliť aj možnosť umiestnenia konkrétnych položiek nastavení. Táto funkcia je dostupná pre prvky výberu a podmieneného návrhu (pozri obr. 3).

Ak je potrebné, aby sa pri otváraní dynamického zoznamu načítali nejaké špeciálne nastavenia, možno to urobiť dvoma spôsobmi:
● Použitie parametra formulára dynamického zoznamu CustomSettings. Údaje obsiahnuté v tomto parametri budú umiestnené v používateľských nastaveniach dynamického zoznamu.
● Použitie parametra formulára dynamického zoznamu UserSettingsKey. 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ť vykonávať interaktívne vyhľadávanie v zobrazených údajoch. Vyhľadávanie je možné vykonať pomocou nasledujúcich nástrojov: vyhľadávací reťazec, vyhľadávací dialóg, 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.
Existujú tri vlastnosti tabuľky riadených formulárov, ktoré zobrazujú dynamický zoznam na ovládanie možností vyhľadávania dynamického zoznamu:
● Pozícia vyhľadávacieho reťazca – definuje pozíciu hľadaného reťazca. Môže nadobudnúť nasledujúce hodnoty: Auto, Command Panel, No, Top, Bottom.


Ryža. 4. Panel vyhľadávania v dynamickom zozname

Ak je hodnota tejto vlastnosti nastavená na Panel príkazov, potom sa panel vyhľadávania zobrazí na paneli príkazov formulára (ak je dynamický zoznam hlavným atribútom formulára) alebo na paneli príkazov priradených 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 chýbať a keď začnete písať hľadaný reťazec, otvorí sa dialógové okno.
Ak je vlastnosť nastavená na Top, potom sa vyhľadávací panel 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.
Prechod na vyhľadávací panel sa vykonáva takto:
● Stlačením kombinácie kláves Ctrl+F;
● Myš;
● Keď začnete písať do dynamického zoznamu (na základe hodnoty vlastnosti SearchOnType dynamického zoznamu).
● Pozícia stavu zobrazenia – popisuje, kde sa bude stav zobrazenia zobrazovať: ktoré 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 vykonané alebo nie, iba dostupnosťou tlačidla Zrušiť vyhľadávanie.
Ak je vlastnosť nastavená na Top, potom sa stav zobrazenia 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, ktorá zobrazuje 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 novš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 verziu 8.3.4 (a nižšiu) – Nie;
● Ak je vlastnosť Režim kompatibility nastavená na Nepoužívať alebo je staršia ako verzia 8.3.4, hodnota je Top;
● Poloha ovládacieho prvku vyhľadávania – určuje, kde sa zobrazí tlačidlo ovládania vyhľadávania. Tlačidlom sa otvorí ponuka, ktorá obsahuje tieto 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 dokumentov a časopisov) a históriu vyhľadávacích dopytov (posledných 5 dotazov). Vlastnosť môže nadobúdať hodnoty: Auto, Nie, 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, ktorá zobrazuje 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 novš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 verziu 8.3.4 (a nižšiu) – 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 vo formulári niekoľko panelov príkazov, ktorých zdrojom príkazov je jedna tabuľka riadeného formulára (zobrazuje údaje dynamického zoznamu), potom sa reťazec 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 je preň povolené automatické dopĺňanie)
● Alebo v ktoromkoľvek zo zostávajúcich príkazových panelov.

Zvážte vlastnosti 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é je možné 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ť naplánovanú ú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čnom objekte), 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 ViewFieldsGetProcess() príslušného objektu.
● Pre dynamické zoznamy so zadanou hlavnou tabuľkou sa používa fulltextové vyhľadávanie oproti 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žíva ako filter podľa kľúčových polí. Fulltextové vyhľadávanie sa vykonáva aj v poliach zobrazených v zozname z iných tabuliek (ak je pre pole a konfiguračný objekt použité 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 vyhľadávaní podľa jedného písmena a veľkého počtu riadkov v informačnej databáze začínajúcich na toto písmeno.
● Ak sa pre pole hlavnej tabuľky dynamického zoznamu použije filter s typom porovnania Rovná sa, potom pri vykonávaní fulltextového vyhľadávania sa do vyhľadávacieho dopytu pre túto tabuľku pridá hodnota filtra.
● Hľadaný reťazec je rozdelený na slová. Toto rozdelenie sa vykonáva podľa nasledujúcich pravidiel:
● Riadok je rozdelený pomocou medzier 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 fragmentom je slovo.
● 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 pre dané slovo v tabuľke, z ktorej bolo toto pole získané, vrátilo aspoň jeden objekt, alebo ak nebolo pre toto pole použité fulltextové vyhľadávanie. Podmienky sa vytvárajú takto:
● Pre pole typu String je podmienkou názov poľa LIKE %Word%.
● Pre pole typu Number je podmienkou názovPole=Hodnota, kde Hodnota je slovo, ktoré bolo pretypované na Číslo. Ak nie je možné vykonať obsadenie, vyhľadávanie poľa sa nevykoná.
● Slovo sa hľadá ako podreťazec v predvolenom vyjadrení typu Boolean definovaného pre aktuálnu reláciu. Ak sa hľadané slovo nájde v zobrazení, vykoná sa vyhľadávanie hodnoty zodpovedajúcej zobrazeniu, v ktorom sa slovo našlo. Zároveň sa na vyhľadávanie nepoužívajú zobrazenia, ktoré sú zadané pomocou vlastnosti prvku formulára Formát.
● Pre pole typu Dátum je podmienka NázovPoľa>=Začiatok dňa (Slovo) A Názov poľa<=КонецДня(Слово). Если Слово подобно дате, в которой год
zadané jednou alebo dvoma číslicami, rok sa prevedie na aktuálne storočie a táto hodnota sa dosadí do podmienky vyhľadávania.
● V prípade referenčných polí sa vyhľadávanie vykonáva v poliach použitých na vytvorenie reprezentácie odkazu. 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 ľubovoľnej prezentácie údajov.
Súbor podmienok pre každé slovo je spojený „pomocou AND“.
● Hodnoty s úvodnými nulami môžete vyhľadávať buď v reťazci s úvodnými nulami, alebo v reťazci zadanom bez úvodných núl.
● Ak dynamický zoznam zobrazuje zoznam dokumentov alebo históriu dokumentov, zadaný interval zobrazenia zoznamu 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 riadkov sú pri zobrazení v tabuľke zvýraznené.
● V každom stĺpci je podporovaný iba jeden vyhľadávací reťazec. Pridanie nového hľadaného výrazu pre stĺpec, ktorý sa už hľadá, nahradí hľadaný výraz namiesto pridávania dvoch hľadaných výrazov.
● Ak formulár nemá doplnok formulárového prvku Zobrazte vyhľadávací reťazec spojený s tabuľkou (vlastnosť Zdroj doplnku prvkov formulára), ktorá zobrazuje dynamický zoznam, potom stlačte kombináciu klávesov Ctrl+F otvorí dialógové okno vyhľadávania.


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

Ak má formulár doplnok formulárového prvku Zobrazenie vyhľadávacieho reťazca spojeného s tabuľkou (vlastnosť Zdroj doplnku prvku formulára), ktorá zobrazuje dynamický zoznam, potom by sa na otvorenie mal použiť príkaz Rozšírené vyhľadávanie dialógové okno vyhľadávania.
● 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 Presnú zhodu.

● Otvorenie dialógového okna vyhľadávania priamym zadávaním vyhľadávacieho reťazca do dynamického zoznamu spôsobí, že hodnota prepínača Ako hľadať je nastavená na Časť reťazca a zadaný text vstúpi do poľa Čo hľadať.

6. Získanie údajov zobrazených v dynamickom zozname

Pri používaní dynamických zoznamov možno budete musieť vykonať rôzne akcie s údajmi, ktoré sa aktuálne zobrazujú v dynamickom zozname, berúc do úvahy uložené filtre a použité vyhľadávanie. Medzi takéto akcie patrí: spracovanie zobrazených informácií, napríklad preúčtovanie 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.
Ak chcete získať údaje zobrazené v dynamickom zozname, použite GetDataCompositionSchemeExecutable() a
GetDataCompositionSettingsExecutable().
Príklad načítania údajov:

Schema = Items.List.GetExecutableDataCompositionSchema();
Nastavenia = Items.List.GetDataCompositionSettingsExecutable();
Layout Layout Builder = Nový Data Layout Layout Builder ();
LayoutLayout = LayoutComposer.Run(Schéma, Nastavenia);
CompositionProcessor = NewDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = nový výstupný procesorvýsledku zostavenia údajov na dokument tabuľky;
Return OutputProcessor.Output(CompositionProcessor);

Získavanie údajov do kolekcie hodnôt (tabuľka alebo zoznam hodnôt) sa vykonáva podobným spôsobom.
Získavanie údajov z 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ý:
● Striedanie farieb čiar;
● Obrázok hlavičky;
● suterénny obrázok;
● Farba pozadia suterénu;
● 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 triedení hierarchickej tabuľky vo vzostupnom poradí podľa poľa typu Odkaz sú záznamy obsahujúce nulový odkaz vždy umiestnené ako prvé.

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, pridajte hlavný formulár. Pridajme do formulára nový atribút s typom „Dynamický zoznam“. Poďme k jeho vlastnostiam a uvidíme, čo tam je.
Máme záujem o nehnuteľnosť "Vlastná požiadavka". Jeho aktivácia nám ukáže všetky možnosti dynamického zoznamu. Budeme môcť napísať dotaz pomocou takmer všetkých funkcií dotazovacieho 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 zvolíme "Adresár. Nomenklatúra", to nám umožní pracovať s dynamickým zoznamom, ako so zoznamom nomenklatúry - pridať, zmeniť, označiť na vymazanie prvkov adresára. Nastavenie hlavnej tabuľky sprístupňuje aj možnosť dynamického čítania ú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 parametra "Obdobie". 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 hodnota sa má nastaviť;
. "Hodnota" - Typ: Ľubovoľný. Hodnota, ktorá sa má nastaviť.
Dá sa zavolať v obslužnom programe „OnCreateOnServer“ formulára:

Máte otázku, potrebujete pomoc konzultanta?


Dajme používateľovi 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" prvku formulára "Date" zavolajte metódu "SetParameterValue" a ako hodnotu odovzdajte hodnotu priradeného atribútu. Podobne zmeníme postup formulára „On CreationAtServer“. 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ť aktuálne zostatky alebo plánované príjmy. Zvážme jednu z možností implementácie. Pridajme boolovský atribút formulára a príslušný prepínač:


Pri zmene hodnoty prepínača zmeníme text požiadavky. Na tento účel použijeme obslužnú rutinu udalosti „OnChange“ formulárového prvku „DisplayQuantityToReceipt“. 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á, vyžaduje sa volanie procedúry servera:


Výsledok vykonaných zmien: