Переход на электронный документооборот (ЭДО) в устаревших конфигурациях на базе 1С:Предприятие 7.7 часто вызывает сложности у разработчиков. Основной вопрос заключается в том, как интегрировать современные требования законодательства (УПД, маркировка, УКЭП) в систему, которая изначально не была для этого предназначена. В данной статье мы разберем наиболее надежный и проверенный способ интеграции 1С 7.7 со СБИС (Saby) через механизм СБИС Коннект, а также выясним, как автоматизировать подписание документов и работу с контрагентами.
Рассмотрим основной принцип работы. Вместо того чтобы пытаться внедрить сложные HTTP-запросы напрямую в код 1С 7.7 (что затруднительно из-за ограничений встроенного языка), мы будем использовать промежуточное ПО — СБИС Коннект. Эта утилита работает в режиме мониторинга файловой системы.
Проанализируем шаги обмена:
КриптоПро CSP, подписывает документ ключом и отправляет его на сервер оператора.Выясним, как заставить систему подписывать документы автоматически без участия пользователя. Для этого в файле-конверте необходимо передать секцию Этап. Разберем структуру конверта на примере кода, который должен генерировать скрипт в 1С 7.7:
// Пример структуры секции подписания в XML-конверте
<Этап Название="Отправка">
<СписокДействие>
<Действие Название="Отправить">
<СписокСертификат>
<Сертификат ИНН="7701234567" /> // Указываем ИНН отправителя
</СписокСертификат>
</Действие>
</СписокДействие>
</Этап>
Важно помнить: чтобы автоматическое подписание сработало, на компьютере, где запущен СБИС Коннект, должен быть установлен сертификат электронной подписи (через КриптоПро), соответствующий указанному ИНН. Если вы ведете учет по нескольким организациям, рекомендуется запустить несколько экземпляров СБИС Коннект (каждый под своим пользователем или с разными настройками), либо использовать один экземпляр в режиме мультиаккаунта, где сертификат ищется по отпечатку (Thumbprint) или ИНН.
Одной из главных проблем при внедрении ЭДО является приглашение клиентов к обмену. В отличие от других операторов, СБИС реализует автоматический обмен приглашениями. Рассмотрим, как это упрощает жизнь программисту:
Если вы знаете ИНН и КПП клиента, вам не нужно предварительно отправлять отдельный запрос на "дружбу" в 1С. При первой отправке юридически значимого документа (например, счета-фактуры) СБИС проверит, является ли получатель его клиентом. Если да — документ будет доставлен мгновенно. Если клиент работает через другого оператора, СБИС попытается инициировать роуминг.
Для проверки статуса контрагента перед отправкой можно использовать API СБИС. Хотя в 7.7 работа с JSON и REST затруднена, существуют современные способы реализации API запросов и готовые решения по технической выгрузке данных в JSON, которые позволяют реализовать простую проверку через внешние компоненты (например, v7plus.dll или MSXML2.XMLHTTP).
Для формирования самих файлов УПД (Приказ № 820) в 1С 7.7 лучше всего использовать объект DOMDocument. Это позволит избежать ошибок в кодировке и структуре XML-узлов. Подобные алгоритмы часто применяются в решениях для маркетплейсов, например, когда требуется выгрузка накладных в ЭДО для WildBerries или создание файлов для загрузки документов на порталы.
Посмотрим на пример инициализации объекта:
Процедура СформироватьXML()
xmlDoc = СоздатьОбъект("MSXML2.DOMDocument");
Root = xmlDoc.createElement("Файл");
Root.setAttribute("ИдФайл", "ON_NSCHFDOPPR_...");
xmlDoc.appendChild(Root);
// Добавление заголовка, реквизитов продавца и покупателя
// ...
xmlDoc.save("C:\SBIS_Exchange\Outbox\document.xml");
КонецПроцедуры
Важный нюанс: СБИС позволяет отправлять данные в упрощенных форматах (например, Excel), если вы используете их плагины для преобразования, но для надежной работы и соответствия требованиям ФНС рекомендуется формировать именно форматные XML-файлы прямо в 1С.
Разберем ситуацию, когда ваш клиент работает не в СБИС, а, например, в Диадоке. В этом случае автоматическая отправка может не сработать без предварительной настройки роуминга. Настройку роуминга рекомендуется выполнять один раз через личный кабинет СБИС, так как это требует подтверждения со стороны другого оператора. В 1С 7.7 достаточно фиксировать результат отправки: если СБИС Коннект вернул ошибку "Абонент не найден в сети ЭДО", значит, нужно инициировать процедуру роуминга вручную.
Если вы торгуете товарами, подлежащими обязательной маркировке (Честный Знак), обратите внимание на заполнение тегов НомСредИдентМарк. В 1С 7.7 вам придется доработать справочники или документы, чтобы хранить коды DataMatrix и корректно вставлять их в структуру XML УПД. Для стабильной работы в рознице и при отсутствии связи с серверами полезно использовать локальный модуль Честный знак для 1С 7.7, который обеспечивает выполнение требований разрешительного режима. СБИС Коннект при отправке автоматически проверит эти коды в ГИС МТ, что является дополнительным уровнем контроля.
Согласно законодательству, вы обязаны хранить документы ЭДО в течение 5 лет. Несмотря на то, что СБИС хранит их в облаке, хорошей практикой считается создание локального архива. СБИС Коннект позволяет скачивать не только сами документы, но и файлы подписей (.sig), а также квитанции о доставке. При обработке таких файлов может пригодиться внешняя компонента для преобразования в кодировку Base64, которая позволяет корректно работать с бинарными данными из встроенного языка.
Мы рекомендуем настроить в 1С 7.7 регламентное задание (или кнопку в интерфейсе), которое будет проверять папку Inbox (Входящие) и архивировать документы в привязке к объектам вашей базы данных.
Подводя итог, можно сказать: связка 1С 7.7 + СБИС Коннект — это наиболее жизнеспособное решение, которое позволяет закрыть все потребности современного ЭДО без необходимости переписывать ядро старой системы.