1s 8.3 премахване на селекцията в динамичен списък

Печат (Ctrl+P)

Динамичен списък

1. Обща информация

Динамичният списък е специален тип данни, който ви позволява да показвате произволна информация от таблици на база данни във формуляр. За да направите това, трябва да посочите таблицата, от която искате да показвате данни, или да опишете получената селекция на език за заявки.
Механизмът е базиран на система за композиране на данни и предоставя възможности за сортиране, селекция, търсене, групиране и условно форматиране на получените данни. В този случай източникът на данни е заявка, която се генерира автоматично от системата (въз основа на посочените данни) или се записва ръчно от разработчика.

Ориз. 1. Опции за създаване на динамичен списък

При създаване на атрибути на формуляр от типа Динамичен списъкразработчикът може да избере два начина за формиране на заявка за данни:
● Като посочите главната таблица - в този случай трябва само да посочите таблицата (свойство Main table), от която искате да получавате данни, и системата автоматично ще генерира заявка за данните (вижте дясната част на фиг. 1).
● Ръчно генериране на заявка - за целта трябва да зададете свойството Custom request (вижте лявата страна на фиг. 1). След това ще бъде достъпно ръчно генериране на заявка за получаване на данни от информационната база.
Една заявка може да извлече данни от множество таблици, така че можете да посочите основна таблица. Това е така, че динамичният списък да може да определи кои данни са първични и кои вторични и да може правилно да избира и показва информация, както и да предоставя стандартни команди. Въпреки това, ако е невъзможно да се определи основната таблица в заявката, тогава тя не може да бъде посочена, но след това
динамичният списък няма да предоставя команди, свързани с основната таблица. Освен това в този случай (без да се посочва основната таблица) ефективността на получаване на данни чрез динамичен списък ще бъде значително намалена.
За да се подобри производителността, се препоръчва всички съединения, използвани в персонализирана заявка само за получаване на допълнителни данни, да бъдат направени незадължителни чрез използване на разширение на езика за заявка на системата за композиране на данни.
За динамичен списък, който е основният атрибут на формуляра, е възможно да зададете стойности за избор с помощта на параметър на формуляр Избор. За да направите това, е необходимо името на свойството на структурата да се намира в параметъра Избор,
съвпадна с името на полето за избор на динамичен списък. В този случай стойността на свойството структура ще бъде зададена като правилната стойност на елемента за избор. Ако масив, фиксиран масив или списък със стойности се предава като стойност на елемент от параметъра за избор на формуляр на динамичен списък, тогава условие с опцията В списъка се добавя към селекцията в дясната стойност от които се поставя списък със стойности (към които се преобразуват масивът и фиксираният масив).
Произволна заявка в динамичен списък може да бъде заявка, в която параметър се използва за генериране на стойността на поле, например:

ИЗБИРАМ
ИЗБОР
WHEN Delivery.Coefficient = 1 THEN &Presentation
ИНАЧЕ Доставка. Коефициент
КРАЙ КАТО Съотношение
ОТ

Освен това, ако типът на стойността на параметъра се различава от типа на атрибута на обекта (например, Реквизит1има тип Номер, а стойността на параметъра е тип Линия), тогава за да покажете полето правилно, трябва изрично да прехвърлите стойността на параметъра към желания тип:

ИЗБИРАМ
ИЗБОР
WHEN Delivery.Coefficient = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Delivery. Коефициент
КРАЙ КАТО Съотношение
ОТ
Документ. Доставка на продукти КАК да доставяме

Ако полето, чрез което се задава селекция, е деактивирано с помощта на функционални опции, тогава селекция от такова поле не се инсталира, дори ако стойността на селекцията се предава като параметри на формуляра или връзки към параметри за избор.
Използвайки свойството Динамично четене на данни, вие указвате на динамичен списък необходимостта от четене на данни на малки порции
(за повече подробности относно начините за получаване на данни с помощта на динамичен списък и кеширане на данни вижте по-долу). Независимо от този атрибут се прилагат следните условия:

● Ако режимът на изглед е зададен на йерархичен списък, ще бъдат прочетени само данните от текущата група и данните от всички родителски елементи (без дъщерните).
● Ако е зададен режим на дървовиден изглед, ще се четат само данни от отворени възли на дърво.
● Еднократното зареждане на данни от динамичен списък не се поддържа, ако е зададено йерархично сърфиране (свойството Показване е зададено на Дърво) и първоначалното дървовидно показване е зададено на Разширяване на всички нива. За получаване на данни ще бъдат направени толкова заявки към сървъра, колкото възли има в показания списък.
В рамките на едно извличане на данни динамичният списък използва повторно създадени преди това временни таблици, ако са изпълнени следните условия:
● Пакетната заявка за списък няма заявки след основната пакетна заявка.
● Съставът на временните таблици и полетата в тях остава непроменен от предишното изпълнение на партидната заявка.

В своята работа динамичният списък използва стойностите на следните свойства на детайлите на обекта на метаданни:
● формат,
● формат за редактиране,
● намек,
● знак за подчертаване на отрицателни стойности,
● маска,
● знак за многоредов режим,
● знак за разширено редактиране,
● режим на парола.
При показване и редактиране на селекцията и параметрите на системата за съставяне на данни се използва форматът за редактиране на съответното поле.

2. Ограничения и характеристики

Когато задавате избор в динамичен списък, не забравяйте, че изборът не засяга групите, ако режимът на показване за динамичния списък е йерархичен списък или дърво. Под „групи“ имаме предвид елемент от директория или план от характерни типове, чието свойство ThisGroup е зададено на True.
Прилагат се квалификации, автоматично прилагани от динамичен списък към стандартните подробности Собственик, Родител, Дата, Период и Тази група
използване на стандартни системни инструменти за композиране на данни. Изборът, автоматично приложен от динамичен списък към ключови полета, може да се приложи както чрез стандартни средства на системата за съставяне на данни, така и чрез директно добавяне на условия към текста на заявката INкъм полетата на основната таблица. В резултат на прилагане на селекции с помощта на инструменти за оформление, те могат да се прилагат както във вложени заявки, така и в параметри на виртуални таблици.

