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