Jak nastavit parametry dynamického seznamu 1c. Způsoby, jak získat a uložit data do mezipaměti pomocí dynamického seznamu

Tisk (Ctrl + P)

Dynamický seznam

1. Obecné informace

Dynamický seznam je speciální datový typ, který umožňuje zobrazit libovolné informace z databázových tabulek ve formuláři. K tomu je potřeba určit tabulku, ze které chcete data zobrazit, nebo popsat výsledný výběr v dotazovacím jazyce.
Mechanismus je založen na systému skládání dat a poskytuje možnosti pro třídění, filtrování, vyhledávání, seskupování a podmíněné formátování přijímaných dat. Zdrojem dat je v tomto případě požadavek, který je buď generován systémem automaticky (na základě zadaných dat), nebo je zapsán vývojářem ručně.

Rýže. 1. Možnosti pro vytvoření dynamického seznamu

Při vytváření formuláře rekvizity jako Dynamický seznam vývojář si může vybrat dva způsoby, jak vytvořit dotaz na data:
● Zadáním hlavní tabulky - v tomto případě stačí jednoduše zadat tabulku (vlastnost Main table), ze které chcete přijímat data, a systém automaticky vytvoří dotaz na data (viz pravá část v Obr. 1).
● Ruční vytvoření požadavku - k tomu je potřeba nastavit vlastnost Vlastní požadavek (viz levá část obr. 1). Poté bude k dispozici ruční generování požadavku na příjem dat z infobáze.
Dotaz můžete použít k výběru dat z více tabulek, takže můžete zadat hlavní tabulku. To je nezbytné, aby dynamický seznam mohl určit, která data jsou hlavní a která sekundární, a aby mohl správně vybrat a zobrazit informace a také poskytovat standardní příkazy. Pokud však není možné v dotazu určit hlavní tabulku, lze ji vynechat, ale pak
dynamický seznam nebude poskytovat příkazy spojené s hlavní tabulkou. Navíc se v tomto případě (bez uvedení hlavní tabulky) výrazně sníží efektivita získávání dat dynamickým seznamem.
Za účelem zlepšení výkonu se doporučuje, aby všechna připojení použitá v libovolném dotazu pouze pro získání dalších dat byla volitelná pomocí rozšíření dotazovacího jazyka systému skládání dat.
U dynamického seznamu, který je hlavním atributem formuláře, je možné nastavit hodnoty filtru pomocí parametru formuláře Výběr... K tomu je nutné uvést jméno vlastnosti struktury, která je v parametru Výběr,
se shodoval s názvem pole výběru dynamického seznamu. V tomto případě bude hodnota vlastnosti struktury nastavena jako správná hodnota prvku filtru. Pokud je pole, pevné pole nebo seznam hodnot předáno jako hodnota prvku parametru Výběr formuláře dynamického seznamu, pak se k výběru přidá podmínka s možností V seznamu vpravo. hodnota, do které je umístěn seznam hodnot (do které se pole a pevné pole převedou).
Dotaz, ve kterém je parametr použit k vytvoření hodnoty pole, lze použít jako libovolný dotaz v dynamickém seznamu, například:

VYBRAT
VÝBĚR
PŘI doručení. Sazba = 1 POTOM & Odeslání
JINAK Doručení. Součinitel
KONEC JAKO POMĚR
Z

Navíc, pokud se typ hodnoty parametru liší od typu atributu object (např. Rekvizity1 je typu Číslo a hodnotou parametru je typ Čára), pak pro správné zobrazení pole byste měli explicitně přetypovat hodnotu parametru na požadovaný typ:

VYBRAT
VÝBĚR
PŘI DOPRAVĚ Sazba = 1 PAK EXPRESNÍ (& Prezentace AS linka (100)) JINAK Doprava. Součinitel
KONEC JAKO POMĚR
Z
Document.DeliveryProducts AS Shipping

Pokud je pole, kterým se výběr nastavuje, pomocí funkčních možností zakázáno, pak se výběr tímto polem nenastaví, i když je hodnota výběru předána jako parametry formuláře nebo odkazy parametrů výběru.
Pomocí vlastnosti čtení dynamických dat je dynamický seznam indikován na potřebu číst data po malých částech
(další podrobnosti o tom, jak získat data pomocí dynamického seznamu a ukládání dat do mezipaměti, naleznete níže). Bez ohledu na tuto funkci platí následující podmínky:

● Pokud je zobrazení nastaveno na hierarchický seznam, budou načtena pouze data aktuální skupiny a data všech nadřazených členů (žádných podřízených členů).
● Pokud je nastaven režim stromového zobrazení, budou se číst pouze data otevřených uzlů stromu.
● Jednorázové načtení dat dynamického seznamu není podporováno, pokud je nastaveno hierarchické zobrazení (vlastnost Zobrazení je nastavena na Strom) a výchozí stromové zobrazení je nastaveno na Rozbalit všechny úrovně. Pro získání dat bude na server odesláno tolik požadavků, kolik je uzlů v zobrazeném seznamu.
V rámci jediného načítání dat dynamický seznam znovu použije dříve vytvořené dočasné tabulky, pokud jsou splněny následující podmínky:
● V dávkovém požadavku na seznam chybí požadavky po požadavku na hlavní balík.
● Složení dočasných tabulek a polí v nich se od předchozího provedení dávkového dotazu nezměnilo.

Ve své práci dynamický seznam používá hodnoty následujících vlastností atributů objektů metadat:
● formát,
● editační formát,
● nápověda,
● znak zvýraznění záporných hodnot,
● maska,
● znak víceřádkového režimu,
● známka rozšířené editace,
● režim hesla.
Při zobrazování a editaci výběru a parametrů systému skládání dat se používá editační formát odpovídajícího pole.

2. Omezení a vlastnosti

Při nastavování filtrování v dynamickém seznamu nezapomeňte, že filtrování neovlivňuje skupiny, pokud je pro dynamický seznam vybrán režim zobrazení Hierarchický seznam nebo Strom. "Skupinami" se rozumí prvek katalogu nebo plánu typů charakteristik, pro které je vlastnost EtoGroup nastavena na hodnotu True.
Použijí se výběry automaticky aplikované dynamickým seznamem na standardní atributy Owner, Parent, Date, Period a ThisGroup.
standardními prostředky systémy skládání dat. Výběry automaticky uložené dynamickým seznamem na klíčová pole lze použít jak standardními prostředky systému skládání dat, tak přímo přidáním podmínky do textu dotazu. PROTI do polí hlavní tabulky. Díky použití filtrů pomocí kompozice je lze aplikovat jak ve vnořených dotazech, tak v parametrech virtuálních tabulek.

