Как добавить дополнительное поле в динамический список справочника в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Вариант 1: Добавление поля непосредственно в запрос динамического списка

Это самый эффективный и надежный способ. Вместо того чтобы пытаться «вычислить» значение на лету для каждой строки, мы добавим колонку прямо в Запрос, который формирует данные списка. Рассмотрим, как это сделать по шагам:

  1. Откройте свойства ДинамическогоСписка в вашей форме.
  2. Перейдите в поле Запрос.
  3. Добавьте необходимое поле в конструкторе запроса, используя литералы или соединение с другими таблицами.

Если вам нужно просто создать «пустую» колонку для дальнейшего заполнения (хотя это менее предпочтительно), вы можете использовать синтаксис запроса с литералами:


ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.Наименование КАК Наименование,
    "" КАК НеликвидСтрока,
    0 КАК НеликвидЧисло
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура

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

Вариант 2: Использование левого соединения с таблицами свойств (БСП)

В конфигурациях, использующих Библиотеку стандартных подсистем (например, Управление торговлей 11), дополнительные реквизиты хранятся в регистрах сведений. Чтобы вывести значение, например, свойства «Неликвид», правильным архитектурным подходом будет ЛЕВОЕ СОЕДИНЕНИЕ вашего запроса с таблицей регистра дополнительных сведений.

Рассмотрим логику построения такого запроса:


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

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

Почему не стоит использовать обработчик «ПриПолученииДанныхНаСервере»?

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

Настройка формы для пользователей

После того как вы добавили поле в Запрос, оно становится доступным для вывода. Чтобы колонка появилась у пользователей:

  1. Перейдите в режим Предприятия.
  2. Нажмите кнопку Еще -> Изменить форму.
  3. Найдите добавленное вами поле в дереве элементов и установите для него галочку видимости.
  4. Если нужно сделать это глобально для всех, используйте Сохранение настроек формы или программное управление видимостью в ПриСозданииНаСервере в модуле формы.

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

← На главную