Как настроить выгрузку нескольких единиц измерения из 1С в 1С-Битрикс

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

При интеграции учетной системы 1С с интернет-магазином на платформе 1С-Битрикс разработчики часто сталкиваются со специфической задачей: в 1С номенклатура ведется в базовых единицах (например, в килограммах), но конечному покупателю на сайте необходимо предоставить возможность покупки товара в альтернативных упаковках — коробках, пачках или рулонах. Разберем, почему возникает эта сложность и какими способами можно реализовать требуемую логику.

Причины и ограничения штатного обмена по протоколу CommerceML

Проанализируем архитектуру типового обмена данными. По умолчанию механизм передачи каталога опирается на стандарт CommerceML. В соответствии с этим форматом для простого товара формируется единственный узел базовой единицы:

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

Рассмотрим проверенные практические способы обхода данного ограничения.

Способ 1. Реализация упаковок через торговые предложения (характеристики / SKU)

Если необходимо, чтобы покупатель на сайте мог явно переключать фасовки (например, «Штука», «Упаковка 10 шт.», «Коробка 50 шт.») в рамках одной карточки, наиболее надежным и штатным подходом является использование характеристик номенклатуры.

Разберем по шагам, как устроен этот механизм:

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

Способ 2. Подмена единицы измерения и пересчет цен на стороне 1С

Если товар должен продаваться на сайте исключительно в одной конкретной потребительской упаковке (например, только в коробках по 5 кг), а в базе 1С учет продолжается в килограммах, можно скорректировать логику выгрузки со стороны 1С.

Рассмотрим, как модифицируется алгоритм формирования данных для выгрузки:

  1. В настройках отбора номенклатуры или через расширение модуля обмена переопределяется подбор единицы измерения. Вместо базовой единицы подставляется единица продажи (упаковка).
  2. Остаток товара делится на коэффициент упаковки.
  3. Цена прайс-листа умножается на коэффициент упаковки.
  4. В тег БазоваяЕдиница выгружается наименование целевой упаковки (например, «упак» или «кор»).

Преимущество: на стороне сайта не требуется вносить изменения в структуру базы данных и компоненты каталога.

Ограничение: продажа на сайте будет вестись только в одной выбранной упаковке, без возможности выбора нескольких вариантов одновременно.

Способ 3. Передача коэффициента кратности и пересчет на стороне сайта

Если товар на сайте формально продается в базовых единицах (например, в кг), но отгрузка возможна только кратно целым коробкам, оптимально использовать коэффициент кратности корзины MEASURE_RATIO.

Разберем логику настройки:

  1. В 1С в карточке товара создается дополнительный реквизит, например КоличествоВУпаковке, куда вносится числовое значение коэффициента.
  2. Этот реквизит штатно выгружается в файл обмена в составе свойств номенклатуры.
  3. На стороне 1С-Битрикс создается обработчик события завершения импорта каталога (событие OnSuccessCatalogImport1C модуля catalog).
  4. Обработчик считывает значение свойства кратности и программно устанавливает его в поле коэффициента единицы измерения товара.

В результате покупатель добавляет товар с фиксированным шагом (например, 5, 10, 15 кг), а в шаблоне карточки справочно выводится расчетное количество коробок. Заказ поступает в 1С в базовых единицах, что не требует пересчета при проведении складских документов.

← На главную