Часто в мебельном бизнесе или торговле технически сложными товарами возникает ситуация, когда в базе 1С учет ведется подетально (например, отдельно каркас шкафа и отдельно фасад), но конечному покупателю на сайте нужно показать единый готовый продукт. Это необходимо для удобства выбора и упрощения процесса оформления заказа. Разберем подробно, как реализовать такое объединение, сохранив при этом корректность складского учета и автоматизацию цен.
Проанализируем самый простой с точки зрения стандартного функционала метод — физическую или учетную сборку. Если товар на складе реально собирается в коробку и превращается в «Шкаф», нам подходит документ Комплектация номенклатуры.
Как это работает:
Комплектация номенклатуры (в некоторых конфигурациях — «Сборка товаров») мы списываем со склада комплектующие и приходуем готовую единицу товара.Преимущества: На сайт выгружается одна позиция с реальным остатком. Покупатель видит конкретный товар, который уже «готов» к отгрузке.
Недостатки: Этот метод требует ручного или автоматизированного создания документов сборки. Если у вас 300 видов шкафов и тысячи комбинаций, складской учет превратится в хаос, так как вам придется заранее «собирать» все возможные варианты, что замораживает остатки комплектующих.
Рассмотрим более гибкий подход, который доступен в современных конфигурациях, таких как 1С:Управление торговлей 11, УНФ или ERP. Это использование типа номенклатуры Набор.
Суть метода:
В 1С создается позиция с типом «Набор». Она не хранится на складе физически. В настройках набора указывается его состав. При выгрузке на сайт такая позиция ведет себя как полноценный товар, но ее остаток рассчитывается динамически. Рассмотрим ситуацию: на складе 10 каркасов и 5 фасадов. Система автоматически вычислит, что доступно только 5 наборов «Шкаф».
Настройка автоматического обновления цен:
Для наборов можно настроить вид цены, который будет рассчитываться как сумма цен входящих в него комплектующих. Проанализируем формулу: ЦенаНабора = Цена(Каркас) + Цена(Фасад). При изменении стоимости фасада на фабрике, цена шкафа на сайте обновится автоматически при следующей синхронизации.
Если конфигурация 1С устаревшая или жестко ограничена, программисты часто прибегают к модификации модуля обмена с сайтом. Посмотрим на пример логики, которая позволяет «склеивать» товары прямо в момент формирования XML-пакета для сайта.
Разберем пример кода, который может быть внедрен в процедуру выгрузки:
Если ВыгрузкаНаСайт Тогда
Если Номенклатура.Наименование = "каркас шкафа" Или Номенклатура.Наименование = "фасад" Тогда
ВыгружаемТМЦНаСайт.Наименование = "Шкаф полноценный (комплект)";
// Здесь должна быть логика объединения остатков и цен
КонецЕсли;
КонецЕсли;
Важное предостережение: Как отмечают эксперты, такой путь опасен появлением «легаси-кода», который сложно поддерживать. Если вы просто подмените названия, сайт может получить три разных товара с одинаковым именем «Шкаф», что запутает покупателя. Кроме того, критически важно правильно передавать остатки. Если выгрузить только одну часть комплекта, покупатель закажет шкаф, которого на самом деле нет в полной комплектации.
Иногда правильнее оставить учет в 1С в «чистом» виде (подетально), а логику объединения перенести на сторону сайта. В WordPress (WooCommerce) существуют плагины для создания Composite Products или Bundles.
Алгоритм действий:
Выясним причину, почему простого переименования недостаточно. Основная сложность — виртуальные остатки. Если вы решили объединить товары программно, ваша система должна постоянно выполнять вычисление:
ОстатокОбщий = Минимум(ОстатокКомпонента1, ОстатокКомпонента2).
Если каркасов много, а фасад остался один — на сайте должен отображаться только один шкаф. В противном случае вы столкнетесь с ситуацией, когда клиент оплатил заказ, а собрать вы его не можете. Поэтому использование встроенного механизма Наборы в 1С является наиболее приоритетным и надежным решением.
Подведем итоги нашего анализа. Выбор метода зависит от ваших бизнес-процессов:
Помните, что корректная выгрузка должна обеспечивать уникальность идентификаторов (GUID), чтобы при следующем обновлении цен товары не «раздвоились» и не потеряли связь со своими компонентами.