Při navrhování dynamických seznamů se doporučuje otestovat všechny dynamické seznamy pomocí libovolných dotazů. Během procesu ověřování byste se měli ujistit, že pokud dotaz na seznam obsahuje vnořené dotazy nebo virtuální tabulky a pole s aliasy, která se shodují s aliasy standardních polí Vlastník, Rodič, Datum, Období, Tato skupina nebo klíčová pole jsou k dispozici pro výběr, pak tato pole jsou platná, odpovídají standardním náležitostem, se kterými mají stejný alias. Pokud tomu tak není, měli byste změnit požadavek tak, aby se shodovaly, popř
pseudonym byl jiný.
Pokud zvolíte ruční vytvoření požadavku, pak se na požadavek vztahují některá omezení:
● Použití příkazu FIRST v dotazu na dynamický seznam není podporováno. Pokud potřebujete použít výběr omezený počtem záznamů v dynamickém seznamu, měli byste přepracovat dotaz pro generování dynamického seznamu tak, aby skutečný obsah dotazu byl umístěn v poddotazu a omezit počet přijatých záznamy v tomto poddotazu. Místo poddotazu můžete také použít dočasnou tabulku.
● Filtrování, řazení a seskupování nejsou podporovány:

  • Podle podrobností tabulkových oddílů.
  • Zobrazit pole.
  • Pole Verze dat.
  • Pole PredefinedDataName.
  • Pole Typ tabulky účtového rozvrhu.
  • Pole Typ přesunu tabulky registru akumulace.
  • Pole TypeValues ​​tabulky typů charakteristik.
  • Pole typu Typ;
  • Pole typu řetězce (neomezená délka).
  • Pole typu BinaryData.

● Třídění a seskupování podle polí Subconto není podporováno<НомерСубконто>a ViewSubconto<НомерСубконто>tabulky Subkonta Pohybů účetního registru.
● Seskupování podle polí, což jsou výrazy v dotazovacím jazyce obsahující agregační funkce, není podporováno.
● Když je vybrána hlavní tabulka, má dotaz na dynamický seznam následující omezení:

  • Spojení nejsou podporována.
  • Použití sekce ORDER BY není podporováno. Měli byste použít dotaz bez hlavní tabulky nebo nastavit požadované řazení pomocí nastavení dynamického seznamu.

● Pokud je dynamický seznam zobrazen jako hierarchický seznam nebo strom, pak se záznam v dynamickém seznamu nezobrazí, pokud není zobrazen alespoň jeden rodič tohoto záznamu. Jinými slovy, k zobrazení položky v hierarchickém seznamu musí dynamický seznam také zobrazovat všechny rodiče této položky až na začátek seznamu. V tomto případě horní část seznamu znamená buď
kořenový prvek hierarchického objektu zobrazený dynamickým seznamem nebo prvek nastavený na vlastnost TopLevel rozšíření tabulky formulářů pro dynamický seznam.

Použití následujících tabulek jako hlavní tabulky dynamického seznamu není podporováno:

● Tabulka, která nemá klíč, který jednoznačně identifikuje každý záznam tabulky (odkaz pro tabulky objektů a klíč záznamu pro tabulky registrů). Následující tabulky však lze nastavit jako hlavní tabulku dynamického seznamu (i přes chybějící klíč):

● tabulka Subconto účetní evidence;
● všechny virtuální tabulky účetní evidence kromě tabulky PohybySubkonto;
● tabulky konstantních hodnot (včetně tabulky Konstanty);
● tabulky externích zdrojů dat bez klíčových polí;
● tabulky kostek externích zdrojů dat;
● tabulky akumulačního registru:

  • otočný stůl;
  • zbytková tabulka;
  • tabulka otáček a zůstatků.

● tabulky výpočtového registru:

  • Tabulka skutečné platnosti
  • grafová data;
  • základní data.

● Tabulky tabulkových řezů objektů;
● Změnit registrační tabulky (používané v mechanismech výměny dat);
● Sekvenční tabulky;
● Alokační tabulky (používané v mechanismech periodického vypořádání).
● Tabulka, která se používá v dotazu pouze ve vnějším spojení.

