При переходе со старых систем, например, с 1С 7.7, на современные конфигурации, такие как "Управление торговлей 11.5", часто возникает задача переноса данных со сложной структурой. Классический пример — характеристики номенклатуры, у которых в старой системе были собственные реквизиты (атрибуты). В УТ 11 для этого используется ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения. Однако, если попытаться добавить в него новые реквизиты через расширение, можно столкнуться с технологическим ограничением платформы, которое не позволяет модифицировать таким образом этот тип объектов.
Рассмотрим, как решить эту задачу, не изменяя типовую конфигурацию, а используя правильные архитектурные подходы, рекомендованные для платформы 1С:Предприятие 8.
Это наиболее гибкий и правильный способ для хранения дополнительных метаданных для любых объектов конфигурации, включая элементы плана видов характеристик. Идея заключается в создании отдельного хранилища, которое будет связано с нашими характеристиками.
Разберем по шагам, как это сделать:
ДополнительныеНастройкиХарактеристик.Характеристика. Его тип должен быть ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения. Это поле будет связывать запись в нашем регистре с конкретной характеристикой (например, с "Тип крепления").ВыгружатьНаСайт (тип Булево), УсловиеПроверки (тип Строка), ТипРасчета (тип Строка или ссылка на новый справочник) и так далее.В чем преимущества такого подхода?
Посмотрим на пример, как получить значение настройки программно:
// Предположим, у нас есть ссылка на характеристику "Тип крепления"
// Переменная СсылкаНаХарактеристику содержит эту ссылку
// Создаем структуру для отбора
Отбор = Новый Структура("Характеристика", СсылкаНаХарактеристику);
// Получаем значения из регистра
ЗначенияНастроек = РегистрыСведений.ДополнительныеНастройкиХарактеристик.Получить(Отбор);
Если ЗначенияНастроек <> Неопределено И ЗначенияНастроек.ВыгружатьНаСайт Тогда
// Выполняем логику выгрузки на сайт
ВыполнитьВыгрузкуНаСайт();
КонецЕсли;
Иногда проблема кроется не в технических ограничениях, а в самой постановке задачи. Стоит задаться вопросом: действительно ли признак "Выгружать на сайт" является неотъемлемым свойством самой характеристики?
Рассмотрим альтернативный взгляд. Возможно, логика выгрузки должна настраиваться не в карточке характеристики, а в настройках обмена с сайтом. В этом случае решение может быть таким:
Этот подход учит нас анализировать бизнес-процесс и не пытаться перенести структуру данных "один в один" из старых систем, а адаптировать ее под возможности и идеологию новой платформы.
В обсуждении возникла путаница с основным механизмом платформы — дополнительными реквизитами и сведениями. Важно понимать разницу:
Механизм дополнительных реквизитов предназначен для расширения свойств объектов (например, конкретного товара или его характеристики-значения), а не их типов.
Например, вы можете добавить доп. реквизит "Выгружать на сайт" к самой номенклатуре или к ее характеристике-экземпляру (например, к конкретной характеристике "Крепление: Стена, Цвет: Красный"). Доступ к значениям таких реквизитов осуществляется через общий модуль УправлениеСвойствами.
В исходной задаче же требовалось добавить поля к описанию самой характеристики (к элементу плана видов характеристик "Тип крепления"), то есть к метаданным. Для этой цели стандартный механизм доп. реквизитов не предназначен, и именно поэтому решение через регистр сведений является наиболее корректным.