Динамический список в 1С 8.3
Меню

Динамический список в 1С 8.3

Содержание статьи
  1. Возможности динамических списков в 1С
  2. Пример использования динамического списка

Кроме примитивных типов данных, которые можно встретить в любом языке программирования, в 1С существуют уникальные типы. У каждого из них есть свои свойства, методы, функции, предназначение и нюансы использования в системе. Одним из таких типов является динамический список, существенно облегчающий многие прикладные задачи. Именно поэтому разработчики и должны знать и уметь обращаться с этим универсальным инструментом, который позволяет, в частности, значительно облегчить мониторинг производительности 1С.

Возможности динамических списков в 1С

Предназначение данного инструмента заключается в отображении информации из любых таблиц БД, независимо от ее типа. Механизм был создан на основе СКД и обладает аналогичными возможностями. Но это не означает, что обязательно придется писать запрос на языке 1С, хотя эта возможность есть и ею нужно пользоваться. Вы можете просто указать таблицу, информация из которой вас интересует, и 1С самостоятельно сформирует простейший запрос.

Чтобы посмотреть, как формируется динамический список и какие данные он показывает, необходимо открыть управляемые формы, где он расположен, в конфигураторе: в перечне реквизитов через контекстное меню открыть его свойства и обратить внимание на пункт «ПроизвольныйЗапрос». Если галка отсутствует, то параметр «Основная таблица» отражает таблицу БД, откуда берутся данные. В ином случае, динамический список отражает данные произвольного запроса, который можно увидеть, открыв настройку списка.

Возможности динамических списков
Возможности динамических списков

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

Еще одно полезное свойство динамического списка открывается при щелчке на надпись «Настройка списка». Это меню позволяет даже при использовании стандартного набора полей сделать информацию более доступной и понятной конечным пользователям. Вне зависимости от того, произвольный запрос или нет, вы увидите вкладку «Настройки», где сможете указать:

  • Отбор динамического списка;
  • Группировки;
  • Сортировку;
  • Оформление.

Использование параметров делает динамические списки универсальными и достаточно гибкими. Также вы можете связать их с реквизитами на управляемой форме, и данные будут меняться в зависимости от выбранных пользователем параметров. Использование этих механизмов можно понять и оценить при рассмотрении примеров реальных задач.

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

Пример использования динамического списка

Для большей наглядности создадим отдельную внешнюю обработку и разместим на ней динамический список. Чтобы реализовать задуманное, таблицы с номенклатурой будет мало, поэтому нам необходимо разрешить произвольный запрос. В нем мы опишем левое соединение справочника с перечнем номенклатуры и регистра остатков и установим справочник в качестве основной таблицы. Такая схема позволит пользователям, работая с динамическим списком, добавлять или изменять номенклатуру.

Пример использования динамического списка
Пример использования динамического списка

Пример использования динамического списка
Пример использования динамического списка


ВЫБРАТЬ
     НоменклатураПеречень.Наименование КАК Наименование,
     ТоварыНаСкладахОстатки.Склад КАК Склад,
     ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
     Справочник.Номенклатура КАК НоменклатураПеречень
             ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекухцаяДата, ) КАК ТоварыНаСкладахОстатки
             ПО НоменклатураПеречень.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
ГДЕ

Так как в нашем запросе использовался параметр «ТекущаяДата», то нам необходимо задать его значение перед тем, как пользоваться обработкой. Для этого в модуле формы в процедуре «ПриСозданииНаСервере» стандартной командой присвоим ему функцию «ТекущаяДатаСеанса». Также нам необходимо вывести динамический список на управляющую форму и изменить порядок полей для наглядности. Перетаскиваем реквизит «ОстаткиНоменклатуры» в элементы формы (левая верхняя часть) и синими стрелками изменяем порядок полей в таблице на форме.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
      ОстаткиНоменклатуры.Параметры.УстановитьЗначениеПараметра("ТекутаяДата",ТекущаяДатаСеанса() )
КонецПроцедуры

Синими стрелками изменяем порядок полей в таблице на форме
Синими стрелками изменяем порядок полей в таблице на форме

Уже на этом этапе мы можем в 1С открыть нашу внешнюю обработку и увидеть, что динамический список работает. Мы можем смотреть остатки, создавать номенклатуру и группы, осуществлять поиск. Часто заказчики просят добавить возможность выбирать дату, на которую они будут видеть остатки. В случае формы с динамическим списком это обеспечивается за счет дополнительного поля и установки параметров с его помощью.

Добавляем реквизит «ДатаОстатков» типа «Дата» и переносим его в элементы формы. В событиях поля создаем событие «ПриИзменении» и прописываем код по установке параметра «ТекущаяДата», использующегося в динамическом запросе. Чтобы при открытии формы пользователь сразу понимал, на какую дату он видит остатки, внесем небольшие изменения в процедуру «ПриСозданииНаСервере».

Внесем небольшие изменения в процедуру «ПриСозданииНаСервере»
Внесем небольшие изменения в процедуру «ПриСозданииНаСервере»

Внесем небольшие изменения в процедуру «ПриСозданииНаСервере»
Внесем небольшие изменения в процедуру «ПриСозданииНаСервере»


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       ДатаОстатков = ТекущаяДатаСеанса();
       ОстаткиНоменклатуры.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", ДатаОстатков);
КонецПроцедуры

&НаКлиенте
Процедура ДатаОстатковПриИзменении(Элемент)
      ОстаткиНоменклатуры.Параметры.УстановитьЗначениеПараметра("ТекущаяДата",ДатаОстатков);
КонецПроцедуры

В результате наша форма Динамический список может отражать остатки на любую дату.

Мы рассмотрели только малую часть возможностей этого инструментария, но и этого уже достаточно, чтобы понять удобство такого типа, как динамический список. Подобный механизм используется для множества задач, но наиболее часто его встречают в типовых конфигурациях в управляемых формах:

  1. Подбора;
  2. Списков.

Чтобы получить динамический список и его запрос в типовых управляемых формах, разработчику необходимо в конфигураторе открыть нужную форму. В разделе реквизитов найти реквизит с типом данных «ДинамическийСписок» (чаще всего он выделен жирным шрифтом). В его свойствах находится текст запроса, отборы и другие настройки.

Если у вас возникли вопросы по работе с динамическими списками, обратитесь за консультацией в 1С к нашим специалистам. Напомним, что услуги сопровождения 1С базовых версий не требуют договора.

Рассказать друзьям
Предыдущая статья статья
1С Управление торговлей 11.4
Следующая статья статья
Основные справочники 1С 8.3: создание и изменение элементов
Комментарии