Jinými slovy, dynamický seznam se zadanou hlavní tabulkou bude fungovat správně, pokud v důsledku dotazu
zadaný jako zdroj dat se počet řádků přijatých z hlavní tabulky nezvýší (s ohledem na vynucený výběr). Pokud se v důsledku provedení dotazu zvýší počet řádků přijatých dotazem z hlavní tabulky, povede to k porušení jedinečnosti klíče záznamů tabulky zobrazené v seznamu. V tomto případě musíte zakázat použití hlavní tabulky dynamického seznamu.
Při práci s dynamickým seznamem je nutné vzít v úvahu přístupová práva k detailům, které seznam zobrazuje:
● Data sloupců dynamického seznamu, které jsou označeny vlastností Vždy použít, ale pro které aktuální uživatel nemá právo Zobrazit, se nepřenášejí na stranu klienta. Přístup k datům takových sloupců (pomocí vlastnosti CurrentData a metody RowData ())
na straně klienta není možné.
● Pokud aktuální uživatel nemá právo Zobrazit na klíčové pole v dynamickém seznamu, načítání dat pro tento dynamický seznam povede k chybě narušení přístupu.
U dynamického seznamu, který zobrazuje seznam výčtu, neexistuje žádný způsob, jak seznam interaktivně přizpůsobit.
Složení sloupců a nastavení dynamického seznamu jsou spojeny s poli dotazu pomocí aliasů polí výběru. Pokud alias není explicitně určen pro výběrové pole v dotazu a pole je systémové pole, pak se jako alias použije název pole pro anglickou verzi vestavěného jazyka.
Zadaný vztah znamená, že při změně (nebo explicitním zadání aliasu pro pole, které používalo automatický alias)
alias pole dotazu, které generuje data dynamického seznamu, dojde ke ztrátě nastavení atributů dynamického seznamu, formulářové prvky „ztratí“ zobrazené detaily, nastavení dynamického seznamu bude nesprávné atd. .
Pokud je zdrojem dat dynamického seznamu tabulka (běžná nebo virtuální), která umožňuje nastavit filtrování podle období, pak pokud uživatel nastaví období zobrazení v takovém dynamickém seznamu (příkaz Nastavit interval data ...),
zadané hranice období budou nastaveny jako hodnoty filtrování nebo parametry virtuální tabulky. Pokud pomocí jazykového rozšíření
dotazy na systém skládání dat byly výslovně uvedeny názvy parametrů virtuální tabulky - parametry s daným
jména. Tabulky, u kterých je možné řídit dobu zobrazování nebo zpracování dat:
● tabulky účetních knih (hlavní nebo virtuální), u kterých je možné vybírat podle období (u zúčtovací knihy - podle období evidence);
● hlavní tabulky dokumentů, obchodních procesů a úkolů;
● hlavní tabulky deníků dokumentů;
● hlavní sekvenční tabulky, tabulky hranic sekvencí.
Pole nebo seznam hodnot lze použít jako parametr dotazu pro dynamický seznam. Pokud je však parametrem seznam hodnot, pak se jako hodnota výběru použije pouze první hodnota seznamu. Pokud dynamický seznam používá dotaz s parametry, počáteční nastavení hodnot parametrů by mělo být provedeno v obslužné rutině OnCreateAtServer.
Při zobrazování dat dynamického seznamu mějte na paměti následující body:
● Programovou změnou vlastností dynamického seznamu nedojde k automatickému opětovnému vyplnění příslušných pruhů příkazů
s tímto dynamickým seznamem.
● Pokud je více polí seskupeno do skupiny s režimem seskupování Buňka a seskupená pole mají pole, které se zobrazuje jako zaškrtávací políčko, pak se toto zaškrtávací políčko vždy zobrazí jako první ve výsledné buňce (vlevo od textu).
V dynamickém seznamu při definování datového typu pro pole, která obsahují parametry, pole nebo literály ve výrazech, je výsledný typ určen typy pole a literálů. Pokud typ hodnoty parametru není zahrnut ve výsledném datovém typu, bude jeho hodnota zkrácena.
Například v následujícím příkladu bude pole typu Číslo.

VÝBĚR
KDYŽ LŽI
PAK 5
V OPAČNÉM PŘÍPADĚ
&Parametr
KONEC

Pokud parametru Parametr přiřadíte hodnotu jiného typu, dynamický seznam pro toto pole obdrží hodnotu 0 (výchozí hodnota pro typ Číslo).
Pokud je v takové situaci potřeba vybrat parametr jiného typu, doporučuje se použít konstrukci dotazovacího jazyka VYJÁDŘIT... Například,
pokud je ve výše uvedeném příkladu požadováno předat do parametru řetězec ne delší než 100 znaků, pak byste měli jednoduchou indikaci parametru nahradit výrazem s explicitním převodem typu:

VÝBĚR
KDYŽ LŽI
PAK 5
V OPAČNÉM PŘÍPADĚ
EXPRESS (& řetězec parametru AS (100))
KONEC

Pokud jsou parametry použity v libovolném textu dotazu na dynamický seznam ve výrazech polí výběru, měli byste explicitně uvést typ parametrů pomocí konstrukce VYJÁDŘIT... Například místo toho & Nomenklatura AS Nomenklatura použití
EXPRESS (& Nomenklatura AS Reference. Nomenklatura) AS Nomenklatura... V opačném případě může fungovat vyhledávání pomocí vyhledávacího pole
nesprávné nebo uvést chyby.

3. Způsoby, jak získat a uložit data do mezipaměti pomocí dynamického seznamu

Při načítání dat pro zobrazení používá dynamický seznam jednu ze tří metod:
1. Načítání z databáze se provádí po částech, přičemž počet datových položek mírně převyšuje počet řádků současně zobrazených v seznamu (ale ne méně než 20). Data nejsou uložena v mezipaměti na serveru.
2. Čtení z databáze se provádí po stranách 1000 datových položek. Data se ukládají do mezipaměti na serveru. Hierarchická data se ukládají do mezipaměti: Pro každou nadřazenou položku se do mezipaměti neukládají více než 2 stránky položek. Na jeden dynamický seznam není uloženo více než 20 stránek položek. Ukládání do mezipaměti bude povoleno dynamickým seznamem pro následující tabulky:
● Kritérium výběru;
● Všechny tabulky účetní evidence kromě hlavní tabulky a tabulky Transakční podkonto;
● Všechny tabulky akumulačního registru kromě hlavní tabulky;
● všechny tabulky informačního rejstříku kromě hlavní tabulky;
● Všechny tabulky výpočtového registru kromě hlavní tabulky;
● Virtuální stůl Úkoly dodavatele;
● Tabulky externích zdrojů bez klíčů;
● Kostky externích zdrojů.

3. Čtení z databáze se provádí po stránkách po 1000 prvcích. První část se rovná 1 stránce. Každá další část se zvětší o 1 stránku (při dosažení konce předchozí ukázky). Čím blíže se „hledisko“ přibližuje ke konci zobrazovaných dat, tím větší je vzorek z databáze načten, přičemž se limit rovná všem zobrazeným datům. Data se ukládají do mezipaměti na serveru. Maximální počet záznamů v mezipaměti a dynamickém seznamu je 1 000 000.
V závislosti na tom, co je vybráno hlavní tabulkou dynamického seznamu a jakou hodnotu má vlastnost Dynamické čtení, se používá jedna nebo druhá metoda čtení dat:

● Jako hodnota vlastnosti Hlavní tabulka je určena jedna z následujících tabulek: výměnný plán, katalog, seznam dokladů, dokladový deník, typová tabulka charakteristik, účtová osnova, kalkulační typy, obchodní proces, úkol, obchodní tabulka body procesu:



● Jako hodnota vlastnosti Main table je zadána jedna z následujících tabulek: hlavní tabulka registru informací, registr akumulace, účetní registr, kalkulační registr, virtuální tabulka účetního registru PohybySubkonto:

● Dynamické čtení vlastností:
● Instalováno: Používá se metoda 1 (způsoby jsou popsány výše).
● Vymazáno: Používá se metoda 2 (metody jsou popsány výše).