Когато разработвате динамични списъци, се препоръчва да тествате всички динамични списъци с персонализирани заявки. По време на процеса на проверка трябва да се уверите, че ако дадена заявка за списък съдържа вложени заявки или виртуални таблици и в тях са налични полета с псевдоними, които съответстват на псевдонимите на стандартните подробности Собственик, Родител, Дата, Период, Тази група или ключови полета за селекция, тогава тези полета са валидни, съответстват на стандартните детайли, с които съвпада техният псевдоним. Ако това не е така, трябва да промените заявката, така че да съвпадат или
прякорът беше друг.
Ако изберете ръчно генериране на заявка, тогава върху заявката се налагат някои ограничения:
● Използването на израза FIRST в заявка за динамичен списък не се поддържа. Ако трябва да използвате селекция, ограничена от броя на записите в динамичен списък, трябва да преработите заявката за генериране на динамичен списък по такъв начин, че действителното съдържание на заявката да бъде поставено в подзаявка и да ограничите броя на записите получени в тази подзаявка. Можете също да използвате временна таблица вместо подзаявка.
● Изборът, сортирането и групирането не се поддържат:

  • Според детайлите на табличните части.
  • Преглед на полета.
  • Поле DataVersion.
  • Предефинирано поле DataName.
  • Поле за тип таблица на сметкоплана.
  • Поле Вид движение на таблицата с регистър на натрупване.
  • Тип на полето Стойности на плановата таблица на характерния тип.
  • Тип поле Тип;
  • Поле от тип String (неограничена дължина).
  • Поле от тип BinaryData.

● Не се поддържа сортиране и групиране по полета на Subconto<НомерСубконто>и ViewSubconto<НомерСубконто>Таблици Движения Подконто на счетоводния регистър.
● Не се поддържа групиране по полета, които са изрази на език за заявки, съдържащи агрегатни функции.
● Когато е избрана основната таблица, заявката за динамичен списък има следните ограничения:

  • Присъединяванията не се поддържат.
  • Разделът ПОРЪЧАЙ ПО не се поддържа. Трябва да използвате заявка без основна таблица или да зададете необходимото подреждане чрез настройките на динамичния списък.

● Ако динамичен списък се показва като йерархичен списък или дърво, тогава даден запис няма да бъде показан като динамичен списък, освен ако не е показан поне един родител на този запис. С други думи, за да покаже елемент от йерархичен списък, динамичният списък трябва също да покаже всички родители на този елемент до върха на списъка. В този случай под горната част на списъка имаме предвид едно от двете
основният елемент на йерархичния обект, показан от динамичен списък, или елементът, зададен като свойството ParentTopLevel на разширение на таблица на формуляр за динамичен списък.

Използването на следните таблици като основна таблица на динамичен списък не се поддържа:

● Таблица, която няма ключ, който уникално идентифицира всеки запис на таблица (референция за таблици с обекти и ключ за запис за таблици в регистъра). Следните таблици обаче могат да бъдат зададени като основна таблица на динамичен списък (въпреки че нямат ключ):

● Подконто таблица на счетоводния регистър;
● всички виртуални таблици на счетоводния регистър, с изключение на таблицата MovementsSubconto;
● таблици с постоянни стойности (включително таблицата на константите);
● таблици на външни източници на данни без ключови полета;
● кубични таблици на външни източници на данни;
● регистрационни таблици за натрупване:

  • революционна маса;
  • маса за баланс;
  • таблица на оборотите и балансите.

● таблици с регистър на изчисленията:

  • таблица на действителния срок на валидност;
  • данни за графика;
  • основни данни.

● Таблици на таблични части на обекти;
● Регистрационни таблици за промени (използвани в механизмите за обмен на данни);
● Таблици на последователности;
● Таблици за преобразуване (използвани в механизми за периодичен сетълмент).
● Таблица, която се използва в заявка само във външно съединение.

С други думи, динамичен списък с посочената основна таблица ще работи правилно, ако в резултат на изпълнение на заявката,
посочен като източник на данни, броят на получените редове от основната таблица не се увеличава (като се вземе предвид наложената селекция). Ако в резултат на изпълнение на заявка броят на редовете, получени от заявката от главната таблица, се увеличи, това ще доведе до нарушаване на уникалността на ключа на записите на таблицата, показана от списъка. В този случай трябва да деактивирате използването на основната таблица с динамичен списък.
Когато работите с динамичен списък, трябва да вземете предвид правата за достъп до детайлите, показани от списъка:
● Данни от колони на динамичен списък, които са маркирани със свойството Използвай винаги, но за които текущият потребител няма право на преглед, не се предават към страната на клиента. Достъп до данни на такива колони (използвайки свойството CurrentData и метода RowData())
не е възможно от страна на клиента.
● Ако текущият потребител няма право на преглед върху ключово поле на динамичен списък, извличането на данни от този динамичен списък води до грешка при нарушение на достъпа.
За динамичен списък, който показва списък с изброяване, няма опция за интерактивно персонализиране на списъка.
Съставът на колоните и настройките на динамичния списък са свързани с полетата за заявка, като се използват псевдоними на полетата за избор. Ако псевдоним не е изрично указан в заявка за поле за избор и полето е системно, тогава името на полето за английската версия на вградения език се използва като псевдоним.
Посочената връзка означава, че при промяна (или изрично указване на псевдоним за поле, за което е използван автоматичен псевдоним)
псевдоним на полето за заявка, което генерира данните от динамичния списък, настройките на атрибута на динамичния списък ще бъдат загубени, елементите на формуляра ще „загубят“ показаните подробности, настройките на динамичния списък ще станат неправилни и т.н.
Ако източникът на данни на динамичен списък е таблица (обикновена или виртуална), която ви позволява да зададете избор по период, тогава ако потребителят зададе периода на показване в такъв динамичен списък (команда Задаване на интервал от дата...),
посочените граници на периода ще бъдат зададени като стойности за избор или параметри на виртуална таблица. Ако чрез езиково разширение
заявки за системата за съставяне на данни, имената на параметрите на виртуалната таблица бяха изрично посочени - параметрите с посочените
имена. Таблици, за които е възможно да се контролира периодът за показване или обработка на данните:
● регистрови таблици (основни или виртуални), за които има възможност за избор по период (за изчислителния регистър - по период на регистрация);
● основни таблици с документи, бизнес процеси и задачи;
● основни таблици на дневниците на документи;
● таблици на главни последователности, гранични таблици на последователности.
Параметърът на заявката за динамичен списък може да бъде масив или списък със стойности. Ако обаче параметърът е списък със стойности, тогава само първата стойност в списъка ще се използва като стойност за избор. Ако динамичен списък използва заявка с параметри, първоначалната настройка на стойностите на параметрите трябва да се извърши в манипулатора OnCreateOnServer.
Когато показвате данни от динамичен списък, имайте предвид следните точки:
● Когато промените програмно свойствата на динамичен списък, командните панели, свързани със списъка, не се попълват автоматично.
с този динамичен списък.
● Ако няколко полета са групирани в група с режима на групиране в клетка и в групираните полета има поле, което се показва като квадратче за отметка, тогава това квадратче за отметка винаги ще се показва първо в получената клетка (отляво на текст).
В динамичен списък, когато се определя типът данни за полета, чиито изрази включват параметри, полета или литерали, резултантният тип се определя от типовете на полетата и литералите. Ако типът стойност на параметъра не е включен в получения тип данни, неговата стойност ще бъде съкратена.
Например в следващия пример полето ще бъде от тип Number.

