При работе с управляемыми формами в 1С:Предприятие 8 часто возникает ситуация, когда стандартного мастера настройки ДинамическогоСписка оказывается недостаточно. Разработчики сталкиваются с необычными запросами, где в секции ГДЕ жестко прописано условие ЛОЖЬ. Давайте разберем, зачем это нужно и как правильно модифицировать такой список.
Основная цель использования конструкции ГДЕ ЛОЖЬ — это инициализация структуры таблицы на управляемой форме без выполнения реальной выборки данных из базы. Когда вы добавляете запрос в ДинамическийСписок, платформа 1С автоматически анализирует перечень полей в секции ВЫБРАТЬ и на их основе создает колонки в элементе формы.
Это дает следующие преимущества:
Если вам поставили задачу добавить колонку в обработку, где используется ДинамическийСписок с «пустым» запросом, действуйте по следующему алгоритму:
ВЫБРАТЬ. Важно придерживаться того же стиля, что и в остальных полях — например, использовать ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка), чтобы платформа правильно определила тип данных новой колонки.ГДЕ ЛОЖЬ всегда дает пустой результат, значит, в коде модуля формы есть логика, которая этот запрос изменяет или дополняет. Ищите использование метода УстановитьТекстЗапроса или изменение свойства ТекстЗапроса объекта ДинамическийСписок.ПриСозданииНаСервере или в специальных обработчиках обновления данных.Представим, что у вас есть запрос, который создает каркас таблицы:
ВЫБРАТЬ
Задача.Ссылка КАК Ссылка,
"" КАК Наименование,
ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Ответственный
ИЗ
Задача.ЗадачаИсполнителя КАК Задача
ГДЕ
ЛОЖЬ
Чтобы добавить новую колонку, например, Адресат, вы добавляете её в запрос. Однако, чтобы данные в этой колонке реально отобразились, вам нужно найти в модуле формы примерно такой код:
// В модуле формы или процедуры, отвечающей за обновление списка
Процедура ОбновитьСписок()
ТекстЗапроса = "ВЫБРАТЬ ... (ваши поля) ... ИЗ Задача.ЗадачаИсполнителя КАК Задача ГДЕ Задача.Дата > &ДатаНачала";
Элементы.Список.ПолучитьИсполнение().ТекстЗапроса = ТекстЗапроса;
КонецПроцедуры
Разберем важные нюансы, которые помогут вам при работе с динамическими списками:
Соответствие типов: Когда вы добавляете колонку в запрос, обязательно задавайте ей корректный тип через ЗНАЧЕНИЕ(...) или ТИПЗНАЧЕНИЯ(...). Если платформа не сможет определить тип данных, она не сможет правильно отобразить поле на форме, и вы получите ошибку или пустую ячейку.
Отсутствие данных: Помните, что запрос с ГДЕ ЛОЖЬ — это лишь скелет. Если после добавления колонки в запрос вы не увидели её в данных при запуске, значит, нужно корректировать процедуру, которая программно формирует итоговый ТекстЗапроса. Поищите в модуле по ключевым словам ТекстЗапроса или ДинамическийСписок.
Профессиональный подход: Использование такой структуры — стандарт индустрии для создания гибких отчетов и списков. Рассматривайте это как способ отделить «описание структуры» (запрос в дизайнере) от «бизнес-логики» (программная настройка запроса). Это делает код более поддерживаемым и позволяет легко масштабировать интерфейс под нужды бизнеса.
Если у вас возникли сложности с поиском логики, используйте отладчик 1С: установите точку останова в процедуре ПриСозданииНаСервере и проследите, как объект ДинамическийСписок меняет свое свойство ТекстЗапроса в процессе выполнения программы.