● Vlastnost Hlavní tabulka obsahuje tabulku výběrových kritérií nebo tabulku úkolů podle exekutora (Tasks by Executor):
● Klíč identifikující řádek tabulky: Ref.

● Jako vlastnost Main table je určena virtuální tabulka registru informací SliceFirst nebo SliceLast:
● Klíč identifikující řádek tabulky: RecordKey.
● Vlastnost Dynamické čtení nelze použít.
● Používá se metoda 2 (způsoby jsou popsány výše).

● Jedna z tabulek virtuálních registrů je určena jako vlastnost Main table, kromě výše uvedených:

● Vlastnost Dynamické čtení nelze použít.

● Není specifikována vlastnost Main table, používá se libovolný dotaz:
● Klíč identifikující řádek tabulky: Číslo.
● Vlastnost Dynamické čtení nelze použít.
● Používá se metoda 3 (způsoby jsou popsány výše).

Pro zobrazení jsou data přenášena klientovi v blocích, jejichž velikost je podobná velikosti chunků v 1. metodě čtení dat (popsané na začátku této části).
Když vytvoříte formulář, který obsahuje dynamický seznam, zpočátku se klientovi odešle 45 datových položek z každého viditelného dynamického seznamu (pokud seznam obsahuje více než 45 položek). Pokud dynamický seznam zobrazuje více než 45 řádků, bude při otevření formuláře provedeno další volání serveru, aby se načetly chybějící datové položky.

4. Nastavení dynamického seznamu

Vlastnost Přizpůsobení seznamu - kliknutím na hypertextový odkaz Otevřít se otevře formulář pro přizpůsobení zobrazení dynamického seznamu. Nastavení seznamu se provádí stejným způsobem jako podobné operace v systému skládání dat.


Rýže. 2. Podmíněný vzhled dynamického seznamu

Při nastavování dynamického seznamu v konfiguraci má vývojář aplikačního řešení možnost provést následující:
● specifikovat pole, podle kterých má být objednávka provedena;
● popsat výběr dat v seznamu;
● určit nastavení podmíněného vzhledu;
● určit pole, podle kterých chcete data seskupit.
Má smysl přiřadit řazení vývojáři, pokud nejste spokojeni s výchozím tříděním nastaveným systémem.

RADA. Je třeba připomenout, že špatný výběr třídicích polí (stejně jako výběr a seskupování dat) negativně ovlivňuje efektivitu dynamického výběru.
Z pohledu vývojáře aplikací se nastavení dynamického seznamu skládá z několika částí, které jsou vzájemně propojeny. Hlavní vlastností, jejímž prostřednictvím můžete ovládat nastavení dynamického seznamu, je Konfigurátor... Tento objekt obsahuje tři sady nastavení, která, když je systém spuštěn, určují konečná nastavení, která se použijí na dynamický seznam:
● Nastavení – nastavení vytvořená v režimu Konfigurátor. Vlastnost Order dynamic list poskytuje rychlý přístup k vlastnosti Settings linkeru nastavení dynamického seznamu, takže následující konstrukce jsou ekvivalentní:
List.Order a List.OptionComposer.Settings.Order;
● Uživatelská nastavení – toto jsou nastavení, která uživatel změní v režimu 1C: Enterprise;
● FixedSettings – Tato nastavení jsou nastavena z vestavěného jazyka. Tato vlastnost také obsahuje hodnoty výběru, které jsou předány do formuláře pomocí jeho parametrů. Vlastnosti dynamického seznamu Výběr, Parametry, Podmíněné formátování poskytují rychlý přístup k pevným nastavením linkeru nastavení dynamického seznamu. Jinými slovy, tyto hity jsou ekvivalentní:
List.Settings Composer.FixedSettings.Filter a List.Feed.
Při vytváření konečného nastavení dynamického seznamu různé možnosti nastavení jsou kombinována následovně:
● Pokud je jakýkoli druh nastavení zcela označen jako vlastní, pak výsledná nastavení zahrnují vlastní nastavení
(List.ComposerSettings.UserSettings). V tomto případě, pokud jsou některé položky nastavení označeny jako nedostupné, pak se tato nastavení umístí do výsledného nastavení z vlastnosti List.ConfigurationComposer. Nastavení.
● Pokud je jakékoli nastavení označeno jako uživatelské ne celé, ale prvek po prvku, pak:
● Položky označené jako vlastní budou zahrnuty do výsledného nastavení vlastnosti List.OptionsComposer.CustomSettings.
● Položky označené jako nedostupné budou zahrnuty do výsledného nastavení z vlastnosti List.OptionsComposer.Settings.
● Pevná nastavení (List.SettingsComposer.FixedSettings) jsou přidána k výsledným nastavením „tak jak jsou“. Zároveň je nepřijatelná situace, kdy jsou v pevném a vlastním nastavení stejnojmenná nastavení, například výběr se stejnou levou hodnotou v podmínce.

Pokud nastavení dynamického seznamu obsahuje nastavení, která jsou zakázána pomocí funkčních možností, budou tato nastavení po přijetí dat dynamického seznamu odstraněna ze seznamu dostupných nastavení.
Řízení, která nastavení budou uživateli k dispozici a která nebudou provedena v okně nastavení dynamického seznamu.


Rýže. 3. Řízení zahrnutí do vlastních nastavení

Zaškrtávací políčko ve spodní části okna (viz obr. 3) je zodpovědné za umístění celého typu nastavení do nastavení (normální nebo rychlé). Tato funkce je k dispozici pro výběr, řazení, seskupování a podmíněný návrh. Pokud jsou nastavení určena v režimu úprav Rychlý výběr, musíte ve vlastnosti Skupina uživatelských nastavení tabulky formulářů zobrazující dynamický seznam zadat prázdnou skupinu formulářů, ve které budou prvky spojené s rychlým uživatelským nastavením dynamického seznamu. nachází se. Pokud není skupina uvedena, rychlé uživatelské nastavení se ve formuláři nezobrazí. Je také možné explicitně volat vytváření vlastních nastavení pomocí vestavěného jazyka pomocí metody CreateCustomSettingsFormElements () rozšíření dynamického seznamu.
V uživatelském nastavení je také možné zvolit možnost umístění konkrétních položek nastavení. Tato funkce je dostupná pro výběrové a podmíněné prvky (viz obr. 3).