ИЗБОР
КОГАТО Е ЛЪЖА
ТОГАВА 5
В ПРОТИВЕН СЛУЧАЙ
&Параметър
КРАЙ

Ако зададете параметъра Параметър на стойност от друг тип, динамичният списък за това поле ще получи стойност 0 (стойността по подразбиране за типа Число).
Ако в такава ситуация трябва да изберете параметър от различен тип, препоръчително е да използвате конструкцията на езика за заявки ЕКСПРЕСНО. Например,
ако в горния пример трябва да предадете низ, не по-дълъг от 100 знака в параметъра, тогава трябва да замените простата индикация на параметъра с израз с явно преобразуване на типа:

ИЗБОР
КОГАТО Е ЛЪЖА
ТОГАВА 5
В ПРОТИВЕН СЛУЧАЙ
EXPRESS(&Параметър AS String(100))
КРАЙ

Ако произволният текст на заявка за динамичен списък използва параметри в изразите на полетата за избор, трябва изрично да посочите типа на параметрите, като използвате конструкцията ЕКСПРЕСНО. Например, вместо &Номенклатура КАТО номенклатураизползване
EXPRESS(&Номенклатура AS Директория.Номенклатура) AS Номенклатура. В противен случай търсенето през лентата за търсене може да работи
неправилни или произвеждат грешки.

3. Методи за извличане и кеширане на данни с динамичен списък

Когато получава данни за показване, динамичният списък използва един от трите метода:
1. Четенето от базата данни се извършва на части с брой елементи от данни, малко по-голям от броя на редовете, показвани едновременно от списъка (но не по-малко от 20). Данните не се кешират на сървъра.
2. Четенето от базата данни се извършва на страници от 1000 елемента с данни. Данните се кешират на сървъра. Йерархичните данни се кешират: не повече от 2 страници с елементи се кешират за всеки родител. Не повече от 20 страници с елементи се кешират на динамичен списък. Кеширането ще бъде активирано от динамичен списък за следните таблици:
● Критерии за подбор;
● Всички таблици на счетоводния регистър, с изключение на основната таблица и таблицата MovementsSubconto;
● Всички регистрови таблици с натрупване, с изключение на основната;
● Всички таблици на информационния регистър, с изключение на основната таблица;
● Всички таблици на изчислителния регистър, с изключение на основната таблица;
● Виртуална таблица със задачи по изпълнител;
● Таблици на външни източници без ключове;
● Кубчета от външни източници.

3. Четенето от базата данни се извършва на страници от 1000 елемента. Първата част е равна на 1 страница. Всяка следваща част се увеличава с 1 страница (при достигане на края на предишната извадка). Колкото повече се приближава „гледната точка“ до края на показаните данни, толкова по-голяма извадка се чете от базата данни, като в крайна сметка става равна на всички показани данни. Данните се кешират на сървъра. Максималният брой записи в кеша и динамичния списък е 1 000 000.
В зависимост от това какво е избрано от основната таблица на динамичния списък и каква стойност приема свойството Dynamic reading, се използва един или друг метод за четене на данни:

● Една от следните таблици е посочена като стойност на свойството на главната таблица: план за обмен, директория, списък с документи, дневник на документи, план с типове характеристики, сметкоплан, план с типове изчисления, бизнес процес, задача, таблица на точки на бизнес процес:



● Една от следните таблици е посочена като стойност на свойството Main table: основната таблица на информационния регистър, регистърът на натрупването, регистърът на счетоводството, регистърът на изчисленията, виртуалната таблица на регистъра на счетоводството MovementsSubconto:

● Свойство за динамично четене:
● Инсталиран: използва се метод 1 (описанието на методите е дадено по-горе).
● Нулиране: Използва се метод 2 (описанието на методите е дадено по-горе).

● Свойството Основна таблица съдържа таблицата с критериите за избор или таблицата със задачи по изпълнител (Задачи по изпълнител):
● Ключ, идентифициращ ред в таблица: Връзка.

● Свойството Main table указва виртуалната таблица на информационния регистър SliceFirst или SliceLast:
● Ключ, идентифициращ ред от таблица: RecordKey.
● Свойството Динамично четене не е приложимо.
● Използва се метод 2 (описанието на методите е дадено по-горе).

