Як уникнути проблем із маркуванням на 1С-Бітрікс
Інтернет-магазин одягу з 50 000 товарів. Кожне замовлення потребує перевірки коду маркування. Без автоматизації менеджери витрачають години, а кожен десятий код виявляється вже проданим — повернення, штрафи до $2.7k–3.9kів. З моменту впровадження обов'язкового маркування більшість товарних груп підпадає під систему Чесний знак. Без автоматизації ви ризикуєте не лише виручкою, а й репутацією. Наші інженери налаштовують маркування товарів на 1С-Бітрікс так, щоб коди резервувалися при додаванні в кошик, передавалися в касовий чек за 54-ФЗ та коректно вибували з обігу. Помилки в маркуванні — одна з головних причин штрафів при перевірках, а середній штраф досягає $2.7k–3.9kів. Автоматизація виключає людський фактор і гарантує відповідність законодавству. Працюємо під ключ з гарантією результату.
Які складнощі виникають при інтеграції з Чесним знаком?
Основні проблеми:
- Некоректне зберігання кодів. Якщо коди зберігаються у звичайній властивості інфоблоку, при великих обсягах (10 000+ кодів) вибірка сповільнюється, а транзакційна цілісність не гарантується. Це веде до дублів і продажу вже вибулих кодів.
- Помилки при передачі в чек. Код маркування має передаватися в тегу 1163 (DataMatrix). Не всі касові модулі вміють це з коробки — потрібне доопрацювання.
- Відсутність резервування. Без механізму резервування один код може бути проданий двічі, що загрожує відмовою у фіскалізації та штрафом.
- Некоректне вибуття. Після продажу код має вибути з обігу в ГІС МТ. Якщо цього не зробити — розбіжність даних та блокування залишків.
Як зберігати коди маркування в Бітрікс?
Ми використовуємо два підходи — вибір залежить від обсягів. Порівняємо їх:
| Критерій | Властивість інфоблоку | Окрема таблиця |
|---|---|---|
| Швидкість вибірки | Повільніше при >10 000 кодів | Швидко з індексами |
| Складність реалізації | Просто (додати властивість) | Потребує створення таблиці та обробників |
| Займане місце | У таблиці властивостей інфоблоку | Окрема таблиця |
| Підтримка транзакцій | Ні | Так (InnoDB) |
| Підходить для | До 10 000 кодів | Будь-які обсяги |
Для більшості проєктів з обігом від 20 000 кодів на рік ми рекомендуємо окрему таблицю. Вона працює в 10 разів швидше при великих обсягах. Ось як її створити:
CREATE TABLE b_marking_codes ( ID INT AUTO_INCREMENT PRIMARY KEY, PRODUCT_ID INT NOT NULL, CODE VARCHAR(255) NOT NULL UNIQUE, STATUS ENUM('available', 'reserved', 'sold', 'returned') DEFAULT 'available', ORDER_ID INT NULL, DATE_SOLD DATETIME NULL, INDEX idx_product_status (PRODUCT_ID, STATUS), INDEX idx_code (CODE) ); Приклад резервування коду при додаванні в кошик
Резервування виконується на події `OnSaleBasketBeforeSaved`. Використовуємо блокування `SELECT ... FOR UPDATE`, щоб уникнути race condition. Після успішного блокування статус змінюється на 'reserved', і код зв'язується з ID замовлення. Якщо код вже зарезервовано, підбирається наступний вільний.Як передати код маркування в касовий чек за 54-ФЗ?
Згідно з 54-ФЗ, код маркування має передаватися в касовий чек. Ми доопрацьовуємо обробник касового модуля таким чином, щоб код підтягувався з властивостей позиції кошика. Приклад для АТОЛ Онлайн:
AddEventHandler('sale', 'OnCashboxBuildCheck', function($checkData) { foreach ($checkData['ITEMS'] as &$item) { $basketItemId = $item['BASKET_ID'] ?? null; if ($basketItemId) { $res = \Bitrix\Sale\Internals\BasketPropertiesTable::getList([ 'filter' => ['BASKET_ID' => $basketItemId, 'CODE' => 'MARKING_CODE'], 'select' => ['VALUE'] ]); if ($prop = $res->fetch()) { $item['MARKING_CODE'] = $prop['VALUE']; } } } return $checkData; }); Аналогічно обробляється резервування коду при додаванні в кошик (подія OnSaleBasketBeforeSaved) та списання після оплати (OnSalePaymentEntitySaved).
Як ми вирішуємо ці завдання: розбір кейсу з нашої практики
Нещодавно налаштували маркування для клієнта — інтернет-магазину одягу з 50 000 товарів і 300 000 кодів на рік. Спершу коди зберігалися у властивості інфоблоку — вибірка займала до 2 секунд, часто виникали конфлікти резервування. Ми перенесли дані в окрему таблицю, додали механізм блокувань SELECT ... FOR UPDATE і переробили обробники кошика. Результат: швидкість обробки замовлення скоротилася на 40%, а помилки продажу без коду зникли повністю. Економія клієнта від виключення штрафів і повернень склала понад $4.5k–6.5kів на рік.
Процес роботи
- Аналітика — вивчаємо структуру каталогу, навантаження, поточну касу та обмін з 1С.
- Проєктування — обираємо архітектуру зберігання, проєктуємо резервування та вибуття.
- Реалізація — пишемо код зберігання, обробники кошика та каси, імпорт кодів.
- Тестування — перевіряємо всі сценарії: резервування, скасування, повернення, багатопотокові продажі.
- Деплой — накочуємо на бойовий сервер, налаштовуємо моніторинг.
- Навчання — передаємо документацію, навчаємо менеджерів та бухгалтерію.
Терміни та що входить в роботу
Орієнтовні терміни: базове налаштування (до 10 000 кодів) — 5-7 робочих днів, комплексне (від 100 000 кодів) — до 3 тижнів.
| Етап | Тривалість |
|---|---|
| Реалізація зберігання кодів (властивість або таблиця) | 1-2 дні |
| Обробники резервування та списання | 2-3 дні |
| Доопрацювання касового модуля для передачі коду в чек | 1-2 дні |
| Налаштування імпорту кодів з файлів постачальника | 1 день |
| Інтеграція з 1С (за потреби) | 2-5 днів |
| Документація та навчання співробітників | 1 день |
| Гарантійна підтримка 3 місяці | включено |
Наші інженери мають сертифікати 1С-Бітрікс і 10+ років досвіду в розробці. На рахунку понад 50 проєктів з інтеграції маркування. Зв'яжіться з нами — оцінимо ваш проєкт безкоштовно. Для консультації та аудиту вашого каталогу залиште заявку — ми проаналізуємо структуру та запропонуємо оптимальне рішення.
Типові помилки при налаштуванні маркування
- Зберігання кодів у загальних властивостях без індексів — призводить до гальмувань при зростанні каталогу.
- Відсутність резервування до оплати — ризик продажу одного коду двічі.
- Неправильне заповнення тегу 1163 — каса відмовляється фіскалізувати чек.
- Ігнорування повернень — якщо код не повертається в обіг, залишок розходиться з ГІС МТ.
Ми гарантуємо, що після нашого налаштування всі ці проблеми будуть усунені. Отримайте безкоштовну консультацію інженера.