Pokud je při otevírání dynamického seznamu nutné načíst nějaké speciální nastavení, lze to provést dvěma způsoby:
● Použití parametru formuláře dynamického seznamu CustomSettings. Data obsažená v tomto parametru budou umístěna do vlastního nastavení dynamického seznamu.
● Použití parametru formuláře dynamického seznamu CustomSettingsKey. Pokud tento parametr zadáte při otevírání formuláře, pak se do dynamického seznamu, který je hlavním atributem formuláře, načtou vlastní nastavení umístěná v úložišti nastavení se zadaným klíčem.

5. Hledejte v dynamickém seznamu

Dynamický seznam umístěný na formuláři poskytuje možnost provádět interaktivní vyhledávání v zobrazených datech. Vyhledávání lze provádět pomocí následujících nástrojů: vyhledávací řetězec, vyhledávací dialog, vyhledání aktuální hodnoty, použití historie vyhledávání a nastavení období (u dynamických seznamů zobrazujících dokumenty). Výsledkem hledání je omezená sada záznamů
dynamický seznam (z dostupných tohoto uživatele), které odpovídají kritériím vyhledávání.
Existují tři vlastnosti tabulky pro ovládání možností vyhledávání v dynamickém seznamu. řízená forma zobrazení dynamického seznamu:
● Pozice vyhledávacího řetězce – definuje pozici vyhledávacího řetězce. Může nabývat následujících hodnot: Auto, Command Panel, None, Top, Bottom.


Rýže. 4. Vyhledejte řetězec v dynamickém seznamu

Pokud je hodnota této vlastnosti nastavena na příkazový řádek, pak se hledaný řetězec zobrazí na příkazovém řádku formuláře (pokud je dynamický seznam hlavním atributem formuláře) nebo na příkazovém řádku spojeném s dynamickým seznamem . Vyhledávací panel umístěný na panelu příkazů je vždy umístěn na pravém okraji panelu příkazů (spolu s tlačítky umístěnými napravo od panelu vyhledávání).
Pokud je vlastnost nastavena na Ne, pak hledaný řetězec nebude ve formuláři a na začátku sady chybět vyhledávací řetězec otevře se dialog.
Pokud je vlastnost nastavena na Top, bude hledaný řetězec umístěn mezi panelem příkazů seznamu a tabulkou zobrazující dynamický seznam. Pokud je vlastnost nastavena na Dole, pak se hledaný řetězec umístí bezprostředně za tabulku zobrazující dynamický seznam.


● Pokud je vlastnost Režim kompatibility nastavena na Nepoužívat nebo je starší než verze 8.3.4, hodnota je Příkazový panel.
Přejděte do vyhledávacího pole následovně:
● Stisknutím klávesových zkratek Ctrl + F;
● Myš;
● Když začnete psát do dynamického seznamu (s přihlédnutím k hodnotě vlastnosti dynamického seznamu TypingSearch).
● Pozice stavu pohledu – popisuje, kde se bude stav pohledu zobrazovat: která pole byla vyhledávána a jaké hodnoty
byly hledány ve všech oborech. Může nabývat následujících hodnot: Auto, None, Top, Bottom


Rýže. 5. Stav vyhledávání v dynamickém seznamu

Pokud je vlastnost nastavena na Ne, nebude ve formuláři chybět stav zobrazení. V důsledku toho bude možné zjistit, zda bylo vyhledávání provedeno či nikoli, pouze dostupností tlačítka Zrušit vyhledávání.
Pokud je vlastnost nastavena na hodnotu Nahoře, bude stav zobrazení umístěn mezi panelem příkazů seznamu a tabulkou zobrazující dynamický seznam. Pokud je vlastnost nastavena na Dole, pak se stav zobrazení umístí bezprostředně za tabulku zobrazující dynamický seznam.
Pokud byl formulář vytvořen v 1C: Enterprise verze 8.3.4 a starší, vlastnost je nastavena na Ne. Pokud byl formulář vytvořen v "1C: Enterprise" verze 8.3.5 a novější, vlastnost je nastavena na Auto. Skutečná hodnota nemovitosti bude v tomto případě stanovena takto:
● Pokud je vlastnost Režim kompatibility nastavena na verzi 8.3.4 (nebo nižší) – hodnota je Žádná;
● Pokud je vlastnost Režim kompatibility nastavena na Nepoužívat nebo je starší než hodnota Verze 8.3.4 - hodnota Top;
● Pozice ovládacího prvku hledání – Určuje, kde se zobrazí ovládací tlačítko hledání. Tlačítko otevírá nabídku, která obsahuje následující informace: příkazy Najít podle aktuální hodnoty, Rozšířené hledání, Zrušit hledání, Nastavit období (pro seznamy dokumentů a časopisů) a historii vyhledávacích dotazů (posledních 5 dotazů). Vlastnost může nabývat hodnot: Auto, None, Command bar.


Rýže. 6. Ovládání vyhledávání v dynamickém seznamu

Pokud je vlastnost nastavena na Ne, pak ovládací tlačítko hledání ve formuláři nebude chybět (příkazy však budou dostupné pomocí nabídky Více). Hodnota vlastnosti Příkazový panel umístí tlačítko do příkazového podokna spojeného s tabulkou zobrazující dynamický seznam.
Pokud byl formulář vytvořen v 1C: Enterprise verze 8.3.4 a starší, vlastnost je nastavena na Ne. Pokud byl formulář vytvořen v "1C: Enterprise" verze 8.3.5 a novější, vlastnost je nastavena na Auto. Skutečná hodnota nemovitosti bude v tomto případě stanovena takto:
● Pokud je vlastnost Režim kompatibility nastavena na verzi 8.3.4 (nebo nižší) – hodnota je Žádná;
● Pokud je vlastnost Režim kompatibility nastavena na Nepoužívat nebo je starší než hodnota Verze 8.3.4 - hodnota panelu příkazů;
Pokud formulář obsahuje několik příkazových panelů, jejichž zdrojem příkazů je jedna tabulka spravovaného formuláře (zobrazující data z dynamického seznamu), bude vyhledávací panel a ovládací tlačítko vyhledávání umístěno pouze v jednom příkazovém panelu:
● Nebo v příkazovém řádku samotného dynamického seznamu (pokud je pro něj povoleno automatické dokončování)
● Nebo v kterémkoli ze zbývajících příkazových panelů.

