Как протестировать маркировку «Честный знак» в 1С без доступа к реальной базе и УКЭП клиента?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

Разработчики 1С часто сталкиваются с ситуацией, когда клиент ставит задачу по автоматизации маркировки «Честный знак» (ГИС МТ), но при этом «партизанит»: не предоставляет доступ к своей рабочей базе, не дает тестовую копию с настроенным подключением и категорически отказывается делиться усиленной квалифицированной электронной подписью (УКЭП). Работа в таких условиях «вслепую» превращается в угадывание алгоритмов, что неизбежно ведет к ошибкам на этапе внедрения.

В этой статье мы подробно разберем, как развернуть полноценное окружение для тестирования маркировки на своей локальной демобазе 1С:Управление торговлей 11.5 (или любой другой конфигурации с поддержкой ИС МП), зарегистрировать вымышленную организацию в тестовом контуре ГИС МТ, бесплатно получить коды маркировки и правильно наполнить базу тестовыми данными.

Шаг 1. Регистрируем «вымышленную» организацию в Песочнице ГИС МТ

Существует распространенное заблуждение, что для работы в тестовом контуре «Честного знака» (так называемой Песочнице) обязательно нужна реально существующая организация и настоящая УКЭП. Это не так. Песочница ГИС МТ создана специально для разработчиков и не связана с базами ФНС или ЕГРЮЛ.

Для создания тестового личного кабинета выполним следующие действия:

  1. Генерируем валидный ИНН. Тестовая система не проверяет существование компании в реестрах, но проверяет математическую корректность контрольной суммы ИНН. Используем любой онлайн-генератор ИНН для создания случайного 10-значного (для ООО) или 12-значного (для ИП) номера.
  2. Выпускаем тестовую УКЭП. Переходим на специализированные ресурсы, например, тестовый Удостоверяющий центр КриптоПро или сервис Truemark. Буквально за пару кликов бесплатно генерируем тестовый сертификат электронной подписи на наши вымышленные данные (например, ООО «Рога и Копыта» в лице директора Ивана Иванова) с полученным ранее ИНН.
  3. Регистрируемся в Песочнице. Переходим на сайт тестового контура ГИС МТ (адрес веб-интерфейса: markirovka.sandbox.crptech.ru). Подключаем тестовую УКЭП через плагин КриптоПро и проходим стандартную процедуру регистрации нового участника.

После прохождения этих шагов мы получаем полноценный доступ к личному кабинету участника оборота в тестовом контуре, где можно эмулировать любые действия с маркируемым товаром.

Шаг 2. Заказ кодов маркировки в СУЗ: полностью бесплатно

В рабочем (продуктивном) контуре за каждый заказанный код маркировки списывается плата (около 50–60 копеек в зависимости от товарной группы). В тестовом контуре Станция управления заказами (СУЗ) функционирует в демонстрационном режиме.

Мы можем заказывать тысячи кодов для любых видов продукции абсолютно бесплатно. Это позволяет отработать всю цепочку: от отправки запроса на эмиссию из 1С до получения готовых кодов, их печати, агрегации в короба/паллеты и ввода в оборот.

Шаг 3. Почему идея «взять реальный код из магазина» для тестов ошибочна

В процессе обсуждения на форумах часто звучит совет: «Зачем заморачиваться, просто возьмите и отсканируйте код с любой пачки сигарет или обувной коробки в магазине и вставьте его в 1С». Проанализируем, почему этот подход не сработает при серьезной разработке:

  1. Отсутствие криптохвоста (кода проверки). DataMatrix, нанесенный на товар, содержит зашифрованную информацию. Большинство обычных сканеров штрихкодов в режиме эмуляции клавиатуры примитивно «выплевывают» только открытую часть (код идентификации), отрезая служебные символы и сам криптохвост.
  2. Проблема спецсимволов (GS1-128 / ASCII 29). Настоящий код маркировки стандарта GS1 DataMatrix содержит невидимый управляющий символ разделителя групп данных — GS (десятичный код ASCII 29). Если мы просто скопируем строку из Excel или текстового файла, этого спецсимвола там не будет. При попытке обработать такой код в 1С система выдаст ошибку разбора структуры штрихкода.
  3. Контроль статусов в ИС МП. При любой технологической операции (например, при формировании уведомления о вводе в оборот или отгрузке) 1С отправляет запрос в ГИС МТ. Если мы попытаемся подсунуть реальный код в тестовый контур, система вернет ошибку, так как этого кода нет в локальной базе Песочницы. И наоборот: попытка протестировать логику на реальном коде в рабочей базе приведет к ошибкам несоответствия статусов (код уже продан или принадлежит чужому владельцу).

