Skip to content

About

Эмулятор Честного Знака (ГИС МТ True API, СУЗ, Национальный каталог) для разработки и тестов 1С: подключение штатными механизмами через прокси, веб-интерфейс, расширение без ЭП для тестового контура

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

chz-emulator — эмулятор Честного Знака для 1С

Локальный эмулятор ГИС МТ (True API) и СУЗ. 1С подключается штатными механизмами, без правок конфигурации: в базе включаются тестовый контур ИС МП и прокси-сервер 127.0.0.1:3128. Эмулятор принимает HTTPS-соединения к *.crpt.ru / *.crptech.ru своим сертификатом и отвечает как ЧЗ. Остальные хосты пропускает насквозь.

Нужен только Python 3.10+ и openssl (идёт с Git for Windows), сторонних пакетов нет.

Запуск

start.bat                      # или: python chz_emulator.py --port 3128 [--bind 0.0.0.0]

Веб-интерфейс: http://127.0.0.1:3128/. Вкладки:

  • Журнал: каждый запрос 1С с телом запроса и ответа. Если метод не реализован, здесь будет 404 с его адресом.
  • Коды / Документы / СУЗ: состояние эмулятора; статус кода можно сменить вручную.
  • Автосценарий: полный цикл через прокси и TLS (авторизация → участник → СУЗ: соединение, заказ, коды, отчёт о нанесении → ввод в оборот → агрегация → отгрузка → приёмка → вывод → разрешительный режим).
  • Действия: сгенерировать коды в нужном статусе (можно сразу в короб), создать входящую отгрузку от поставщика (для проверки приёмки в 1С), завести участника, очистить данные.
  • Настройки: ИНН по умолчанию, строгая проверка статусов и владельца, unknown_codes (404 как ЧЗ / auto: неизвестный код считается в обороте), задержки обработки, «отклонять все документы», «отказывать в авторизации».

Данные лежат в %LOCALAPPDATA%\chz-emulator\data (SQLite, журнал logs\requests.log, сертификаты certs) и не зависят от папки exe: после замены exe или запуска из другой папки коды, журнал и корневой сертификат сохраняются. При первом запуске новой версии папка data рядом с exe копируется туда. Свой каталог — --data или переменная CHZ_EMULATOR_DATA.

Настройка 1С (один раз на базу)

  1. Доверить корневой сертификат эмулятора (создаётся при первом запуске) на машине, где работает 1С (для клиент-серверной базы — на сервере 1С, под пользователем службы): certutil -user -addstore Root "%LOCALAPPDATA%\chz-emulator\data\certs\ca.crt" (или через certmgr.msc в «Доверенные корневые»).
  2. Прокси-сервер: Администрирование → Общие настройки → Настройка прокси-сервера → «Использовать прокси-сервер»: адрес 127.0.0.1, порт 3128. В файловой базе настройка хранится у пользователя.
  3. Тестовый контур ИС МП: константа «Режим работы с тестовым контуром ИС МП» (в настройках интеграции ИС МП). Тогда 1С ходит на markirovka.sandbox.crptech.ru / sandbox.crptech.ru, и СУЗ работает без 1С:БИП. Перехватываются и боевые адреса *.crpt.ru.
  4. СУЗ: адрес suz.sandbox.crptech.ru, порт 443, защищённое соединение, любой omsId.
  5. Подпись: эмулятор подпись не проверяет. ИНН участника берётся из поля inn запроса или из подписанных данных. Без КриптоПро/КЭП 1С не подпишет документ в интерактивном обмене: для этого нужна реальная (можно тестовую) ЭП на рабочем месте.

Что эмулируется

ГИС МТ: auth/key, auth/simpleSignIn (+ токен СУЗ simpleSignIn/{omsConnection}), auth/permissive-access, participants, cises/info (коды в любом виде: со скобками, с GS и криптохвостом), cises/search, cises/aggregated/list, cises/gz|eaes/info, lk|sim/documents/create, documents/aggregation|dropped-out/create (multipart с XML), doc/{id}/info, doc/list, product/info, product/gtin, warehouse/balance, mods/*, doc/validator/*, cdn/info, cdn/health/check, codes/check.

Документы меняют статусы кодов: ввод в оборот (все LP_INTRODUCE_*, импорт, возврат), вывод (LK_RECEIPT, отмена), списание КМ, отгрузка → приёмка (смена владельца, у получателя входящий документ WAIT_ACCEPTANCE), отмена отгрузки, агрегация/расформирование/трансформация, АТК. При строгом режиме проверяются статус и владелец, ошибки возвращаются как CHECKED_NOT_OK с текстом. Прочие типы документов принимаются как CHECKED_OK.

СУЗ V3 и V2 (/api/v2/{pg}/...): соединение, токен, ping, заказ, статус буфера, список заказов, коды, повторное получение блока, блоки, закрытие, отчёты нанесения/выбытия/агрегации, статус отчёта, квитанции, провайдеры, МОД, продукция. Коды генерируются по шаблонам СУЗ из классификатора КА (SUZ_TEMPLATES): формат выбирается по templateId заказа, без него — шаблон группы по умолчанию ( обувь — 13 + 91(4) + 92(88), молоко — 6 + 93(4), косметика и бытовая химия — 6 + 91(4) + 92(44), шаблон 47 — 6 + 93(4), и т. д.). Настройка «укороченный КМ» включает укороченный шаблон для заказов без templateId.

Проверено на стенде КА 2.5.27.93 (KA99), 08.10.2026

Через типовые функции КА (stand/make_02_gismt.py, stand/make_03_suz.py, задания для ОА_Раннер), с подписью-заглушкой: авторизация и сохранение токена, статус участника, СтатусыКодовМаркировки, СоздатьДокументПоСообщению (ввод в оборот, вывод) и СтатусОбработкиДокументаПоИдентификатору, ДанныеПродукцииПоШтрихкодуEAN, НайтиДокументыПоОтбору; СУЗ: идентификатор соединения, токен, доступность, заказ, пул, коды (1С разбирает код обуви штатным разбором), отчёт о нанесении и его статус; розничный токен и CDN-площадки. Подготовка стенда: stand/01_setup.json. После теста стенд откатан из бэкапа.

Пошаговая инструкция подключения — ИНСТРУКЦИЯ.md, для конфигураций не КА — ИНСТРУКЦИЯ_НЕ_КА.md. Самопроверка без 1С: python test_emulator.py.

About

Эмулятор Честного Знака (ГИС МТ True API, СУЗ, Национальный каталог) для разработки и тестов 1С: подключение штатными механизмами через прокси, веб-интерфейс, расширение без ЭП для тестового контура

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages