Динамический список
Источником данных для таблиц большинства форм списков (списки справочников клиентов, контактных лиц и др.) является системный компонент ДинамическийСписок (подробнее).
Для динамических списков указывается основная таблица и выражения полей, для которых можно использовать псевдонимы, как в примере ниже для поля Владелец.Клиент. Дополнительно к этому может быть определен порядок сортировки записей, например сортировка по полю ДатаСоздания в примере ниже:
Тип: Таблица<ДинамическийСписок>
Имя: ТаблицаСписка
Источник:
ОсновнаяТаблица:
Таблица: Задачи
Поля:
-
Тип: ПолеДинамическогоСписка
Выражение: Код
-
Тип: ПолеДинамическогоСписка
Выражение: Наименование
-
Тип: ПолеДинамическогоСписка
Выражение: ДатаСоздания
-
Тип: ПолеДинамическогоСписка
Выражение: Владелец.Клиент
Псевдоним: Владелец_Клиент
Представление: Клиент
ОтображатьВНастройкахОтборов: Истина
ОтображатьВПростыхОтборах: Истина
Порядок:
-
Поле: ДатаСоздания
НаправлениеСортировки: ПоУбыванию
Кроме того, существует возможность указывать присоединенные таблицы, которые соединяются с основной для уточнения выборки. Так, в примере ниже, в форме списка валют имеются присоединенные таблицы динамического списка. Основная таблица справочника Общие::КурсыВалют::Валюты соединяется с виртуальной таблицей среза последних регистра сведений Общие::КурсыВалют::КурсыВалют:
И для основной, и для присоединенной таблиц указываются псевдонимы, которые используются в выражении соединения таблиц и в выражениях полей динамического списка:
Кроме того, можно задать условия фильтрации данных в выборке с помощью свойства
Отбор
. Для отбора могут использоваться поля как основной, так и
присоединённых таблиц. Условие фильтрации сравнивается со значением поля данных. Это
может быть одно значение, выражение, или группа значений и/или выражений, соединенных
логическими операторами.
Параметры и аргументы
- Передавать условия запроса во время исполнения программы.
- Упрощать написание и чтение длинных, сложных запросов.
- Переиспользовать одно и то же условие, которое повторяется несколько раз в одном или нескольких запросах.
Параметры позволяют добавлять условия выборки напрямую в описание динамического списка, как значения его свойств, для дальнейшего их использования в виде ссылок в значениях или выражениях отбора.
Параметры
, после чего укажите один или несколько параметров, каждый из
которых будет иметь специальный тип ПараметрДинамическогоСписка
, имя и
значение. Значением может быть как собственно значение определённого типа, так и ссылка на
объект, например, условие выборки, переданное пользователем во время исполнения запроса.
Например:Тип: Таблица<ДинамическийСписок>
Параметры:
- Тип: ПараметрДинамическогоСписка
Имя: Параметр1
Значение:
Тип: Число
Значение: 110
- Тип: ПараметрДинамическогоСписка
Имя: Параметр2
Значение: =УсловиеОтПользователя
Отбор:
Элементы:
-
Тип: ЭлементОтбораВыражение
Выражение: Срез.Курс == &Параметр2
Аргументы позволяют добавлять значения в основную или присоединенные таблицы динамического списка. Аргументом таблицы может быть просто значение или целое выражение. При использовании таблицы аргумент будет передан автоматически во время исполнения запроса.
Аргументы
, после чего укажите
для него одно или несколько свойств Значение
. Например, для следующей
выборки на языке запросов:ВЫБРАТЬ
Период,
Курс,
Валюта
ИЗ
Курсы.СрезПоследних(Дата{2021-04-05})
описание аргументов в файле YAML будет
выглядеть следующим образом:— для основной таблицы:
Тип: Таблица<ДинамическийСписок>
Источник:
ОсновнаяТаблица:
Таблица: КурсыВалют.СрезПоследних
Псевдоним: Срез
Аргументы:
-
Тип: АргументТаблицы
Значение:
Тип: Дата
Значение: 2021-04-05
Поля:
-
Тип: ПолеДинамическогоСписка
Выражение: Срез.Период
-
Тип: ПолеДинамическогоСписка
Выражение: Срез.Валюта
— для присоединенной таблицы:
ПрисоединенныеТаблицы:
-
Тип: ПрисоединеннаяТаблица
Таблица: КурсыВалют.СрезПоследних
Аргументы:
-
Тип: АргументТаблицы
Значение:
Тип: Дата
Значение: 2021-04-05
Пример использования выражения как аргумента таблицы:
Тип: Таблица<ДинамическийСписок>
ИспользованиеПоиска: НеИспользовать
Источник:
ОсновнаяТаблица:
Таблица: КурсыВалют.СрезПоследних
Псевдоним: Срез
Аргументы:
-
Тип: АргументТаблицыВыражение
Выражение: =ПараметрДата
Параметры:
-
Тип: ПараметрДинамическогоСписка
Имя: ПараметрДата
Значение:
Тип: Дата
Значение: 10.10.2011
Поля:
-
Тип: ПолеДинамическогоСписка
Выражение: Срез.Период
-
Тип: ПолеДинамическогоСписка
Выражение: Срез.Валюта
Отбор:
Элементы:
-
Тип: ЭлементОтбораВыражение
Выражение: Срез.Курс == &Параметр2
ВидЭлемента: КомпонентИнтерфейса
ОбластьВидимости: ВПодсистеме
Ид: 157b069e-baa1-4a28-ab9e-5162f4b66688
Имя: МояТаблица
Свойства:
-
Имя: СвойствоФормат
Тип: Строка
Наследует:
Тип: Таблица<ДинамическийСписок>
ИспользованиеПоиска: НеИспользовать
Источник:
ОсновнаяТаблица:
Таблица: КурсыВалют.СрезПоследних
Псевдоним: Срез
Аргументы:
-
Тип: АргументТаблицы
Значение:
Тип: Дата
Значение: 10.10.2011
Поля:
-
Тип: ПолеДинамическогоСписка
Выражение: Период
-
Тип: ПолеДинамическогоСписка
Выражение: Валюта
-
Тип: ПолеДинамическогоСписка
Выражение: Курс.Представление(&ПараметрСтрока) # Используем параметр в полях. Задаем формат курса валют
Псевдоним: ФорматированныйКурс
Параметры:
-
Тип: ПараметрДинамическогоСписка
Имя: ПараметрЧисло
Значение:
Тип: Число
Значение: 110
-
Тип: ПараметрДинамическогоСписка
Имя: ПараметрБулево
Значение:
Тип: Булево
Значение: Истина
-
Тип: ПараметрДинамическогоСписка
Имя: ПараметрСтрока
Значение:
Тип: Строка
Значение: 0_11;DG=_ # Применяем данный формат к числу 1234567. Получаем: 001_234_567
-
# Берем строку формата из свойства компонента. Устанавливаем параметр динамического списка через ссылку на объект
Тип: ПараметрДинамическогоСписка
Имя: ПараметрФормат
Значение: =СвойствоФормат
Отбор:
Элементы:
- # Используем параметр в ЭлементОтбораВыражение
Тип: ЭлементОтбораВыражение
Выражение: Срез.Курс == &ПараметрЧисло # КурсыВалют.СрезПоследних(10.10.2011).Курс == 110
-
Тип: ЭлементОтбораВыражение
Выражение: '&ПараметрБулево'
-
Тип: ЭлементОтбораВыражение
Выражение: Срез.Курс.Представление(&ПараметрСтрока).Содержит("110")
Порядок:
-
Тип: ЭлементПорядка
Поле: Валюта
Множественные реквизиты
Если в Справочнике либо Документе есть множественный реквизит, то можно его получить как поле выборки динамического списка. В частности, есть возможность получения множественных реквизитов в выборке динамического списка и использования множественных реквизитов в отборах динамического списка. Также можно осуществлять отбор по множественному полю с особыми условиями сравнения.
Тип: Таблица<ДинамическийСписок>
Имя: Таблица
Источник:
Тип: ДинамическийСписок
ОсновнаяТаблица:
Таблица: СправочникСотрудники
Поля:
-
Тип: ПолеДинамическогоСписка
ОтображатьВНастройкахОтборов: Истина
ОтображатьВПростыхОтборах: Истина
Выражение: Код
-
Тип: ПолеКоллекцияДинамическогоСписка
ОтображатьВНастройкахОтборов: Истина
ОтображатьВПростыхОтборах: Истина
Выражение: НомераТелефонов
Колонки:
-
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
Заголовок: Код
ПолеЗначения: Код
-
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
ПолеЗначения: НомераТелефонов
Заголовок: Номера телефонов
- Пусто — условие истинно, если множественное поле не содержит ни одного значения (поле отбора «Значение» игнорируется);
- СодержитЛюбой — условие истинно, если хотя бы одно значение отбора присутствует в значении множественного поля;
- СодержитВсе — условие истинно, если каждое значение отбора присутствует в значении множественного поля;
- СодержитТолько — условие истинно, если все значения множественного поля совпадают с заданными значениями отбора;
- НеСодержит — условие истинно, если ни одно значение отбора не совпадает со значениями множественного поля.
Тип: Таблица<ДинамическийСписок>
Имя: Таблица
Источник:
Тип: ДинамическийСписок
ОсновнаяТаблица:
Таблица: СправочникСотрудники
Поля:
-
Тип: ПолеДинамическогоСписка
ОтображатьВНастройкахОтборов: Истина
ОтображатьВПростыхОтборах: Истина
Выражение: Код
-
Тип: ПолеКоллекцияДинамическогоСписка
ОтображатьВНастройкахОтборов: Истина
ОтображатьВПростыхОтборах: Истина
Выражение: ПройденныеКурсы
Колонки:
-
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
Заголовок: Код
ПолеЗначения: Код
-
Тип: СтандартнаяКолонкаТаблицы<СтрокаДинамическогоСписка>
ПолеЗначения: ПройденныеКурсы
Заголовок: Пройденные курсы
Отбор:
Элементы:
-
Тип: ЭлементОтбораПоляКоллекция
Поле: ПройденныеКурсы
ВидСравненияПоляКоллекция: СодержитЛюбой
Значение:
Тип: Строка
Значение: Курс по программированию
- Для того чтобы использовать фильтрацию с особыми условиями в пользовательском
интерфейсе, следует поменять тип фильтра на Продвинутый фильтр. Для этого
откройте фильтр, нажмите на символ
и выберите Тип фильтров:
- В открывшемся окне выберите Продвинутые и нажмите
Применить:
- После этого снова откройте фильтр и нажмите + Добавить фильтр.
В открывшемся окне укажите необходимый столбец со множественным реквизитом, условие
отбора, а также отметьте в выпадающем списке, в поле Значение, все необходимые
значения. Нажмите Сохранить:
Встроенный язык
Для работы с динамическим списком и его свойствами во встроенном языке см. соответствующий раздел Синтакс-помощника.