Как объединить несколько видов товаров в один для выгрузки на сайт

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

Часто в мебельном бизнесе или торговле технически сложными товарами возникает ситуация, когда в базе 1С учет ведется подетально (например, отдельно каркас шкафа и отдельно фасад), но конечному покупателю на сайте нужно показать единый готовый продукт. Это необходимо для удобства выбора и упрощения процесса оформления заказа. Разберем подробно, как реализовать такое объединение, сохранив при этом корректность складского учета и автоматизацию цен.

Вариант 1. Использование документа «Комплектация номенклатуры»

Проанализируем самый простой с точки зрения стандартного функционала метод — физическую или учетную сборку. Если товар на складе реально собирается в коробку и превращается в «Шкаф», нам подходит документ Комплектация номенклатуры.

Как это работает:

  1. Создаем новую карточку номенклатуры с видом «Товар» и названием «Шкаф в сборе».
  2. Для этой позиции создаем «Спецификацию» (или просто список комплектующих), где указываем: Каркас (1 шт.) и Фасад (1 шт.).
  3. С помощью документа Комплектация номенклатуры (в некоторых конфигурациях — «Сборка товаров») мы списываем со склада комплектующие и приходуем готовую единицу товара.

Преимущества: На сайт выгружается одна позиция с реальным остатком. Покупатель видит конкретный товар, который уже «готов» к отгрузке.

Недостатки: Этот метод требует ручного или автоматизированного создания документов сборки. Если у вас 300 видов шкафов и тысячи комбинаций, складской учет превратится в хаос, так как вам придется заранее «собирать» все возможные варианты, что замораживает остатки комплектующих.

Вариант 2. Механизм «Наборы» (Виртуальные комплекты)

Рассмотрим более гибкий подход, который доступен в современных конфигурациях, таких как 1С:Управление торговлей 11, УНФ или ERP. Это использование типа номенклатуры Набор.

Суть метода:

В 1С создается позиция с типом «Набор». Она не хранится на складе физически. В настройках набора указывается его состав. При выгрузке на сайт такая позиция ведет себя как полноценный товар, но ее остаток рассчитывается динамически. Рассмотрим ситуацию: на складе 10 каркасов и 5 фасадов. Система автоматически вычислит, что доступно только 5 наборов «Шкаф».

Настройка автоматического обновления цен:

Для наборов можно настроить вид цены, который будет рассчитываться как сумма цен входящих в него комплектующих. Проанализируем формулу: ЦенаНабора = Цена(Каркас) + Цена(Фасад). При изменении стоимости фасада на фабрике, цена шкафа на сайте обновится автоматически при следующей синхронизации.

Вариант 3. Программная подмена при выгрузке (Кастомное решение)

Если конфигурация 1С устаревшая или жестко ограничена, программисты часто прибегают к модификации модуля обмена с сайтом. Посмотрим на пример логики, которая позволяет «склеивать» товары прямо в момент формирования XML-пакета для сайта.

Разберем пример кода, который может быть внедрен в процедуру выгрузки:


Если ВыгрузкаНаСайт Тогда
    Если Номенклатура.Наименование = "каркас шкафа" Или Номенклатура.Наименование = "фасад" Тогда
        ВыгружаемТМЦНаСайт.Наименование = "Шкаф полноценный (комплект)";
        // Здесь должна быть логика объединения остатков и цен
    КонецЕсли;
КонецЕсли;

Важное предостережение: Как отмечают эксперты, такой путь опасен появлением «легаси-кода», который сложно поддерживать. Если вы просто подмените названия, сайт может получить три разных товара с одинаковым именем «Шкаф», что запутает покупателя. Кроме того, критически важно правильно передавать остатки. Если выгрузить только одну часть комплекта, покупатель закажет шкаф, которого на самом деле нет в полной комплектации.

Вариант 4. Реализация на стороне CMS (WordPress + WooCommerce)

Иногда правильнее оставить учет в 1С в «чистом» виде (подетально), а логику объединения перенести на сторону сайта. В WordPress (WooCommerce) существуют плагины для создания Composite Products или Bundles.

Алгоритм действий:

  1. Выгружаем из 1С каркас и фасад как отдельные товары.
  2. На сайте помечаем их как «скрытые» (не отображаем в общем каталоге).
  3. Создаем на сайте один «Составной товар», в который включаем эти две позиции.
  4. Сайт сам суммирует цену и следит за общим остатком.
  5. При заказе сайт передает в 1С две отдельные строки, что позволяет менеджеру склада сразу видеть, какие именно части нужно отгрузить.

Проблема остатков и цен при объединении

Выясним причину, почему простого переименования недостаточно. Основная сложность — виртуальные остатки. Если вы решили объединить товары программно, ваша система должна постоянно выполнять вычисление:

ОстатокОбщий = Минимум(ОстатокКомпонента1, ОстатокКомпонента2).

Если каркасов много, а фасад остался один — на сайте должен отображаться только один шкаф. В противном случае вы столкнетесь с ситуацией, когда клиент оплатил заказ, а собрать вы его не можете. Поэтому использование встроенного механизма Наборы в 1С является наиболее приоритетным и надежным решением.

Резюме и рекомендации

Подведем итоги нашего анализа. Выбор метода зависит от ваших бизнес-процессов:

Помните, что корректная выгрузка должна обеспечивать уникальность идентификаторов (GUID), чтобы при следующем обновлении цен товары не «раздвоились» и не потеряли связь со своими компонентами.

← На главную