Как добавить реквизит в документ и отобразить его в колонке формы списка 1С

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

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

Шаг 1. Добавление реквизита в объект метаданных

Первое и самое важное правило, которое мы должны запомнить: для того чтобы данные корректно сохранялись в базе и были доступны для запросов, реквизит нужно добавлять в сам Объект (документ), а не только в его форму. Если мы добавим реквизит только на форму, он будет существовать лишь в памяти в момент работы с этой формой и не запишется в таблицу базы данных.

Проанализируем последовательность действий в конфигураторе:

  1. Найдем нужный документ в дереве метаданных (например, РеализацияТоваровУслуг).
  2. В ветке Реквизиты добавим новый элемент (например, ОплатаПКО) с соответствующим типом данных (например, ДокументСсылка.ПриходныйКассовыйОрдер или Строка).
  3. Важный момент для производительности: Если мы планируем в будущем сортировать список по этой колонке или делать по ней отборы, обязательно установим свойство Индексировать в значение Индексировать. Это предотвратит замедление работы системы при росте количества записей.

Шаг 2. Вывод реквизита на форму документа

Чтобы пользователь мог заполнять этот реквизит, его нужно разместить на форме самого документа. Разберем, как это сделать:

В управляемых формах достаточно перетащить созданный реквизит из правой колонки (дерево реквизитов формы) в левую (элементы формы). В обычных формах (часто встречающихся в УТ 10.3) потребуется вручную создать элемент управления (поле ввода) и связать его с данными документа в свойствах.

Шаг 3. Настройка отображения в форме списка через Динамический список

Если форма списка построена на базе Динамического списка (что является стандартом для управляемых форм), простого добавления реквизита в объект недостаточно. Система использует оптимизированные запросы для получения данных, и наше новое поле нужно явно включить в этот запрос.

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

  1. Откроем форму списка документа.
  2. Перейдем на закладку Реквизиты и найдем основной реквизит Список (тип ДинамическийСписок).
  3. В свойствах этого реквизита найдем пункт Настройка списка и нажмем Открыть.
  4. Если установлен флаг Произвольный запрос, нам нужно нажать кнопку Запрос и отредактировать текст.

Посмотрим на пример того, как может выглядеть добавление поля в текст запроса:


ВЫБРАТЬ
    ДокументРеализация.Ссылка,
    ДокументРеализация.Дата,
    ДокументРеализация.Номер,
    ДокументРеализация.ОплатаПКО // Наше новое поле
ИЗ
    Документ.РеализацияТоваровУслуг КАК ДокументРеализация

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

Шаг 4. Настройка видимости в режиме Предприятие

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

Для решения этой проблемы воспользуемся механизмом Изменить форму:

  1. Запустим программу в режиме 1С:Предприятие.
  2. В списке документов нажмем ЕщеИзменить форму....
  3. Если поля нет в основном списке, встанем на элемент Ссылка и нажмем кнопку Добавить поля.
  4. В появившемся списке найдем наш новый реквизит и поставим галочку.

Если же поля нет даже в списке доступных для добавления, значит, мы либо не обновили конфигурацию базы данных (клавиша F7), либо у пользователя недостаточно прав.

Шаг 5. Права доступа и роли

Проанализируем ситуацию, когда в конфигураторе все настроено, а в пользовательском режиме данных нет. Проблема часто кроется в Ролях. При добавлении нового реквизита система по умолчанию может не дать прав на его просмотр существующим ролям (кроме полных прав).

Необходимо:

Альтернативный метод для Обычных форм (УТ 10.3)

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

Однако, если данные являются вычисляемыми (например, статус оплаты, который высчитывается по остаткам регистров в реальном времени), лучше использовать обработчик события ПриПолученииДанных. Это более профессиональный подход, так как он позволяет оптимизировать нагрузку на сервер при прокрутке больших списков.

Резюме и рекомендации

Подведем итог нашей совместной работы. Для успешного вывода данных в список необходимо соблюсти цепочку: Объект (База данных) -> Запрос (Динамический список) -> Элемент формы (Визуализация) -> Права доступа (Роли).

Не забывайте про очистку кэша (параметр /ClearCache), если изменения упорно не отображаются в интерфейсе. Также помните, что использование Критериев отбора может быть более элегантным решением, если вам нужно видеть связанные документы без внесения изменений в структуру основных таблиц документов.

← На главную