Налаштування вивантаження серій і партій товарів із 1С в 1С-Бітрікс
Серійний та партіонний облік у 1С — це окремий пласт функціональності, який у стандартний CommerceML практично не включений. Тим не менш ряд галузей без цього не працює: електроніка (серійні номери), медтехніка, продукти харчування (партії з терміном придатності), фармацевтика. Дані про серії потрібні на сайті — хоча б у скороченому вигляді.
Що таке серії та партії в 1С
Серія — унікальний ідентифікатор конкретного екземпляра товару (серійний номер). Один телевізор = одна серія. Облік у регістрі ТовариНаСкладах ведеться в розрізі серій.
Партія — група товарів одного приходу із загальними характеристиками (дата виготовлення, термін придатності, номер партії виробника). Один ящик молока певної дати = одна партія. На складі може бути 10 ящиків двох різних партій.
У 1С:УТ 11 серійний облік вмикається в налаштуваннях номенклатури: Використовувати серії. Партіонний облік — окреме налаштування. Обидва механізми збільшують деталізацію складських даних і ускладнюють обмін із сайтом.
Що реально потрібно на сайті
Не завжди потрібно передавати всі серії та партії. Типові сценарії:
Сценарій 1: Перевірка серійного номера. Покупець вводить серійний номер на сайті та дізнається інформацію про товар (гарантія, дата виробництва). Для цього не потрібне вивантаження серій у каталог — потрібен API-запит до 1С за конкретним серійним номером.
Сценарій 2: Термін придатності в картці товару. Для продуктів харчування або медтоварів — показувати на сайті найближчий термін придатності наявної партії. Це вже вивантаження даних партії як атрибута товару.
Сценарій 3: Вибір партії покупцем. Рідкісний випадок: покупець бачить доступні партії (наприклад, різні дати розливу вина) і вибирає потрібну. Це складна реалізація — кожна партія = окремий SKU.
Технічна реалізація: термін придатності як атрибут
Найбільш затребуваний випадок — передача найближчого терміну придатності з 1С на сайт.
У 1С (на стороні УТ/КА) створюємо регламентне завдання:
- Для кожної позиції номенклатури з партіонним обліком — визначаємо найближчу дату закінчення терміну придатності з наявних залишків
- Записуємо цю дату в
ДодатковийРеквізитноменклатури «ТермінПридатності» - При наступному обміні цей реквізит потрапить у XML і оновить властивість у 1С-Бітрікс
Альтернатива: прямий HTTP-запит із 1С-Бітрікс до сервісу 1С при завантаженні картки товару. Але це створює залежність швидкості сторінки від швидкості 1С.
Серійні номери при замовленні
Якщо покупець замовляє товар із серійним обліком — при відвантаженні з 1С до замовлення прив'язується конкретний серійний номер. Цей номер корисно передати назад у 1С-Бітрікс: в особистому кабінеті покупець бачить серійні номери куплених товарів — це зручно для гарантійного обслуговування.
Зворотна передача серійних номерів: у CommerceML замовлення при оновленні статусу може містити розширені дані. Додаємо в обробку оновлення статусу в 1С-Бітрікс логіку збереження серійних номерів із ДодатковихРеквізитів документа.
// Обробник оновлення замовлення з 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С резервує конкретну партію — помилок за терміном придатності немає.







