ЭДО в 1С: интеграция с системой товарной прослеживаемости

Товарная прослеживаемость в Беларуси — уже не будущее, а рабочая реальность. С каждым кварталом перечень товаров расширяется, а штрафы за нарушения растут. Мы интегрировали 1С с порталом СТТ для ресторанного холдинга с 15 точками и 8 складами. Рассказываем, что пошло не по плану и как это решили.

Что такое СТТ и зачем 1С нужна интеграция

Система товарной прослеживаемости (СТТ) — государственный портал, через который участники рынка обмениваются электронными товарно-транспортными накладными. Формат обмена — XML-документы DESADV (отгрузка) и RECADV (подтверждение приёмки).

Каждый документ подписывается электронной подписью. Без неё портал его не примет. И вот тут начинается интересное: 1С из коробки не умеет подписывать документы для СТТ. Нужна интеграция с криптопровайдером.

У заказчика ситуация типичная: 15 точек, 8 складов, 4 юридических лица. Каждый день — десятки накладных. Вручную загружать XML на портал и подписывать — это потерянный рабочий день кладовщика. Задача — автоматизировать полностью: от формирования документа в 1С до подписания и отправки на портал.

Архитектура интеграции 1С с порталом СТТ через CryptoProxy

Архитектура решения: 1С, CryptoProxy, портал

Прямое взаимодействие 1С с порталом СТТ технически возможно, но на практике упирается в криптографию. Платформа 1С не поддерживает алгоритмы подписи, которые требует белорусский портал. Нужен посредник.

Мы выбрали SC-CryptoProxy — REST-сервис, который запускается как служба Windows и принимает HTTP-запросы на порту 9998. Эндпоинт один: /SCCrypto/ra/signa. Отправляешь XML — получаешь подписанный XML. Всё.

Итоговая архитектура трёхзвенная:

  • — формирует XML-документы DESADV/RECADV, хранит настройки, отслеживает статусы
  • CryptoProxy — подписывает документы электронной подписью через REST API
  • Портал СТТ — принимает подписанные документы, возвращает статусы обработки

Важный момент: CryptoProxy работает локально, на том же сервере, где 1С. Никаких облачных криптосервисов — данные не покидают периметр компании.

Настройки: кто, откуда и с каким ключом

Главная сложность — не криптография, а маппинг. У каждого пользователя на портале СТТ свой UserID. У каждого склада — свой код. У каждой организации — свои реквизиты подписи. И всё это нужно связать в 1С.

Мы создали регистр сведений НастройкиЭДО для глобальных параметров: адрес CryptoProxy, таймаут, сертификат по умолчанию. А в справочник Пользователи добавили табличную часть ЭДОНастройки с полями:

  • UserID — идентификатор пользователя на портале СТТ
  • Организация — ссылка на справочник организаций
  • Склад — ссылка на справочник складов
  • Сертификат — какой ключ использовать для подписи
Схема маппинга пользователей и складов для СТТ

Для управления доступом добавили реквизит ДоступКСТТ. Не каждый пользователь 1С должен работать с порталом. Кладовщик на складе — да. Бухгалтер в центральном офисе — нет. Разграничение простое, но без него кнопки отправки в СТТ мешают тем, кому они не нужны.

Отдельная история — массовое заполнение. Когда у тебя 40 пользователей и 8 складов, заполнять настройки по одному — мучение. Мы добавили кнопку «Заполнить по шаблону»: выбираешь организацию, склад, шаблон UserID — и настройки копируются всем пользователям с нужной ролью. Десять минут вместо двух часов.

Формирование документов: DESADV и RECADV

DESADV — электронная накладная на отгрузку. Формируется на основании документа реализации в 1С. В XML уходят: номенклатура, количество, цены, коды ТНВЭД, данные отправителя и получателя, и главное — UserID того, кто отправляет.

Первый подводный камень ждал именно здесь. UserID в XML должен соответствовать пользователю на портале СТТ. А у заказчика часть товаров проходит через транзитный склад: физически принимает один человек, а в 1С документ проводит другой. Пришлось добавить логику: если склад-получатель транзитный, UserID берётся не от текущего пользователя, а из настроек склада.

RECADV — подтверждение приёмки. Формируется в ответ на входящий DESADV. Тут проще: принял товар — 1С автоматически генерирует RECADV с привязкой к исходному документу по номеру и дате.

Оба типа документов хранятся в справочнике ЭДОДокумент с реквизитами: тип (DESADV/RECADV), статус, дата отправки, дата подписания, XML-содержимое, ссылка на документ-основание. Отдельный справочник ЭДОПозицияСПТ хранит связку номенклатуры с кодами прослеживаемости — при формировании DESADV коды подставляются автоматически, списание идёт по FIFO.

Подписание и отправка: два подводных камня

Процесс подписания сводится к одному HTTP-запросу:

POST http://localhost:9998/SCCrypto/ra/signa
Content-Type: application/xml

<XML-документ DESADV>

В ответ — подписанный XML с вложенной электронной подписью. Его уже можно отправлять на портал СТТ.

Второй подводный камень: таймауты. CryptoProxy при первом запросе после перезагрузки сервера инициализирует криптопровайдер. Это занимает 5-15 секунд. Стандартный таймаут HTTP-запроса в 1С — 5 секунд. Первая отправка после рестарта всегда падала.

Решение: увеличили таймаут до 30 секунд и добавили «прогревающий» запрос при старте регламентного задания. Пустой ping на эндпоинт статуса — CryptoProxy инициализируется, и дальше всё работает штатно.

Третий камень — асинхронная валидация на стороне портала. Документ может получить статус «Доставлен», а через час измениться на «Отклонён». Причина — портал валидирует XML не при приёме, а в очереди. Мы добавили повторную проверку статусов для документов со статусом «Доставлен» старше двух часов.

Жизненный цикл документа ЭДО: от формирования до подтверждения

Отслеживание статусов и уведомления

Каждый документ ЭДО проходит через цепочку статусов: Черновик — Подписан — Отправлен — Доставлен — Принят (или Отклонён). В форме списка — цветовое кодирование: серый, жёлтый, синий, зелёный, красный. Кладовщик открывает список и сразу видит, какие документы требуют внимания.

Регламентное задание раз в 10 минут опрашивает портал на предмет обновления статусов. Если документ отклонён — пользователю приходит уведомление в центр оповещений 1С с причиной отклонения. Не нужно мониторить вручную — система сама сообщит о проблеме.

Для руководителя — отчёт по СКД: количество документов по статусам, среднее время обработки, процент отклонений за период. Раз в месяц приходит сводка — можно оценить, насколько стабильно работает обмен.

Результат и цифры

После внедрения интеграции:

  • Формирование и отправка накладной — 15-20 секунд вместо 10-15 минут вручную
  • Ошибки при заполнении реквизитов — 0 случаев (раньше 3-5 отклонений в неделю из-за опечаток в UserID и кодах ТНВЭД)
  • Время кладовщика на работу с порталом — сократилось с 2 часов в день до 15 минут на проверку статусов
  • За 6 месяцев работы — более 4 000 документов ЭДО без единого сбоя на стороне интеграции

Три раза за это время портал СТТ менял формат XML. Каждый раз обновляли шаблоны за 1-2 дня — заказчик простоя не почувствовал.

Если ваша компания работает с прослеживаемыми товарами и до сих пор обменивается документами вручную — стоит задуматься об автоматизации. Это не вопрос удобства, а вопрос масштаба: когда документов больше десяти в день, ручной режим создаёт риски ошибок и отнимает время, которое можно потратить на основную работу.