Podívejme se na vlastnosti použití vyhledávání v dynamickém seznamu:
● Aby bylo vyhledávání pohodlné (a to i z hlediska výkonu), musíte povolit fulltextové vyhledávání pro všechny konfigurační objekty, které lze použít jako hlavní tabulku dynamického seznamu. Fulltextové vyhledávání by také mělo zahrnovat všechny atributy konfiguračních objektů, které lze zobrazit v dynamickém seznamu a podle kterých může být vyhledávání vyžadováno.
Pokud je objekt vyloučen z fulltextového vyhledávání, pak daný vyhledávač bude fungovat, ale výkon takového vyhledávání bude extrémně nízký. Nedoporučuje se používat vyhledávání na objektech, které nejsou indexovány fulltextovým vyhledáváním.
● In aplikovaný roztok měla by existovat naplánovaná úloha, která pravidelně aktualizuje index fulltextového vyhledávání.

● Vyhledávání se neprovádí ve všech sloupcích dynamického seznamu (a konfiguračního objektu), ale pouze ve sloupcích, které jsou zobrazeny v tabulce.
● Vyhledávání v dynamickém seznamu podle polí typů odkazů s libovolnou reprezentací se provádí podle polí, pro která se používají
vytvoření pohledu (viz zde). Pole zahrnutá v pohledu jsou získána s ohledem na obslužnou rutinu ViewFieldGetProcessing () odpovídajícího objektu.
● U dynamických seznamů se zadanou hlavní tabulkou se používá fulltextové vyhledávání v hlavní tabulce. Všechny neindexované odkazy z hlavní tabulky budou přidány do výsledků fulltextového vyhledávání. Výsledek fulltextového vyhledávání pro hlavní tabulku se používá jako výběr podle klíčových polí. Fulltextové vyhledávání se provádí i na polích zobrazených v seznamu z jiných tabulek (pokud je pro pole a konfigurační objekt použito fulltextové vyhledávání). Bez aktivovaného fulltextového vyhledávání data mohou být
nalezen, ale samotné hledání bude velmi pomalé.
Pokud při pokusu o fulltextové vyhledávání dojde k chybě, bude vyhledávání provedeno bez použití fulltextového vyhledávání.
To se může stát například při vyhledávání podle jednoho písmene a velký početřádky v informační základna počínaje tímto písmenem.
● Pokud je pro pole v hlavní tabulce dynamického seznamu použito filtrování s typem porovnání Rovná se, pak při provádění fulltextového vyhledávání, vyhledávací dotaz hodnota výběru bude přidána do této tabulky.
● Hledaný řetězec je rozdělen na slova. Toto rozdělení se provádí podle následujících pravidel:
● Řádek je rozdělen pomocí mezer a tabulátorů jako oddělovačů.
● Poté je zpracován každý výsledný fragment:
● Pokud je blok reprezentace data (s časem nebo bez času) na základě aktuálního regionálního nastavení relace, pak je blok slovem.
● V opačném případě se fragment dále rozdělí pomocí znaků „, .- / \“ jako oddělovačů. V tomto případě je každý výsledný fragment řádku považován za slovo.

● Pro každé slovo je vytvořena vlastní sada podmínek, které jsou kombinovány "NEBO". Tato sada podmínek se tvoří, pokud fulltextové vyhledávání daného slova v tabulce, ze které bylo dané pole získáno, vrátilo alespoň jeden objekt nebo nebylo fulltextové vyhledávání pro toto pole použito. Podmínky se tvoří následovně:
● Pro pole typu String má podmínka tvar NázevPole LIKE% Slovo%.
● Pro pole typu Číslo má podmínka tvar NázevPole = Hodnota, kde Hodnota je slovo přetypované na typ Číslo. Pokud odlévání nelze provést, vyhledávání pole se neprovede.
● Slovo se hledá jako podřetězec ve výchozí reprezentaci typu Boolean definovaného pro aktuální relaci. Pokud je hledané slovo nalezeno v reprezentaci, pak se následně provede hledání hodnoty odpovídající reprezentaci, ve které bylo slovo nalezeno. Hledání však nepoužívá zobrazení, která jsou zadána pomocí vlastnosti prvku Format formuláře.
● Pro pole typu Datum má podmínka tvar FieldName> = StartDay (Word) AND FieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
je zadáno jednou nebo dvěma číslicemi, rok bude převeden na aktuální století a tato hodnota bude dosazena do vyhledávací podmínky.
● U referenčních polí se provádí vyhledávání v polích použitých k vytvoření referenčního pohledu. V každém z těchto polí hledejte
provádí podle výše popsaných pravidel. Vyhledávání nepoužívá pole použitá k vytvoření libovolné reprezentace dat.
Sada podmínek pro každé slovo je kombinována "pomocí AND".
● Pro hodnoty s úvodními nulami můžete hledat jak řetězec s úvodními nulami, tak řetězec zadaný bez úvodních nul.
● Pokud dynamický seznam zobrazuje seznam dokumentů nebo deník dokumentů, zadaný interval skenování seznamu se zobrazí také v oblasti formuláře vyhrazené pro zobrazení stavu zobrazení pro požadovaný dynamický seznam.
● Příkaz hledání podle aktuální hodnoty není dostupný, pokud je kritériem filtru hlavní tabulka dynamického seznamu.
● Nalezené fragmenty čar jsou při zobrazení v tabulce zvýrazněny.
● Pro jeden sloupec je podporován pouze jeden vyhledávací řetězec. Když přidáte nový vyhledávací dotaz pro sloupec, který je již prohledáván, hledaný výraz bude nahrazen namísto přidání dvou vyhledávacích dotazů.
● Pokud formulář neobsahuje doplněk pro prvek formuláře Zobrazení vyhledávacího řetězce spojeného s tabulkou (vlastnost Zdroj prvku formuláře) zobrazující dynamický seznam, stisknutím kombinace kláves Ctrl + F se otevře vyhledávací dialog.


Rýže. 7. Vyhledávací dialog

Pokud formulář obsahuje doplněk k prvku formuláře typu Zobrazení vyhledávacího řetězce spojeného s tabulkou (vlastnost Zdroj přidání prvku formuláře) zobrazující dynamický seznam, otevřete dialogové okno vyhledávání pomocí příkazu Rozšířené hledání.
● Při používání vyhledávacího dialogu mějte na paměti následující body:
● Otevření dialogového okna hledání pomocí klávesové zkratky má za následek, že hodnota aktuální buňky je na řádku Co hledat a hodnota přepínače Jak hledat je nastavena na Podle přesné shody.