● Свойството Main table е зададено на една от таблиците на виртуалния регистър, с изключение на изброените по-горе:

● Свойството Динамично четене не е приложимо.

● Свойството Main table не е посочено, използва се произволна заявка:
● Ключ, идентифициращ ред от таблица: Число.
● Свойството Динамично четене не е приложимо.
● Използва се метод 3 (описанието на методите е дадено по-горе).

За показване данните се прехвърлят към клиента на порции, чийто размер е подобен на размера на порцията при първия метод за четене на данни (описан в началото на този раздел).
Когато създавате формуляр, който съдържа динамичен списък, 45 елемента с данни за всеки видим динамичен списък първоначално се предават на клиента (ако списъкът има повече от 45 елемента). Ако динамичният списък показва повече от 45 реда, ще бъде направено допълнително извикване на сървъра, когато формулярът бъде отворен, за да извлече липсващите елементи с данни.

4. Настройки на динамичен списък

Настройки на списъка със свойства - щракването върху хипервръзката Отваряне отваря форма за настройка на показването на динамичен списък. Създаването на списък се извършва по същия начин като подобни операции в система за съставяне на данни.


Ориз. 2. Условен стил на динамичен списък

Когато настройва динамичен списък в конфигурацията, разработчикът на приложението има възможност да направи следното:
● задайте полетата, по които искате да сортирате;
● описват избора на данни в списъка;
● задайте условни настройки за външен вид;
● задайте полетата, по които искате да групирате данните.
Има смисъл да зададете сортирането на разработчика, ако не сте доволни от сортирането по подразбиране, инсталирано от системата.

СЪВЕТ.Трябва да се помни, че лошият избор на полета за сортиране (както и изборът и групирането на данни) се отразява негативно на ефективността на динамичното вземане на проби.
От гледна точка на разработчик на приложения, настройките на динамичния списък се състоят от няколко части, които са свързани помежду си. Основното свойство, чрез което можете да управлявате настройките на динамичен списък, е LinkerSettings. Този обект съдържа три набора от настройки, които, когато системата работи, определят окончателните настройки, приложени към динамичния списък:
● Настройки – настройки, създадени в режим Конфигуратор. Свойството Order на динамичния списък осигурява бърз достъп до свойството Settings.Order на създателя на настройките на динамичния списък, така че следните конструкции са еквивалентни:
List.Order и List.SettingsLinker.Settings.Order;
● UserSettings – това са настройки, които се променят от потребителя в режим 1C:Enterprise;
● Фиксирани настройки – тези настройки се задават от вградения език. Това свойство също съдържа стойности за избор, които се прехвърлят във формуляра с помощта на неговите параметри. Свойствата на динамичния списък Избор, Опции, Условен външен вид осигуряват бърз достъп до фиксираните настройки на създателя на настройките на динамичен списък. С други думи, тези повиквания са еквивалентни:
List.Settings Composer.FixedSettings.Selection и List.Selection.
Когато създавате окончателните настройки за динамичен списък, различни опции за настройки се комбинират, както следва:
● Ако някой тип настройки е изцяло маркиран като потребителски, тогава получените настройки включват потребителските настройки
(List.ComposerSettings.UserSettings). Освен това, ако някои елементи на настройките са маркирани като недостъпни, тогава тези настройки ще бъдат поставени в получените настройки от свойството List.Settings Composer. Настройки.
● Ако някой тип настройки е маркиран като потребителски не изцяло, а елемент по елемент, тогава:
● Елементите, маркирани като персонализирани, ще бъдат включени в получените настройки от свойството List.SettingsComposer.CustomSettings.
● Елементите, маркирани като недостъпни, ще бъдат включени в получените настройки от свойството List.SettingsComposer.Settings.
● Фиксираните настройки (List.SettingsComposer.FixedSettings) се добавят към получените настройки „както са“. В същото време е неприемливо фиксираните и потребителските настройки да съдържат настройки с едно и също име, например избор със същата лява стойност в условието.

Ако настройките на динамичния списък съдържат настройки, които са деактивирани чрез функционални опции, тези настройки ще бъдат премахнати от списъка с налични настройки, когато данните от динамичния списък бъдат извлечени.
Контролирането кои настройки ще бъдат достъпни за потребителя и кои не се извършва в прозореца с настройки на динамичния списък.


Ориз. 3. Контролирайте включването в потребителските настройки

Квадратчето за отметка в долната част на прозореца (вижте фиг. 3) отговаря за поставянето на целия тип настройки в настройките (нормални или бързи). Тази функция е достъпна за избор, подреждане, групиране и кондициониране. Ако настройките са зададени с режима за редактиране Бърз избор, тогава в свойството Група потребителски настройки на таблицата на формуляра, показващ динамичния списък, трябва да посочите празна група от формуляра, в която елементите, свързани с бързите потребителски настройки на динамичният списък ще бъде разположен. Ако групата не е посочена, бързите потребителски настройки няма да се показват във формуляра. Възможно е също така изрично да се извика създаването на персонализирани настройки с помощта на вградения език с помощта на метода CreateCustomSettingsFormItems() на разширението на динамичния списък.
Също така е възможно да изберете дали да поставите конкретни елементи от настройките в потребителските настройки. Тази функция е достъпна за избор и условни елементи на дизайна (вижте Фигура 3).

Ако имате нужда от зареждане на специални настройки при отваряне на динамичен списък, това може да стане по два начина:
● Използване на параметъра на формуляра за динамичен списък UserSettings. Данните, съдържащи се в този параметър, ще бъдат поставени в настройките на динамичния списък на потребителя.
● Използване на параметъра на формуляра за динамичен списък UserSettingsKey. Ако посочите този параметър при отваряне на формуляр, тогава потребителските настройки, намиращи се в хранилището за настройки с посочения ключ, ще бъдат заредени в динамичния списък, който е основният атрибут на формуляра.

5. Търсете в динамичен списък