Шаг 4. Программное наполнение регистра «Пул кодов маркировки СУЗ» в 1С

Если нам необходимо протестировать поведение логики проведения документов, печатных форм или обработки подбора маркированной продукции без прямого подключения к СУЗ, мы можем наполнить соответствующий регистр сведений вручную или с помощью простой обработки.

В современных конфигурациях 1С (УТ, КА, ERP) за хранение полученных кодов отвечает регистр сведений ПулКодовМаркировкиСУЗ. Нам важно правильно заполнить его измерения и ресурсы, особенно соблюдая структуру кодов.

Рассмотрим пример кода на встроенном языке 1С для программного добавления тестовых кодов в этот регистр:


Процедура ЗаполнитьТестовыйПулКодов(ДокументЗаказа, ВыбранныйНоменклатура, ТестовыйGTIN) Экспорт

    // Задаем тестовые параметры штрихкода
    СерийныйНомер = "AbC12de34Fgh5"; // 13 символов
    КлючПроверки = "1234";          // 4 символа
    Криптохвост = "qWeRtYuIoPlKjHgFdSaZxCvBnM1234567890abcde="; // 44 символа
    
    // Формируем правильный полный код маркировки со спецсимволами GS (ASCII 29)
    СимволGS = Символы.ПС; // В тестовых целях или при записи строки часто используют замену, 
                           // но для 1С ИС МП критично использовать Символ(29)
    СимволGS = Символ(29);
    
    СтрокаКодаИдентификации = "01" + ТестовыйGTIN + "21" + СерийныйНомер;
    ПолныйКодМаркировки = СтрокаКодаИдентификации + СимволGS + "91" + КлючПроверки + СимволGS + "92" + Криптохвост;
    
    // Создаем запись в регистре сведений
    МенеджерЗаписи = РегистрыСведений.ПулКодовМаркировкиСУЗ.СоздатьМенеджерЗаписи();
    
    МенеджерЗаписи.ЗаказНаЭмиссию = ДокументЗаказа;
    МенеджерЗаписи.КодМаркировки = СтрокаКодаИдентификации;
    МенеджерЗаписи.ПолныйКодМаркировки = ПолныйКодМаркировки;
    МенеджерЗаписи.Номенклатура = ВыбранныйНоменклатура;
    МенеджерЗаписи.GTIN = ТестовыйGTIN;
    МенеджерЗаписи.СерийныйНомер = СерийныйНомер;
    
    // Устанавливаем статус готовности к использованию
    МенеджерЗаписи.Состояние = Перечисления.СостоянияКодовМаркировкиСУЗ.ГотовКПечати;
    
    Попытка
        МенеджерЗаписи.Записать(Истина);
        Сообщить("Тестовый код успешно добавлен в пул СУЗ!");
    Исключение
        ВызватьИсключение "Ошибка при записи кода в пул: " + ОписаниеОшибки();
    КонецПопытки;

КонецПроцедуры

При записи полного кода маркировки обязательно разделяйте блоки идентификации данными Символ(29). Это позволит встроенным механизмам БСП (Библиотеки стандартных подсистем) корректно парсить штрихкод при сканировании в форме подбора и проверки.

Шаг 5. Полезные инструменты разработчика при работе вслепую

Чтобы окончательно закрыть потребность в оборудовании и доступах клиента, рекомендуем использовать два проверенных приема:

  1. Эмулятор 2D-сканера на смартфоне. Установите на мобильный телефон любое приложение-терминал, умеющее передавать отсканированные данные по Wi-Fi на ПК. Убедитесь, что в настройках приложения включена передача спецсимволов (Control Characters / GS-разделителей) в формате клавиатурных сочетаний или через виртуальный COM-порт. Это позволит тестировать реальное сканирование кодов прямо с экрана монитора.
  2. Mock-тестирование (заглушки HTTP-запросов). Если вам нужно протестировать логику проведения документов в 1С при отсутствии связи с ГИС МТ, найдите в конфигурации общий модуль, отвечающий за отправку запросов к API «Честного знака» (обычно это модули, связанные с ИнтеграцияИСМП или ИнтеграцияИСМПВызовСервера). В функции отправки запросов можно временно внедрить директиву компиляции #Если Сервер Тогда и принудительно возвращать структуру успешного ответа, имитируя, что сервер ЧЗ вернул статус «В обороте» или успешно принял документ. Это позволит отладить интерфейсную часть и проведение документов без реального сетевого взаимодействия.

Используя тестовый контур, генераторы подписей и программную эмуляцию кодов, мы можем выполнить до 95% задач по маркировке в 1С без какого-либо привлечения ресурсов клиента. Это гарантирует высокое качество кода и спокойное внедрение системы в промышленную эксплуатацию.

← На главную