● Otevření dialogového okna pro vyhledávání přímým zahájením zadávání vyhledávacího řetězce do dynamického seznamu způsobí, že hodnota zaškrtávacího pole Jak hledat bude nastavena na Podle části řetězce a zadaný text se přesune do pole Co hledat.

6. Načítání dat zobrazených dynamickým seznamem

Při používání dynamických seznamů může být nutné provést různé akce s daty, která jsou aktuálně zobrazena v dynamickém seznamu, s ohledem na uložené filtry a použitá vyhledávání. Tyto akce zahrnují: zpracování zobrazených informací, například přeúčtování vybraných dokumentů nebo nastavení libovolného atributu pro vybrané objekty, vygenerování seznamu dostupných objektů (s designem atd.), například pro tisk nebo uložení do tabulkového dokumentu.
Chcete-li získat data zobrazená v dynamickém seznamu, použijte GetExecutableDataCompositionSchema () a
Získejte ExecutableDataCompositionSettings ().
Příklad získávání dat:

Schema = Elements.List.Get ExecutableDataCompositionSchema ();
Settings = Items.List.Get ExecutableDataCompositionSettings ();
LayoutComposer = New LayoutComposerDataComposition ();
LayoutComposition = LayoutComposer.Run (Outline, Nastavení);
Composition Processor = nový Data Composition Processor;
LayoutProcessor.Initialize (LayoutDetail);
OutputProcessor = Nový OutputProcessorDataCompositionResultInTableSheetDocument;
Return OutputProcessor.Output (LayoutProcessor);

Načítání dat do kolekce hodnot (tabulky nebo seznamu hodnot) je podobné.
Získávání dat dynamického seznamu tímto způsobem má řadu funkcí, které je třeba vzít v úvahu při vývoji aplikovaných řešení:
● Následující design tabulky není podporován:
● Střídání barev řádků;
● Obrázek záhlaví;
● Obrázek suterénu;
● Barva pozadí suterénu;
● Barva textu zápatí;
● Písmo zápatí;
● Vodorovná poloha v suterénu;
● Režim hesla.
● Podmíněný vzhled určený pro spravovaný formulář není podporován;
● Při řazení hierarchické tabulky vzestupně se podle pole typu Odkaz vždy na prvním místě umístí záznamy obsahující prázdný odkaz.

V procesu dokončování konfigurací se každý programátor 1C potýká s dynamickými seznamy.
Dynamický seznam je objekt rozhraní používaný k zobrazení různých seznamů databázových objektů nebo neobjektových dat — záznamů registru.
Například dynamický seznam se používá k zobrazení seznamu položek:

Abychom demonstrovali schopnosti dynamického seznamu, vytvořte externí zpracování, přidejte hlavní formulář. Do formuláře přidáme nový atribut s typem "Dynamický seznam". Pojďme do jeho vlastností a podívejme se, co tam je.
Máme zájem o vlastnost "Svévolný požadavek". Jeho povolení nám ukáže všechny možnosti dynamického seznamu. Budeme schopni napsat dotaz pomocí téměř všech možností dotazovacího jazyka 1C: Enterprise. Zaškrtněte políčko a klikněte na odkaz „Otevřít“:

Náš seznam standardně zobrazí seznam položek s celkovým zůstatkem za všechny sklady. Chcete-li implementovat takový seznam, přidejte následující dotaz:


Jako hlavní tabulku vybereme "Adresář.Nomenklatura", to nám umožní pracovat s dynamickým seznamem, jako se seznamem položek - přidat, změnit, označit pro smazání prvků adresáře. Nastavení hlavní tabulky také zpřístupní možnost dynamického čtení dat – to znamená, že výběr bude proveden po částech, podle potřeby.
Dále musíme vytvořit prvky formuláře pro náš seznam:

Pokud se pokusíme zahájit zpracování v tomto formuláři, zobrazí se chyba:


Chcete-li to odstranit, musíte nastavit hodnotu parametru "Period". K tomu můžete použít metodu "SetParameterValue" kolekce "Parameters" dynamického seznamu. Metoda má dva parametry:
... "Parametr" - Typ: Řetězec; Parametr DataComposition. Název parametru nebo parametru složení dat, jehož hodnotu chcete nastavit;
... "Hodnota" - Typ: Libovolný. Hodnota, která se má nastavit.
Lze volat v obslužné rutině OnCreateAtServer formuláře:

Máte dotaz, potřebujete pomoc konzultanta?


Uživateli poskytneme možnost změnit období pro příjem zůstatků. Chcete-li to provést, přidejte rekvizity a související formulářový prvek „Datum“:


V obslužné rutině "OnChange" prvku formuláře "Date" zavolejte metodu "SetParameterValue" a předejte hodnotu přidružené proměnné jako hodnotu. Stejným způsobem změňme proceduru "OnCreateAtServer" formuláře. Protože je metoda dostupná na klientovi, není vyžadováno žádné volání serveru:


Nyní, když se datum změní, budou zbytky automaticky aktualizovány:




Předpokládejme, že uživatelé chtějí vidět aktuální zůstatky nebo předpokládané příjmy. Zvažme jednu z možností implementace. Pojďme přidat booleovské rekvizity formuláře a související přepínač:


Při změně hodnoty přepínače změníme text požadavku. K tomu použijeme obslužnou rutinu události "OnChange" formulářového prvku "DisplayQuantityOnIncoming". Musíme změnit vlastnost "QueryText" dynamického seznamu v závislosti na hodnotě atributu. Protože tato vlastnost není na klientovi dostupná, je vyžadováno volání procedury serveru:


Výsledek provedených změn:



Kromě primitivních datových typů, které lze nalézt v jakémkoli programovacím jazyce, existují v 1C jedinečné typy. Každý z nich má své vlastní vlastnosti, metody, funkce, účel a nuance použití v systému. Jedním z těchto typů je dynamický seznam, který značně usnadňuje mnoho aplikačních úloh. Proto vývojáři potřebují znát a umět zacházet s tímto všestranným nástrojem.

Možnosti dynamických seznamů v 1C

