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

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

Работа с дополнительными реквизитами в конфигурациях на базе 1С:Предприятие 8.3 (таких как Управление торговлей 11, ERP или Комплексная автоматизация) часто вызывает вопросы даже у опытных специалистов. Особенность механизма заключается в том, что эти поля не существуют в метаданных справочника как физические колонки, а создаются динамически с помощью Библиотеки стандартных подсистем (БСП). Разберем детально, как управлять их видимостью и почему некоторые свойства могут «исчезать» из поля зрения.

Механизм хранения дополнительных реквизитов: куда смотреть программисту

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

Рассмотрим ситуацию, когда в тексте запроса динамического списка вы не видите прямых ссылок на свойства. Это происходит потому, что платформа умеет обращаться к ним через точку: Ссылка.[ИмяДополнительногоРеквизита]. Система автоматически выполняет соединение с таблицей дополнительных сведений, если это предусмотрено настройками.

Как вывести дополнительный реквизит в список номенклатуры

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

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

Почему свойства отображаются выборочно: роль Видов номенклатуры

Выясним причину, по которой один реквизит виден для выбора, а другой — нет. В 1С:УТ 11 дополнительные реквизиты жестко привязаны к Наборам дополнительных реквизитов и сведений. Каждый набор, в свою очередь, соответствует определенному Виду номенклатуры.

Проанализируем ситуацию: если вы создали реквизит «Размер» для вида номенклатуры «Обувь», но открыли список товаров, где преобладает вид «Услуги», этот реквизит может быть недоступен или пуст. Чтобы реквизит был виден всегда и везде, его необходимо добавлять в группу «Общие (номенклатура)» в настройках дополнительных реквизитов (Администрирование — Общие настройки — Дополнительные реквизиты и сведения).

Рассмотрим подробнее программную часть. В модуле формы списка или элемента часто используется код БСП для инициализации свойств:


// Пример программного обращения к подсистеме управления свойствами
ПараметрыВывода = УправлениеСвойствами.ПараметрыРедактированияДополнительныхРеквизитов();
ПараметрыВывода.Свойство = "ИмяНужногоСвойства";
УправлениеСвойствами.ВыполнитьДействияПриЧтенииНаСервере(ЭтаФорма, Объект);

Настройка видимости на самой форме элемента

Если реквизит не отображается в карточке товара, проверим настройки самого свойства. Для этого перейдем в раздел Администрирование — Дополнительные реквизиты и найдем наше свойство в нужном наборе. Обратим внимание на следующие параметры:

Программное создание элементов: OnCreateAtServer

Разберем, почему в конфигураторе в режиме «Дизайн» мы не видим этих полей. Механизм БСП работает динамически. При открытии формы срабатывает процедура ПриСозданииНаСервере, которая вызывает программный интерфейс подсистемы УправлениеСвойствами. Программа считывает метаданные дополнительных реквизитов и создает на форме новые элементы управления (поля ввода, надписи) «на лету».

Если вам нужно программно повлиять на этот процесс, обратите внимание на процедуру:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Механизм БСП добавляет элементы в ГруппуДополнительныеРеквизиты
    УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, Объект, "ГруппаДополнительныеРеквизиты");
КонецПроцедуры

Оптимизация производительности: индексация

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

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

← На главную