Программное создание и модификация динамических списков

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

Самое главное в динамическом списке – это то, что источником данных для него является база данных. Другими словами платформа частями (как бы динамически) считывает данные из базы данных и выводит данные в пользовательский интерфейс.

Давайте попробуем решить эту задачу на примере демонстрационной базы УНФ 3.0

Шаг №1. Программное создание динамического списка.

Начнем с того, что прежде чем выводить динамический список на форму, нужно создать его как реквизит формы. Для этого будем описывать код в событии ПриСозданииНаСервере

Шаг №2. Программное добавление динамического списка на форму.

На этом этапе мы просто выводим динамический список на форму. Это ничем не отличается от выведения любого другого реквизита на форму.

Результат:

Шаг №3. Программная модификация существующего списка

На этом этапе мы понимаем, что источником данных (и колонок) для динамического списка является запрос. Но что, если мы хотим модифицировать уже существующий динамический список.

Для этого нам нужно сделать 2 вещи:

  1. Переопределить запрос динамического списка
  2. Вывести недостающие колонки на форму

Давайте представим, что мы хотим вывести актуальные остатки на форму. Начнем с имеющего право на существование, но не очень оптимального варианата.

Вообще выводить остатки в динамические списки таким образом – не очень хорошая идея, особенно на больших базах. Так как при прокрутке будет выполняться большое количество небольших, но достаточно дорогих запросов к базе данных.

Вообще фирма 1С рекомендует выводить остатки для конкретной номенклатуры в отдельном поле в событием ПриАктивизацииСтроки. Хотя, на мой взгляд такой вариант тоже не айс.

Выводим остатки (неоптимальный вариант)
Выводим остатки (способ получше)

Конкретно в УНФ уменьшили нагрузку на СУБД при помощи записи актуальных остатков в непериодический регистр СВЕДЕНИЙ

Запрос (на уровне СУБД) получатся проще и выполняется существенно быстрее.

Файлы для скачивания

В качестве примера прикладываю обработку в которой полностью программно создается и модифицируется динамический список с номенклатурой на примере конфигурации 1С УНФ 3.0

chevron_left
chevron_right