Настройка работы с маркировкой Честный Знак на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка работы с маркировкой Честный Знак на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка работы с маркировкой Честный Знак на 1С-Битрикс

Обязательная маркировка товаров в системе «Честный Знак» затрагивает интернет-магазины на Битриксе, торгующие лекарствами, табаком, обувью, одеждой, молочной продукцией и рядом других категорий. Техническая сторона задачи: получать коды маркировки от поставщиков, хранить их в системе и передавать в ГИС МТ (ИС «Честный Знак») при продаже.

Интеграция через модуль 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 минута обрабатывает очередь и отправляет запросы в ГИС МТ.