Как подключить работу с системой «Честный ЗНАК» в старую измененную конфигурацию 1С?

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

Интеграция современных государственных систем маркировки (ГИС МТ «Честный ЗНАК») в старые, «нетиповые» конфигурации — одна из самых болезненных задач для программистов и владельцев бизнеса. Часто мы сталкиваемся с ситуацией, описанной в обсуждении: есть база на платформе 1С 8.2 или 8.3 (обычные формы), например, «Управление торговлей 10.3», которая годами дорабатывалась под нужды компании. Обновление такой системы до актуального релиза невозможно или экономически нецелесообразно из-за огромного объема изменений.

В этом материале мы подробно разберем стратегии решения этой задачи, объединив опыт участников профессионального сообщества и технические требования оператора ЦРПТ.

Постановка проблемы

Задача заключается в реализации обмена данными с системой «Честный ЗНАК» (ЧЗ) для отправки информации о вводе в оборот, перемещении и выбытии маркированной продукции. Основные сложности при работе с устаревшими конфигурациями (УТ 10.3, УПП 1.3, КА 1.1):

  1. Отсутствие поддержки современных протоколов: Старые версии платформы могут некорректно работать с шифрованием TLS 1.2/1.3, которое требуют серверы ЧЗ.
  2. Сложность разработки с нуля: API «Честного ЗНАКА» (True API) объемен, требует работы с JSON, криптографией и асинхронными очередями сообщений.
  3. Риск остановки бизнеса: Вмешательство в ядро стабильно работающей, но старой системы может привести к ошибкам в критических процессах.

Рассмотрим три основных пути решения, предложенных в ходе обсуждения.

Вариант 1. «Гибридная схема» (Разделение контуров)

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

Как это работает:

  1. Бэк-офис (Старая база): Вы оставляете свою текущую измененную конфигурацию (например, УТ 10.3) для управленческого учета, работы с заказами, клиентами и внутренней логистикой. В ней ничего кардинально не меняется.
  2. Фронт-офис/Шлюз (Новая база): Вы разворачиваете рядом современную типовую конфигурацию, которая штатно поддерживает маркировку. Это может быть 1С:Розница, 1С:Управление Торговлей 11 или специализированные решения.
  3. Настройка обмена: Между старой и новой базой настраивается синхронизация данных.

Алгоритм действий:

Преимущества: Вы не тратите сотни часов на попытки «подружить» старый движок с новым API. Обновления законодательства приходят в новую базу автоматически вместе с релизами от 1С.

Вариант 2. Использование внешних обработок и API (Самописное решение)

Если руководство категорически против второй базы, придется внедрять функционал в существующую конфигурацию. Здесь важно понимать, что просто «сформировать файл» недостаточно. Современный обмен строится на HTTP-запросах (REST API).

Где брать структуру данных?

В обсуждении справедливо замечено, что описание форматов обмена не является тайной. Если вы решили писать обмен самостоятельно, вам понадобятся:

  1. XSD-схемы: Для некоторых операций (особенно старых) используется XML. Схемы находятся в разделе «Помощь» в личном кабинете «Честного ЗНАКА».
  2. Документация True API: Основной обмен сейчас идет через JSON. Документация доступна на сайте ЦРПТ.

Техническая реализация на обычных формах

Для реализации HTTP-запросов на старых платформах часто приходится использовать COM-объекты Windows, так как встроенный метод HTTPСоединение в старых версиях платформы может не поддерживать нужные протоколы безопасности.

Пример того, как может выглядеть инициализация запроса через COM-объект:


Попытка
    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    WinHttp.Option(2) = 1251; // Кодировка
    WinHttp.Open("POST", "https://markirovka.crpt.ru/api/v3/true-api/...", 0);
    
    // Установка заголовков, включая токен авторизации
    WinHttp.SetRequestHeader("Content-Type", "application/json; charset=UTF-8");
    WinHttp.SetRequestHeader("Authorization", "Bearer " + ВашТокен);
    
    WinHttp.Send(ТелоЗапросаJSON);
    
    Если WinHttp.Status = 200 Тогда
        Ответ = WinHttp.ResponseText;
        // Парсинг ответа
    Иначе
        Сообщить("Ошибка соединения: " + WinHttp.StatusText);
    КонецЕсли;
Исключение
    Сообщить("Не удалось создать COM-объект: " + ОписаниеОшибки());
КонецПопытки;

Важно: Вам также потребуется внешняя компонента для работы с криптографией (подписание данных УКЭП) на стороне сервера 1С или клиента, так как отправлять данные нужно в подписанном виде.

Вариант 3. Использование готовых модулей интеграции

Чтобы не писать код с нуля (что, как отмечено, может занять "огромное время"), можно поискать готовые коммерческие решения.

Существуют разработчики, предлагающие подсистемы «Маркировка для обычных форм». Обычно это:

Этот вариант дешевле перехода на новую УТ 11, но дороже самостоятельного написания «на коленке».

Подводные камни: Разрешительный режим

В теме обсуждается в основном отправка информации (ввод в оборот, отгрузка). Однако, важно помнить про разрешительный режим на кассах, который становится обязательным для многих товарных групп.

Если ваша старая УТ 10.3 используется как кассовая программа (РМК), то задача усложняется многократно. Касса должна онлайн (в момент сканирования) стучаться в ЧЗ, получать разрешение на продажу и только потом печатать чек.

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

Резюме

Попытка «в лоб» дописать работу с «Честным ЗНАКом» в старую УТ 10.3 — это путь больших трудозатрат и постоянной поддержки изменений API. Оптимальные решения в порядке приоритета:

  1. Обмен с новой базой: Оставить старую базу для учета, поставить рядом типовую УТ 11 или Розницу для маркировки и ЭДО.
  2. Готовые модули: Купить готовое решение для интеграции маркировки в обычные формы.
  3. Собственная разработка: Использовать True API и COM-объекты только если функционал нужен минимальный (например, только выбытие или только агрегация) и есть ресурсы на постоянную доработку.
← На главную