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