При интеграции учетной системы 1С с интернет-магазином на платформе 1С-Битрикс разработчики часто сталкиваются со специфической задачей: в 1С номенклатура ведется в базовых единицах (например, в килограммах), но конечному покупателю на сайте необходимо предоставить возможность покупки товара в альтернативных упаковках — коробках, пачках или рулонах. Разберем, почему возникает эта сложность и какими способами можно реализовать требуемую логику.
Проанализируем архитектуру типового обмена данными. По умолчанию механизм передачи каталога опирается на стандарт CommerceML. В соответствии с этим форматом для простого товара формируется единственный узел базовой единицы:
При штатной выгрузке типовой модуль 1С передает только БазоваяЕдиница. Официальная техническая поддержка 1С-Битрикс подтверждает, что возможность автоматической загрузки массива дополнительных упаковок, коэффициентов единиц измерения и единиц хранения остатков для простого товара в типовом модуле ограничена. В карточке товара на сайте фиксируется базовая единица, а также цена и остаток именно за эту базовую единицу.
Рассмотрим проверенные практические способы обхода данного ограничения.
Если необходимо, чтобы покупатель на сайте мог явно переключать фасовки (например, «Штука», «Упаковка 10 шт.», «Коробка 50 шт.») в рамках одной карточки, наиболее надежным и штатным подходом является использование характеристик номенклатуры.
Разберем по шагам, как устроен этот механизм:
Если товар должен продаваться на сайте исключительно в одной конкретной потребительской упаковке (например, только в коробках по 5 кг), а в базе 1С учет продолжается в килограммах, можно скорректировать логику выгрузки со стороны 1С.
Рассмотрим, как модифицируется алгоритм формирования данных для выгрузки:
БазоваяЕдиница выгружается наименование целевой упаковки (например, «упак» или «кор»).Преимущество: на стороне сайта не требуется вносить изменения в структуру базы данных и компоненты каталога.
Ограничение: продажа на сайте будет вестись только в одной выбранной упаковке, без возможности выбора нескольких вариантов одновременно.
Если товар на сайте формально продается в базовых единицах (например, в кг), но отгрузка возможна только кратно целым коробкам, оптимально использовать коэффициент кратности корзины MEASURE_RATIO.
Разберем логику настройки:
КоличествоВУпаковке, куда вносится числовое значение коэффициента.OnSuccessCatalogImport1C модуля catalog).В результате покупатель добавляет товар с фиксированным шагом (например, 5, 10, 15 кг), а в шаблоне карточки справочно выводится расчетное количество коробок. Заказ поступает в 1С в базовых единицах, что не требует пересчета при проведении складских документов.