Налаштування роботи з маркуванням Чесний Знак на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування роботи з маркуванням Чесний Знак на 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування роботи з маркуванням Честний Знак на 1С-Bitrix

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

Інтеграція через модуль 1С + Bitrix

Стандартний шлях для більшості інтернет-магазинів: облік маркованих товарів ведеться в 1С, Bitrix виступає вітриною. Синхронізація через штатний модуль обміну bitrix:catalog.import.1c (CommerceML).

При такому підході коди маркування (Data Matrix) зберігаються в 1С, передаються в Bitrix разом із залишками через XML-виклад. У XML CommerceML поля для кодів маркування не стандартизовані — їх передають як додаткові реквізити товару:

<ЗначениеРеквизита>
    <Наименование>КодМаркировки</Наименование>
    <Значение>010460406000600021N4N57RSCBUZTJZ</Значение>
</ЗначениеРеквизита>

У Bitrix'і налаштовуєте властивість каталогу MARKING_CODE й маппінг реквізиту в параметрах обміну.

Пряма інтеграція з API Честного Знака

Для інтернет-магазинів, що працюють прямо з ГІС МТ без 1С, потрібна пряма інтеграція через API markirovka.nalog.ru. API використовує OAuth2 авторизацію з УКЕП (кваліфікована електронна підпис).

Основні методи API, які торкаються e-commerce:

  • POST /api/v3/facade/identifyDocument — перевірка коду маркування
  • POST /api/v3/facade/send — сповіщення про виведення товару з обороту при продажі

У Bitrix'і реалізовуєте сервісний клас для роботи з 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) на сервері.

Зберігання кодів маркування у Bitrix'і

Кожен екземпляр товару має унікальний код маркування. Зберігання у властивості елемента каталогу (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 хвилина обробляє чергу й відправляє запити у ГІС МТ.