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