Настройка выгрузки серий и партий товаров из 1С в 1С-Битрикс
Серийный и партионный учёт в 1С — это отдельный пласт функциональности, который в стандартный CommerceML практически не включён. Тем не менее ряд отраслей без этого не работает: электроника (серийные номера), медтехника, продукты питания (партии со сроком годности), фармацевтика. Данные о сериях нужны на сайте — хотя бы в урезанном виде.
Что такое серии и партии в 1С
Серия — уникальный идентификатор конкретного экземпляра товара (серийный номер). Один телевизор = одна серия. Учёт в регистре ТоварыНаСкладах ведётся в разрезе серий.
Партия — группа товаров одного прихода с общими характеристиками (дата изготовления, срок годности, номер партии производителя). Один ящик молока определённой даты = одна партия. На складе может быть 10 ящиков двух разных партий.
В 1С:УТ 11 серийный учёт включается в настройках номенклатуры: Использовать серии. Партионный учёт — отдельная настройка. Оба механизма увеличивают детализацию складских данных и усложняют обмен с сайтом.
Что реально нужно на сайте
Не всегда нужно передавать все серии и партии. Типичные сценарии:
Сценарий 1: Проверка серийного номера. Покупатель вводит серийный номер на сайте и узнаёт информацию о товаре (гарантия, дата производства). Для этого не нужна выгрузка серий в каталог — нужен API-запрос к 1С по конкретному серийному номеру.
Сценарий 2: Срок годности в карточке товара. Для продуктов питания или медтоваров — показывать на сайте ближайший срок годности имеющейся партии. Это уже выгрузка данных партии как атрибута товара.
Сценарий 3: Выбор партии покупателем. Редкий случай: покупатель видит доступные партии (например, разные даты розлива вина) и выбирает нужную. Это сложная реализация — каждая партия = отдельный SKU.
Техническая реализация: срок годности как атрибут
Наиболее востребованный случай — передача ближайшего срока годности из 1С на сайт.
В 1С (на стороне УТ/КА) создаём регламентное задание:
- Для каждой позиции номенклатуры с партионным учётом — определяем ближайшую дату окончания срока годности из имеющихся остатков
- Записываем эту дату в
ДополнительныйРеквизитноменклатуры «СрокГодности» - При следующем обмене этот реквизит попадёт в XML и обновит свойство в Битрикс
Альтернатива: прямой HTTP-запрос из Битрикс к сервису 1С при загрузке карточки товара. Но это создаёт зависимость скорости страницы от скорости 1С.
Серийные номера при заказе
Если покупатель заказывает товар с серийным учётом — при отгрузке из 1С к заказу привязывается конкретный серийный номер. Этот номер полезно передать обратно в Битрикс: в личном кабинете покупатель видит серийные номера купленных товаров — это удобно для гарантийного обслуживания.
Обратная передача серийных номеров: в CommerceML заказ при обновлении статуса может содержать расширенные данные. Добавляем в обработку обновления статуса в Битрикс логику сохранения серийных номеров из ДополнительныеРеквизиты документа.
// Обработчик обновления заказа из 1С
function onOrderStatusUpdate($arOrder, $arXML) {
foreach ($arXML['ITEMS'] as $item) {
if (!empty($item['SERIAL_NUMBERS'])) {
saveSerialNumbers(
$arOrder['ID'],
$item['PRODUCT_ID'],
$item['SERIAL_NUMBERS']
);
}
}
}
Партионный учёт и резервирование
При оформлении заказа на сайте и передаче в 1С — нужно зарезервировать конкретную партию (особенно при коротком сроке годности). Стандартный механизм резервирования в 1С резервирует партию автоматически по алгоритму FEFO (First Expired First Out — сначала та, что раньше истечёт).
На сайте покупатель не выбирает партию — это делает 1С. Сайт только передаёт количество. 1С резервирует подходящую партию и может вернуть информацию о ней (дата годности зарезервированной партии) в ответе на заказ.
Кейс: производитель продуктов питания
Производитель молочной продукции: прямые B2B-продажи с сайта ритейлерам. Каждый заказ — конкретные SKU с учётом партий (дата производства, срок годности). Ритейлер хочет видеть на сайте не просто «молоко 1л», а «молоко 1л, произведено 10.03, годно до 20.03».
Реализовали через HighloadBlock «Партии»: при каждом обмене (раз в 2 часа) из 1С передаётся список доступных партий по каждой позиции. В карточке товара — выпадающий список «Выберите дату производства». При добавлении в корзину — сохраняется ID партии. При передаче заказа в 1С — GUID партии указывается в реквизитах позиции заказа.
1С резервирует конкретную партию — ошибок по сроку годности нет.