Динамичен списък, разположен във формуляра, предоставя възможност за интерактивно търсене в показаните данни. Търсенето може да се извърши с помощта на следните инструменти: лента за търсене, диалогов прозорец за търсене, търсене на текущата стойност, използване на хронологията на търсенето и задаване на периода (за динамични списъци, показващи документи). Резултатът от търсенето е ограничен набор от записи
динамичен списък (на наличните за даден потребител), които отговарят на критериите за търсене.
За да контролирате възможностите за търсене на динамичен списък, има три свойства на таблица в управлявания формуляр, който показва динамичния списък:
● Search string position – определя позицията на търсения низ. Може да приема следните стойности: Auto, Command Bar, None, Top, Bottom.


Ориз. 4. Низ за търсене в динамичен списък

Ако стойността на това свойство е зададена на Команден панел, тогава низът за търсене ще бъде показан в командния панел на формуляра (ако динамичният списък е главният атрибут на формуляра) или в командния панел, свързан с динамичния списък. Лентата за търсене, поставена в командната лента, винаги се натиска в десния край на командната лента (заедно с бутоните, разположени вдясно от лентата за търсене).
Ако свойството е зададено на Не, тогава низът за търсене няма да бъде във формуляра и когато започнете да въвеждате низа за търсене, ще се отвори диалогов прозорец.
Ако свойството е зададено на Top, лентата за търсене ще бъде разположена между лентата с команди на списъка и таблицата, показваща динамичния списък. Ако свойството е зададено на Bottom, низът за търсене ще бъде поставен непосредствено след таблицата, показваща динамичния списък.


● Ако свойството Режим на съвместимост е зададено на Не използвайте или е по-старо от Версия 8.3.4 – стойността е Команден панел.
Отидете до реда за търсене, както следва:
● Чрез натискане на клавишната комбинация Ctrl+F;
● Мишка;
● Когато започнете да въвеждате в динамичен списък (като се вземе предвид стойността на свойството SearchOnTyping на динамичния списък).
● View State Position – описва къде ще се покаже състоянието на изгледа: какви полета са търсени и какви стойности
търсени във всяка област. Може да приема следните стойности: Auto, None, Top, Bottom


Ориз. 5. Състояние на търсене в динамичен списък

Ако свойството е зададено на Не, тогава състоянието на изглед няма да присъства във формуляра. В резултат на това ще бъде възможно да се определи дали търсенето е завършено или не само чрез наличието на бутона Отказ от търсенето.
Ако свойството е зададено на Top, състоянието на изглед ще бъде разположено между командната лента на списъка и таблицата, показваща динамичния списък. Ако свойството е зададено на Bottom, състоянието на изглед ще бъде поставено непосредствено след таблицата, показваща динамичния списък.
Ако формулярът е създаден в 1C:Enterprise версия 8.3.4 и по-стари, свойството е зададено на No. Ако формулярът е създаден в 1C:Enterprise версия 8.3.5 и по-стара, свойството е зададено на Автоматично. Реалната стойност на имота в този случай ще се определи, както следва:
● Ако свойството Режим на съвместимост е зададено на Версия 8.3.4 (и по-ниска) – стойност No;
● Ако свойството Режим на съвместимост е зададено на Не използвайте или е по-старо от Версия 8.3.4 – стойност Топ;
● Позиция на контрола за търсене – Определя къде ще се появи контролният бутон за търсене. Бутонът отваря меню, което съдържа следната информация: команди Търсене по текуща стойност, Разширено търсене, Отказ от търсенето, Задаване на период (за списъци с документи и дневници) и хронология на заявките за търсене (последните 5 заявки). Свойството може да приема следните стойности: Auto, None, Command panel.


Ориз. 6. Управление на търсенето в динамичен списък

Ако свойството е зададено на Не, тогава контролният бутон за търсене няма да бъде във формуляра (но командите ще бъдат достъпни чрез менюто Още). Стойността на свойството Command Bar поставя бутон в командната лента, свързан с таблица, показваща динамичен списък.
Ако формулярът е създаден в 1C:Enterprise версия 8.3.4 и по-стари, свойството е зададено на No. Ако формулярът е създаден в 1C:Enterprise версия 8.3.5 и по-стара, свойството е зададено на Автоматично. Реалната стойност на имота в този случай ще се определи, както следва:
● Ако свойството Режим на съвместимост е зададено на Версия 8.3.4 (и по-ниска) – стойност No;
● Ако свойството Режим на съвместимост е зададено на Не използвайте или е по-старо от Версия 8.3.4 – стойността е Команден панел;
Ако във формуляр има няколко командни панела, източникът на команди за които е една таблица на управлявания формуляр (показваща данни от динамичен списък), тогава редът за търсене и контролният бутон за търсене ще бъдат разположени само в един команден панел:
● Или в командната лента на самия динамичен списък (ако има активирано автоматично довършване)
● Или в някой от останалите командни панели.

Нека да разгледаме характеристиките на използването на търсене в динамичен списък:
● За да направите търсенето удобно за използване (включително по отношение на производителността), трябва да активирате пълнотекстово търсене за всички конфигурационни обекти, които могат да се използват като основна таблица на динамичния списък. Освен това търсенето в пълен текст трябва да включва всички подробности за конфигурационни обекти, които могат да бъдат показани в динамичен списък и за които може да се изисква търсене.
Ако даден обект е изключен от пълнотекстово търсене, тогава въпросният механизъм за търсене ще работи, но ефективността на такова търсене ще бъде изключително ниска. Не се препоръчва да се използва търсене на обекти, които не са индексирани чрез пълнотекстово търсене.
● Приложното решение трябва да има рутинна задача, която редовно актуализира индекса за търсене в пълен текст.