Účelem tohoto typu je zobrazení informací z libovolných databázových tabulek bez ohledu na jejich typ. Mechanismus byl vytvořen na základě ACS a má podobné schopnosti. To však neznamená, že budete určitě muset napsat žádost v jazyce 1C, i když tato příležitost existuje a musíte ji využít. Můžete jednoduše zadat tabulku, informace, které vás zajímají, a 1C nezávisle vytvoří nejjednodušší dotaz.

Abyste viděli, jak se dynamický seznam tvoří a jaká data zobrazuje, musíte v konfigurátoru otevřít spravované formuláře, kde se nachází: v seznamu atributů přes kontextové menu otevřete jeho vlastnosti a věnujte pozornost „ Položka Custom Request“. Pokud zaškrtávací políčko chybí, pak parametr "Hlavní tabulka" odráží databázovou tabulku, ze které jsou data přebírána. Jinak dynamický seznam odráží data libovolného dotazu, která lze zobrazit otevřením předvolby seznamu.

Schéma dotazů ad-hoc se mnohem častěji používá, protože poskytuje vynikající příležitost kombinovat a zobrazovat širokou škálu dat. Nejčastěji se tento mechanismus používá k zobrazení stavů skladů, cen položek, účtenek, výdejů nebo nákupů. Měl by být používán s opatrností, protože výkon může klesnout se složitými dotazy.

Další užitečná vlastnost dynamického seznamu se otevře, když kliknete na popisek "Přizpůsobit seznam". Tato nabídka umožňuje učinit informace přístupnějšími a srozumitelnějšími pro koncové uživatele i při použití standardní sady polí. Bez ohledu na to, zda je požadavek libovolný nebo ne, uvidíte kartu „Nastavení“, kde můžete zadat:

  • Výběr dynamického seznamu;
  • Seskupení;
  • Třídění;
  • Registrace.

Díky použití parametrů jsou dynamické seznamy dostatečně univerzální a flexibilní. Můžete je také přiřadit k podrobnostem na spravovaném formuláři a data se budou měnit v závislosti na parametrech vybraných uživatelem. Použití těchto mechanismů lze pochopit a ocenit při pohledu na příklady problémů v reálném světě.

Jako příklad uveďme problém promítání stavů zásob do řízeného formuláře. V reálné praxi jsou takové objednávky v různých konfiguracích zcela běžné a jako nástroj je ideální dynamický seznam. Pro tento úkol budeme muset použít libovolný dotaz, parametry dynamického seznamu a jeho nastavení.

Pro větší přehlednost vytvořte samostatné externí zpracování a umístěte na něj dynamický seznam. Pro realizaci našeho plánu bude tabulka s nomenklaturou malá, takže musíme povolit libovolný dotaz. Popíšeme si v něm levé propojení adresáře se seznamem číselníku a evidencí zůstatků a nastavíme adresář jako hlavní tabulku. Takové schéma umožní uživatelům, kteří pracují s dynamickým seznamem, přidat nebo změnit položku.



NomenklaturaPerechen.Naimenovanie AS SELECT Jméno, TovaryNaSkladahOstatki.Sklad jako sklady, TovaryNaSkladahOstatki.KolichestvoOstatok AS KolichestvoOstatok Spravochnik.Nomenklatura sloučeniny ve formě LEFT NomenklaturaPerechen RegistrNakopleniya.TovaryNaSkladah.Ostatki (a TekuhtsayaData,) jako v TovaryNaSkladahOstatki NomenklaturaPerechen.Ssylka = TovaryNaSkladahOstatki.Nomenklatura WHERE

Protože náš požadavek používal parametr „CurrentDate“, musíme před použitím zpracování nastavit jeho hodnotu. K tomu mu ve formulářovém modulu v proceduře „OnCreateAtServer“ přiřadíme standardním příkazem funkci „CurrentSessionDate“. Musíme také zobrazit dynamický seznam na ovládacím formuláři a pro přehlednost změnit pořadí polí. Přetáhněte atribut "Nomenclature Remains" do prvků formuláře (vlevo nahoře) a změňte pořadí polí v tabulce na formuláři pomocí modrých šipek.

& Procedura AtServer OnCreateAtServer (Failure, StandardProcessing) RemainingNomenclature.Parameters.SetParameterValue ("CurrentDate", CurrentSessionDate ()) EndProcedure


Již v této fázi můžeme otevřít naše externí zpracování v 1C a vidět, že dynamický seznam funguje. Můžeme se podívat na zbytky, vytvořit položku a skupinu, hledat. Zákazníci jsou často požádáni, aby přidali možnost vybrat si datum, kdy uvidí zůstatky. V případě formuláře s dynamickým seznamem to zajišťuje doplňkové pole a s jeho pomocí nastavování parametrů.

Přidejte atribut "DateLeft" typu "Datum" a přeneste jej do prvků formuláře. V událostech pole vytvořte událost "OnChange" a napište kód pro nastavení parametru "CurrentDate" použitého v dynamickém dotazu. Aby uživatel, když formulář otevře, okamžitě pochopil, k jakému datu vidí zbytky, provedeme malé změny v proceduře "OnCreationOnServer".



& Procedura AtServer OnCreateAtServer (Cancel, StandardProcessing) RemainingDate = CurrentSessionDate (); RemainingNomenclature.Parameters.SetValueParameter ("CurrentDate", Remaining Date); EndProcedure & OnClient Procedure RemainingDateOnChange (Element) Nomenklatura Remains.Parameters.SetParameterValue ("CurrentDate", Remaining Date); Konec procedury

Výsledkem je, že náš formulář Dynamický seznam může zobrazit zůstatky pro libovolné datum.

Pokryli jsme pouze malou část možností této sady nástrojů, ale to již stačí k pochopení výhodnosti takového typu, jako je dynamický seznam. Podobný mechanismus se používá pro mnoho úloh, ale nejčastěji se vyskytuje v typických konfiguracích ve spravovaných formulářích:

  1. Výběr;
  2. Seznamy.

Chcete-li získat dynamický seznam a jeho dotaz v typických spravovaných formulářích, musí vývojář otevřít požadovaný formulář v konfigurátoru. V sekci náležitosti najděte atribut s datovým typem "DynamicList" (nejčastěji je zvýrazněn tučně). Jeho vlastnosti obsahují text požadavku, filtry a další nastavení.