Работа с дополнительными реквизитами в конфигурациях на базе 1С:Предприятие 8.3 (таких как Управление торговлей 11, ERP или Комплексная автоматизация) часто вызывает вопросы даже у опытных специалистов. Особенность механизма заключается в том, что эти поля не существуют в метаданных справочника как физические колонки, а создаются динамически с помощью Библиотеки стандартных подсистем (БСП). Разберем детально, как управлять их видимостью и почему некоторые свойства могут «исчезать» из поля зрения.
Для начала проанализируем, как система хранит эти данные. В отличие от обычных реквизитов, дополнительные свойства записываются в табличную часть ДополнительныеРеквизиты объекта Справочник.Номенклатура. Однако платформа 1С и БСП предоставляют «магический» интерфейс, который позволяет видеть эти данные так, будто они являются полноценными полями объекта.
Рассмотрим ситуацию, когда в тексте запроса динамического списка вы не видите прямых ссылок на свойства. Это происходит потому, что платформа умеет обращаться к ним через точку: Ссылка.[ИмяДополнительногоРеквизита]. Система автоматически выполняет соединение с таблицей дополнительных сведений, если это предусмотрено настройками.
Если реквизит создан, но не отображается в колонках списка, нам необходимо воспользоваться встроенным механизмом настройки формы. Пройдем по шагам этот процесс:
Выясним причину, по которой один реквизит виден для выбора, а другой — нет. В 1С:УТ 11 дополнительные реквизиты жестко привязаны к Наборам дополнительных реквизитов и сведений. Каждый набор, в свою очередь, соответствует определенному Виду номенклатуры.
Проанализируем ситуацию: если вы создали реквизит «Размер» для вида номенклатуры «Обувь», но открыли список товаров, где преобладает вид «Услуги», этот реквизит может быть недоступен или пуст. Чтобы реквизит был виден всегда и везде, его необходимо добавлять в группу «Общие (номенклатура)» в настройках дополнительных реквизитов (Администрирование — Общие настройки — Дополнительные реквизиты и сведения).
Рассмотрим подробнее программную часть. В модуле формы списка или элемента часто используется код БСП для инициализации свойств:
// Пример программного обращения к подсистеме управления свойствами
ПараметрыВывода = УправлениеСвойствами.ПараметрыРедактированияДополнительныхРеквизитов();
ПараметрыВывода.Свойство = "ИмяНужногоСвойства";
УправлениеСвойствами.ВыполнитьДействияПриЧтенииНаСервере(ЭтаФорма, Объект);
Если реквизит не отображается в карточке товара, проверим настройки самого свойства. Для этого перейдем в раздел Администрирование — Дополнительные реквизиты и найдем наше свойство в нужном наборе. Обратим внимание на следующие параметры:
Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.Транспорт.Разберем, почему в конфигураторе в режиме «Дизайн» мы не видим этих полей. Механизм БСП работает динамически. При открытии формы срабатывает процедура ПриСозданииНаСервере, которая вызывает программный интерфейс подсистемы УправлениеСвойствами. Программа считывает метаданные дополнительных реквизитов и создает на форме новые элементы управления (поля ввода, надписи) «на лету».
Если вам нужно программно повлиять на этот процесс, обратите внимание на процедуру:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Механизм БСП добавляет элементы в ГруппуДополнительныеРеквизиты
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, Объект, "ГруппаДополнительныеРеквизиты");
КонецПроцедуры
Важный совет для администраторов и программистов: если вы выводите дополнительный реквизит в список и планируете по нему выполнять поиск или фильтрацию, обязательно установите флаг «Индексировать» в карточке дополнительного реквизита. Без этого работа со справочником номенклатуры, в котором более нескольких тысяч позиций, станет крайне медленной, так как СУБД придется выполнять полное сканирование таблицы свойств при каждой попытке отбора.
Подведем итог: «волшебные настройки» отображения скрыты в трех местах: настройках Вида номенклатуры, параметрах самого Дополнительного реквизита и пользовательской настройке «Изменить форму». Совместное использование этих инструментов позволяет гибко адаптировать интерфейс 1С под задачи любого бизнеса.