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