Настройка работы с маркировкой Честный Знак на 1С-Битрикс
Мы часто сталкиваемся с задачей интеграции интернет-магазинов на Битриксе с системой «Честный Знак». Обязательная маркировка товаров затрагивает многие категории: лекарства, табак, обувь, одежду, молочную продукцию. Техническая сторона — получать коды Data Matrix от поставщиков, хранить их и передавать в ГИС МТ при продаже. Ошибки на любом этапе грозят блокировкой оборота товаров. Оценим ваш проект за 1 день и предложим оптимальное решение.
Какие проблемы решает интеграция с Честным Знаком?
Первая и главная проблема — нестыковка форматов. Коды маркировки приходят от поставщиков в разных видах: XML, CSV, а иногда и вручную. Нужно унифицировать загрузку и проверку кодов через API markirovka.nalog.ru. Вторая — хранение миллионов уникальных кодов в Битриксе. Стандартные свойства инфоблоков не рассчитаны на такую нагрузку. Третья — своевременное уведомление ГИС МТ о выводе товара из оборота. Задержка или ошибка при отправке — и товар числится в обороте, что грозит штрафом.
Интеграция через модуль 1С + Битрикс
Стандартный путь для большинства интернет-магазинов: учёт маркированных товаров ведётся в 1С, Битрикс выступает витриной. Синхронизация через штатный модуль обмена bitrix:catalog.import.1c (CommerceML).
При таком подходе коды маркировки (Data Matrix) хранятся в 1С, передаются в Битрикс вместе с остатками через XML-выгрузку. В XML CommerceML поля для кодов маркировки не стандартизированы — их передают как дополнительные реквизиты товара:
<ЗначениеРеквизита> <Наименование>КодМаркировки</Наименование> <Значение>010460406000600021N4N57RSCBUZTJZ</Значение> </ЗначениеРеквизита> В Битриксе настраиваете свойство каталога MARKING_CODE и маппинг реквизита в настройках обмена.
Прямая интеграция с API Честного Знака
Для интернет-магазинов, работающих напрямую с ГИС МТ без 1С, нужна прямая интеграция через API markirovka.nalog.ru. API использует OAuth2 авторизацию с УКЭП (квалифицированная электронная подпись).
Основные методы API, которые затрагивает e-commerce:
-
POST /api/v3/facade/identifyDocument— проверка кода маркировки -
POST /api/v3/facade/send— уведомление о выводе товара из оборота при продаже
В Битриксе реализуете сервисный класс для работы с API:
namespace Local\MarkingCode; class ChestnyZnakClient { private string $apiUrl = 'https://markirovka.nalog.ru/api/v3'; private \Bitrix\Main\Web\HttpClient $http; public function verifyCode(string $code): array { $this->http->setHeader('Authorization', 'Bearer ' . $this->getToken()); $response = $this->http->post($this->apiUrl . '/facade/identifyDocument', ['code' => $code]); return json_decode($response, true); } } Токен получаете через УКЭП — это требует криптографической библиотеки (КриптоПро CSP) на сервере.
Как хранить коды маркировки в Битриксе?
Каждый экземпляр товара имеет уникальный код маркировки. Хранение в свойстве элемента каталога (b_iblock_element_prop_m*) не подходит — у одного товара сотни экземпляров с разными кодами.
Создаёте отдельную таблицу через ORM D7:
class MarkingCodeTable extends \Bitrix\Main\Entity\DataManager { public static function getTableName() { return 'b_local_marking_code'; } public static function getMap() { return [ new \Bitrix\Main\Entity\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new \Bitrix\Main\Entity\IntegerField('PRODUCT_ID'), new \Bitrix\Main\Entity\StringField('CODE', ['size' => 200]), new \Bitrix\Main\Entity\StringField('STATUS'), // 'active', 'sold', 'returned' new \Bitrix\Main\Entity\DatetimeField('CREATED_AT'), ]; } } При продаже товара (событие OnSaleOrderPaid) меняете статус кода с active на sold и отправляете уведомление в ГИС МТ.
Что делать при продаже товара?
При успешной оплате заказа нужно уведомить систему маркировки о выводе товара из оборота. Это асинхронная операция — не блокируйте процесс оформления заказа ожиданием ответа от API.
Реализуйте через агент или очередь: при OnSaleOrderPaid записываете задачу в собственную таблицу b_local_marking_queue, агент с интервалом 1 минута обрабатывает очередь и отправляет запросы в ГИС МТ.
Сравнение подходов: через 1С vs прямой API
| Критерий | Через 1С (CommerceML) | Прямой API |
|---|---|---|
| Скорость обновления | Зависит от регламента 1С (обычно раз в час) | Реальное время |
| Сложность настройки | Средняя (настройка маппинга) | Высокая (разработка клиента) |
| Зависимость от 1С | Полная | Нет |
| Надёжность | При сбое 1С данные не синхронизируются | Высокая, но нужен handling ошибок |
| Поддержка УКЭП | Не требуется (1С хранит коды) | Обязательно |
Прямая интеграция через API быстрее обмена с 1С в 5–10 раз, но требует больше разработки. Мы рекомендуем её, если у вас >10 000 товаров и минимальная задержка критична.
Что входит в настройку?
- Аудит текущей схемы учёта товаров и обмена с поставщиками
- Проектирование структуры хранения кодов (ORM-таблица)
- Реализация интеграции с API Честного Знака (или настройка обмена с 1С)
- Настройка обработчиков событий (OnSaleOrderPaid)
- Тестирование на тестовом контуре ГИС МТ
- Документация по поддержке и список контактов
- Обучение менеджеров работе с маркировкой
Мы работаем с Битриксом более 7 лет и выполнили 30+ интеграций с Честным Знаком. Свяжитесь с нами — получите консультацию по настройке маркировки для вашего магазина.
Официальная документация API Честного Знака: markirovka.nalog.ru
Чек-лист для самопроверки
- [ ] Коды маркировки загружаются в отдельную таблицу
- [ ] Настроен маппинг реквизитов из 1С (если используется)
- [ ] Реализован сервисный класс для API
- [ ] Настроены обработчики событий оплаты
- [ ] Агент для асинхронной отправки работает
- [ ] Проведено тестирование на тестовом контуре
Получите консультацию — оценим ваш проект и предложим оптимальное решение.







