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