● Търсенето не се извършва във всички колони на динамичния списък (и конфигурационния обект), а само в тези колони, които се показват в таблицата.
● Търсене в динамичен списък по полета от референтни типове с произволно представяне се извършва от полета, които се използват за
формиране на представителство (виж тук). Полетата, включени в изгледа, се получават, като се вземе предвид манипулаторът ViewFieldGettingProcessing() на съответния обект.
● За динамични списъци с определена главна таблица се използва пълнотекстово търсене в главната таблица. Всички неиндексирани връзки от главната таблица ще бъдат добавени към резултатите от пълнотекстово търсене. Резултатът от търсене в пълен текст за основната таблица се използва като селекция въз основа на ключови полета. Пълнотекстово търсене се извършва и върху полета, показани в списъка от други таблици (ако полето и конфигурационният обект използват пълнотекстово търсене). Без активирано пълнотекстово търсене данните може да са
намерени, но самото търсене ще бъде много бавно.
Ако възникне грешка при опит за извършване на търсене в пълен текст, търсенето ще се извърши без прилагане на търсене в пълен текст.
Например, това може да се случи при търсене на една буква и голям брой редове в информационната база, започващи с тази буква.
● Ако се използва селекция с тип сравнение Equals за поле в главната таблица на динамичен списък, тогава при извършване на пълнотекстово търсене, стойност за избор ще бъде добавена към заявката за търсене за тази таблица.
● Низът за търсене е разделен на думи. Този дял се извършва съгласно следните правила:
● Редът е прекъснат, като се използват символи за интервал и табулация като разделители.
● След това всеки получен фрагмент се обработва:
● Ако фрагментът е представяне на дата (с или без време) въз основа на локала на текущата сесия, тогава думата е фрагментът.
● В противен случай фрагментът се разделя допълнително, като се използват знаците „,.-/\“ като разделители. В този случай всеки получен фрагмент от низа се приема като дума.

● За всяка дума се формира собствен набор от условия, които се комбинират „по ИЛИ“. Този набор от условия се генерира, ако пълнотекстово търсене на дадена дума в таблицата, от която е получено това поле, е върнало поне един обект или пълнотекстово търсене не е използвано за това поле. Условията се формират както следва:
● За поле от тип String условието е FieldName LIKE %Word%.
● За поле от тип Number, условието има формата FieldName=Value, където Value е дума, преобразувана в типа Number. Ако прехвърлянето не може да се извърши, търсенето на полето няма да се извърши.
● Думата се търси като подниз в булевото представяне по подразбиране, дефинирано за текущата сесия. Ако думата за търсене бъде намерена в изглед, тя след това търси стойността, съответстваща на изгледа, в който е намерена думата. В този случай търсенето не използва изгледи, които са посочени чрез свойството Format form element.
● За поле от тип Date условието изглежда като FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
посочена с една или две цифри, годината ще бъде намалена до текущия век и тази стойност ще бъде добавена към условието за търсене.
● За референтни полета се извършва търсене в полетата, използвани за формиране на референтния изглед. Във всяко от тези полета търсете
извършва се съгласно описаните по-горе правила. Търсенето не използва полета, използвани за формиране на персонализирано представяне на данни.
Наборът от условия за всяка дума е комбиниран с „И“.
● За стойности с водещи нули можете да търсите или в низа с водещи нули, или в посочения низ без водещи нули.
● Ако динамичен списък показва списък с документи или хронология на документи, зададеният от вас интервал за изглед на списък също се показва в областта на формуляра, запазена за показване на състоянието на изглед за желания динамичен списък.
● Командата за търсене по текуща стойност не е достъпна, ако главната таблица на динамичния списък е критерият за избор.
● Намерените фрагменти от низове се маркират, когато се показват в таблицата.
● За една колона се поддържа само един низ за търсене. Когато добавяте нова заявка за търсене за колона, която вече се търси, изразът за търсене ще бъде заменен, вместо двете заявки за търсене да бъдат добавени заедно.
● Ако формулярът няма добавяне на елемент на формуляр за показване на низ за търсене на формуляр, свързано с таблицата (свойство Източник на добавяне на елемент на формуляр), показващо динамичен списък, след което натискането на клавишната комбинация Ctrl+F отваря диалоговия прозорец за търсене.


Ориз. 7. Диалогов прозорец за търсене

Ако формулярът съдържа добавяне на елемент от формуляра Показване на низ за търсене, свързано с таблица (свойство Източник на добавяне на елемент на формуляр), показваща динамичен списък, тогава за да отворите диалоговия прозорец за търсене, трябва да използвате командата за разширено търсене.
● Когато използвате диалоговия прозорец за търсене, имайте предвид следните точки:
● Отварянето на диалоговия прозорец за търсене с помощта на клавишна комбинация води до показване на стойността на текущата клетка в реда Какво да търсите и стойността на превключвателя Как да търсите е зададена на По точно съвпадение.

● Отварянето на диалоговия прозорец за търсене чрез директно започване на въвеждане на низ за търсене в динамичния списък води до факта, че стойността на превключвателя Как да търсите е зададена на стойност По част от низа и въведеният текст завършва в Какво към полето за търсене.

6. Получаване на данните, показани чрез динамичен списък

Когато използвате динамични списъци, може да се наложи да извършите различни действия върху данните, показани в момента от динамичния списък, като вземете предвид приложените селекции и търсения. Такива действия включват: обработка на показаната информация, например повторно изпращане на избрани документи или задаване на някои подробности за избрани обекти, генериране на списък с налични обекти (с дизайн и т.н.), например за отпечатване или записване в документ с електронна таблица.
За да получите данни, които се показват от динамичен списък, трябва да използвате GetExecutableDataCompositionSchema() и
GetExecutableDataCompositionSettings().
Пример за получаване на данни:

