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