Схема = Elements.List.GetExecutableDataCompositionSchema();
Настройки = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(схема, настройки);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Нов OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Получаването на данни в колекция от стойности (таблица или списък със стойности) се извършва по същия начин.
Получаването на данни от динамичен списък по този начин има редица характеристики, които трябва да се вземат предвид при разработването на приложни решения:
● Следният дизайн на таблица не се поддържа:
● Редуващи се цветове на линиите;
● Заглавна снимка;
● Снимка на мазето;
● Цвят на фона на долния колонтитул;
● Цвят на текста в долния колонтитул;
● Шрифт на долния колонтитул;
● Хоризонтално разположение в сутерена;
● Режим на парола.
● Условният външен вид, определен за управляван формуляр, не се поддържа;
● Когато подреждате йерархична таблица във възходящ ред по поле от тип Link, записите, съдържащи празна връзка, винаги се поставят на първо място.

Настройването на избора на 1C в динамичен списък не е толкова трудно, колкото много потребители си мислят първоначално. Такива конфигуратори се използват и за таблици със стойности. В софтуера 1C често е необходимо да се сортират данните в графики и клетки според някои критерии.

Как да задам селекция в списък?

Можете да създадете селекция по два начина: под формата на самия списък или да я регистрирате програмно. В първия случай трябва да добавите динамичен списък 1C 8 към формуляра, да дефинирате основна таблица за него и след това да отидете на неговите свойства. Управляваната форма ви позволява да работите с голямо разнообразие от стойности. Там трябва да намерите елемента „Настройки на списъка“ и да отидете в това меню. В прозореца, който се отваря след прехода, можете ръчно да зададете сортировач за списъка, който използвате, и след това да управлявате програмно генерираната селекция.

За да инсталирате програмно динамичен сортировач, трябва да знаете, че изборът в 1C се счита за свойство на динамичен списък. За да добавите селекция, използвайки това качество, трябва да добавите нов елемент към свойството за селекция. За да работи всичко, трябва да зададете параметъра в дясното и лявото поле за избор на стойност, както и в полето „Тип сравнение“. Важно е да въведете стойността "вярно" в полето за използване. По този начин можете да създадете най-простия избор. Като добавите условия в други полета, можете да го направите по-сложен и да го персонализирате според вашите нужди.

Избор в таблицата със стойности на 1C

За да зададете селекция в таблицата, можете да използвате една от няколко опции. Можете да направите ръчен избор - да преминете през таблицата и да скриете всички редове, които не ви трябват. Но това е много трудоемък процес, който не всеки иска да прави. Този метод е подходящ само за тези, които току-що започват да работят с 1C и все още не могат да овладеят по-сложни, но продуктивни техники.

Втората опция за избор на таблица работи чрез метод на таблица, наречен „намиране на редове“. Съществен недостатък на този метод е, че единственият тип за сравнение ще бъде „равен“, което значително намалява възможността за използване на селекция.

Най-рационалният метод за избор на таблица може да се направи чрез конструктора на заявки.

Други характеристики на динамичен списък в 1C

Динамичните списъци предоставят широки възможности за работа с данни, които не бяха налични в 1C 7. Един от най-удобните от тях е създаването на формуляри за избор. Например в 1C: Счетоводство трябва да отидете в менюто „Номенклатура“ и да добавите нов формуляр за избор, като го обозначите като основен.

За да зададете параметри в динамичен списък:

  • Можете да използвате формуляри за избор;
  • Когато създадете този формуляр, в полето автоматично ще се появи динамичен списък за избор;
  • Като отидете на неговите свойства, можете да видите елемента „Персонализирана заявка“. Това е тази заявка, която ви позволява да се възползвате от всички предимства на динамичния списък;
  • Можете да въведете вашите параметри в тази заявка;
  • Като поставите отметка и отворите този прозорец, можете да видите нова заявка, с всички полета от справочника на артикулите;
  • Като щракнете върху бутона за създаване на заявки, можете да промените съдържанието на този списък.

За да добавите собствена заявка към падащия списък, трябва да отидете в раздела с настройки. В първия раздел ще видите възможността да направите произволен избор според вашите нужди.

Програмно инсталиране на заявката

Можете също да зададете заявката програмно. За да направите това, трябва да въведете само няколко реда в модула на формуляра. След това просто трябва да щракнете двукратно върху текущия ред, за да прехвърлите редовете с избраните стойности в документа.

В 1C списък със стойности във формуляр е чудесен начин да направите работата с 1C софтуер по-рационална и продуктивна. Това ви позволява да оптимизирате цялата работа в предприятието.

Избор на управлявани форми в 1C 8.3

Статията ще обсъди опциите за инсталиране на селекция в управлявани форми 1C 8.3. Изборът за динамичен списък може да бъде зададен статично или динамично в потребителския интерфейс или конфигуратора. Ще разгледаме всички опции за избор по-долу.

  • Избор на настройка в конфигуратора

Избор на настройка в потребителски режим

Динамичният списък, за разлика от таблица или дърво със стойности, е по-подходящо решение за прилагане на формуляри, съдържащи всякакви списъци, т.к. Динамичният списък предоставя най-широк набор от инструменти за работа с селекция, групиране на полета и сортиране. Този избор може да се зададе при работа в потребителски режим или конфигуратора, принципът е същият.

За да настроите избор в корпоративния режим, трябва да извикате командата „Персонализиране на списъка“.

Ще се отвори прозорец.


Разделът „избор“ представя списък с полета, които са в текущия списък. Изберете полетата от списъка, по които ще филтрираме. Това може да стане чрез двукратно щракване или чрез плъзгане и пускане.


Задаваме типа и стойността на сравнението, щракнете върху „Край на редактирането“, изборът е зададен.


Когато настройвате селекция в корпоративния режим, така наречените полета за бърз избор се създават автоматично във формуляра за списък.


За да може платформата 1C автоматично да създава полета за бърз избор, когато разработвате формуляр в конфигуратора, трябва да посочите група потребителски настройки.


Тази селекция ще бъде запазена само за текущия потребител, което позволява гъвкаво персонализиране на динамичния списък. Но ако задачата е да направим фиксиран избор за конкретен списък за всички потребители на системата, можем да я решим само чрез конфигуратора.

Избор на настройка в конфигуратора

Работейки в конфигуратора, можем да зададем два вида динамичен избор на списък – фиксиран и динамичен. Фиксираният избор може да бъде конфигуриран веднъж, динамичен или програмен може да бъде зададен в зависимост от всички данни в системата.

Принципът на задаване на фиксиран избор в конфигуратора не се различава от настройването му в потребителския режим, описан по-горе. За да зададем избора, трябва да отворим настройките на динамичния списък.


Ще се отвори прозорец.


Изборът се задава по същия начин, както в потребителския режим.

Опцията „Включване в потребителските настройки“ определя дали зададената селекция в конфигуратора ще бъде достъпна в потребителски режим чрез елемента от менюто „Персонализиране на списъка“.


Динамичен (софтуерен) избор

Често има нужда да се зададе селекция програмно, например при отваряне на форма за селекция, когато трябва да отворим контролирана форма с селекция. Към формуляра се предава параметър и въз основа на този параметър се задава избор. Често срещан пример за това е избирането на елементи от директория по собственик.

Методи

Ако разработваната конфигурация съдържа подсистемата BSP „Основна функционалност“, изборът на софтуер в динамичния списък може да бъде инсталиран по стандартния метод:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Подпис на този метод:

Динамичен списък Тип: DynamicList – Списъкът, в който искате да зададете избора.

Име на полето Тип: String – Полето, чрез което искате да зададете селекцията.

RightValue Тип: Произволен – Стойност за избор (По избор. Стойност по подразбиране: Недефинирано. Забележка: Ако подадете Недефинирано, стойността няма да бъде променена).

ViewComparison Тип: DataComposition Comparison Type – Selection Condition.

производителност Тип: String – Представяне на елемент от състава на данни (По избор. Стойност по подразбиране: Недефинирана. Ако е посочено, се отпечатва само флагът за използване с посоченото представяне (не се отпечатва стойност). Трябва да се подаде празен низ, за ​​да се изчисти, така че стойността да се отпечата отново.)

Използване Тип: Boolean – Флаг за използване на тази селекция (По избор. По подразбиране: Недефинирано).

Режим на показване Тип: ItemDisplayModeDataCompositionSettings – Как този избор се показва на потребителя. Възможни стойности:

  • Режим на показване на елемент Настройки за оформление на данни. Бърз достъп – В групата за бързи настройки над списъка.
  • Режим на показване на елемент Настройки за оформление на данни Нормален – В настройките на списъка (в подменюто Още).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – Позволете на потребителя да промени този избор.

IdentifierUserSettings Тип: Низ – Уникален идентификатор за тази селекция (Използва се за комуникация с потребителските настройки).

За да премахнете избрана стойност, трябва да използвате стандартния метод:

Клиентски сървър с общо предназначение. RemoveGroupElementsSelectionDynamicList()

Подпис на този метод:

Динамичен списък Тип: DynamicList – атрибут на формуляра, за който искате да зададете селекция.

Име на полето Тип: String – име на полето за оформление (не се използва за групи).

производителност Тип: String – Представяне на поле за оформление.

Ако в системата няма BSP, изборът може да бъде зададен независимо с помощта на обекта DataComposition Field.

Елемент за избор = List.Selection.Elements.Add(Type("DataComposition Selection Element")); Selection Element.LeftValue = NewDataCompositionField("Име"); Елемент за избор.Тип сравнение = DataComposition Comparison Type.Equal; Избор Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // Незадължителен елемент за избор RightValue = "Ivanov";

Тази селекция ще избере редове, в които стойността „Пълно име“ = „Иванов“.

За да използвате логически „И“, „ИЛИ“, „НЕ“, е предназначен типът данни DataCompositionSelectionElementGroup

Група за избор = List.Selection.Elements.Add(Type("Group of DataComposition Selection Elements")); SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR; Елемент за избор = Група за избор. Елементи. Добавяне(Тип("Елемент за избор на състав на данни")); Selection Element.LeftValue = NewDataCompositionField("Име"); Елемент за избор.Тип сравнение = DataComposition Comparison Type.Equal; Selection Element.RightValue = "Иванов"; Елемент за избор = Група за избор. Елементи. Добавяне(Тип("Елемент за избор на състав на данни")); Selection Element.LeftValue = NewDataCompositionField("Име"); Елемент за избор.Тип сравнение = DataComposition Comparison Type.Equal; SelectionElement.RightValue = "Петров";

Тази селекция ще избере редове, в които стойността „Пълно име“ = „Иванов“ или „Петров“.

Изборът в динамичен списък може да се извърши и чрез промяна на текста на заявката за динамичен списък. Тази опция работи, когато динамичният списък се прави чрез "персонализирана заявка".


За да направите това, добавете условието „WHERE IS THE TRUE“ към текста на заявката...


Както можете да видите, този подход е по-компактен по отношение на писането на код. Колкото по-сложни са условията за избор в табличната част, която искаме да зададем, толкова по-тромава ще бъде опцията, използваща избор чрез елемента за избор на състав на данни. Примерът с промяна на текста на заявката обаче има своите недостатъци - тази реализация не е устойчива на промени в кода. Например, направили сте такава реализация и сте забравили, но ако в бъдеще искате да промените текста на заявката, като добавите някакъв оператор след WHERE (ORDER, GROUP), трябва да запомните, че програмният код съдържа:

List.QueryText = List.QueryText + " And DirectoryUsers.Full Name V(""Ivanov"",""Petrov"")";

Ако това не се вземе предвид, ще има грешка, но за да избегнете това, можете да го промените на различна реализация. Добавяме следното условие към текста на заявката:

WHERE (НЕ &SelectionInstalled ИЛИ DirectoryUsers.Name IN (&PermittedName))

List.Parameters.SetParameterValue("SelectionSet", Full Name.Quantity() > 0); List.Parameters.SetParameterValue("Разрешено пълно име", пълно име);

Тук пълното име е масив.

Както можете да видите, 2 реда код срещу 10. Кой метод да изберете зависи от конкретната задача на приложението.