Как настроить и запустить ЭДО в 1С 7.7: подробное руководство по интеграции

Программист 1С v7.7 Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Проанализируем доступные варианты интеграции, их плюсы, минусы и особенности реализации. Мы подробно остановимся на четырех основных подходах: интеграции через внешнюю компоненту СБИС (Saby) SDK, использовании файлового обмена через СБИС-Коннект, ручной генерации XML по формату ФНС 820@ и связке с конфигурацией «1С:Клиент ЭДО 8».

---

Вариант 1. Использование внешней обработки СБИС (SDK, 1CPP, FormEx)

Один из самых функциональных способов — это интеграция через API оператора ЭДО прямо из интерфейса 1С 7.7. Рассмотрим, как устроен этот механизм на примере оператора СБИС (Тензор), который предоставляет готовую внешнюю обработку sbis.ert.

Эта обработка представляет собой масштабный программный комплекс объемом около 14 000–15 000 строк кода. Она работает на базе трех ключевых компонентов:

  1. Sbis3SDK.dll — внешняя компонента от разработчиков СБИС, реализующая шифрование, подпись документов и непосредственное взаимодействие с облачным сервером по протоколу API.
  2. 1CPP.dll — популярное расширение для 1С 7.7, позволяющее создавать сложные типы данных и работать с внешними объектами.
  3. FormEx.dll — библиотека для улучшения интерфейсных возможностей и перехвата событий формы в 1С 7.7.

Проблема отладки сложных структур данных в 1С 7.7:

Основная сложность при кастомизации или написании собственного решения на базе Sbis3SDK.dll заключается в том, что компонента обменивается данными через объект Структура (внутренний объект 1CPP, являющийся аналогом ассоциативного массива). В отличие от стандартной 1С 8.3, в отладчике 1С 7.7 невозможно напрямую посмотреть содержимое дерева такой структуры.

Для решения этой проблемы и упрощения отладки рекомендуется преобразовывать получаемые структуры в привычные списки значений (СписокЗначений) или таблицы значений (ТаблицаЗначений). Посмотрим на пример функции, которая транслирует свойства OLE-объекта Scripting.Dictionary (который часто выступает подложкой структуры) в стандартный список значений 1С 7.7:


Функция ПреобразоватьСтруктуруВСписок(ОбъектСтруктура) Экспорт
    СписокРезультат = СоздатьОбъект("СписокЗначений");
    
    Если ТипЗначенияСтр(ОбъектСтруктура) = "OLE" Тогда
        Попытка
            Ключи = ОбъектСтруктура.Keys();
            КоличествоКлючей = Ключи.Count();
            
            Для Ном = 0 По КоличествоКлючей - 1 Цикл
                ТекущийКлюч = Ключи.Item(Ном);
                ТекущееЗначение = ОбъектСтруктура.Item(ТекущийКлюч);
                
                // Если внутри структуры находится вложенная структура, обрабатываем ее рекурсивно
                Если ТипЗначенияСтр(ТекущееЗначение) = "OLE" Тогда
                    СписокРезультат.ДобавитьЗначение(ПреобразоватьСтруктуруВСписок(ТекущееЗначение), ТекущийКлюч);
                Иначе
                    СписокРезультат.ДобавитьЗначение(ТекущееЗначение, ТекущийКлюч);
                КонецЕсли;
            КонецЦикла;
        Исключение
            Сообщить("Не удалось разобрать структуру: " + ОписаниеОшибки(), "!");
        КонецПопытки;
    КонецЕсли;
    
    Возврат СписокРезультат;
КонецФункции

Преобразовав структуру в список значений, вы сможете легко проанализировать полученные от API ЭДО данные через стандартное табло отладчика или вывести их на форму для визуального контроля.

---

Вариант 2. Файловый обмен через утилиту «СБИС-Коннект»

Если вам не требуется сложная интерактивная работа с API прямо из 1С 7.7 (например, когда достаточно просто отправлять сформированные накладные и загружать входящие), оптимальным решением станет использование утилиты СБИС-Коннект.

Разберем по шагам схему работы этого механизма:

  1. На компьютере пользователя устанавливается и запускается в фоновом режиме служба/приложение «СБИС-Коннект». Она постоянно мониторит выделенный локальный или сетевой каталог на диске (например, C:\SBIS_Exchange\Out\).
  2. В 1С 7.7 пишется простая обработка выгрузки, которая формирует файл электронного документа в формате XML (согласно требованиям ФНС), а также служебный XML-файл (так называемый «файл-пакет» или «конверт»).
  3. 1С сохраняет эти файлы в отслеживаемую папку.
  4. «СБИС-Коннект» обнаруживает файлы, автоматически подписывает их установленной на компьютере электронной цифровой подписью (ЭЦП) с помощью КриптоПро CSP и отправляет на сервер оператора ЭДО.
  5. Для входящих документов процесс зеркален: утилита скачивает новые файлы из облака, распаковывает их, при необходимости сохраняет в папку C:\SBIS_Exchange\In\, откуда ваша обработка в 1С 7.7 загружает их по расписанию или по кнопке.

Этот вариант является самым стабильным, так как изолирует платформу 1С 7.7 от сложных криптографических операций и сетевых запросов, которые часто приводят к падению старой платформы «в аварийный режим» из-за нехватки памяти или конфликтов внешних компонент. Если же требуется выполнять подписание непосредственно в программе, пригодится решение для настройки электронной подписи CAdESCOM и CAPICOM в 1С 7.7.

---

Вариант 3. Ручное формирование XML (Формат ФНС 820@)

Для максимальной независимости от обновлений операторского софта и сторонних библиотек можно реализовать прямую генерацию XML-файлов по стандарту ФНС (актуальный формат регулируется приказом ФНС России № ММВ-7-15/820@). Сформированный файл можно затем вручную загружать через Личный кабинет любого оператора ЭДО на веб-сайте. Для автоматической отправки документов без дорогостоящего программного доступа к API настраивают сценарии на платформе One RPA.

Выясним, как сформировать структуру XML средствами платформы 1С 7.7. Для этого воспользуемся штатным объектом DOMDocument (через MSXML) или объектом XMLParser, если в системе зарегистрирована внешняя библиотека парсера.

Рассмотрим пример кода для формирования базового заголовка файла УПД:


// Создание XML-документа для выгрузки УПД по формату 820@
Попытка
    Анализатор = СоздатьОбъект("AddIn.XMLParser");
    ДокументXML = Анализатор.СоздатьДокумент();
Исключение
    // Альтернативный вариант через системный COM-объект Microsoft XML
    Попытка
        ДокументXML = СоздатьОбъект("MSXML2.DOMDocument.6.0");
    Исключение
        Предупреждение("На компьютере не установлен MSXML parser!");
        Возврат;
    КонецПопытки;
КонецПопытки;

// Формируем корневой элемент Файл
КорневойЭлемент = ДокументXML.createElement("Файл");
КорневойЭлемент.setAttribute("ИдФайл", "ON_NSCHFDOPPR_" + СокрЛП(ИдОтправителя) + "_" + СокрЛП(ИдПолучателя) + "_" + ТекущаяДатаXML + "_" + УникальныйКод);
КорневойЭлемент.setAttribute("ВерсФорм", "5.01");
КорневойЭлемент.setAttribute("ВерсПрог", "1C:7.7 v_custom");
ДокументXML.appendChild(КорневойЭлемент);

// Формируем блок СвДисп (Сведения о составителе файла)
СвДисп = ДокументXML.createElement("СвДиспОф");
СвДисп.setAttribute("АвтОП", "1С:Предприятие 7.7");
КорневойЭлемент.appendChild(СвДисп);

// Сохранение сформированного XML на диск
ДокументXML.save("C:\EDO_Upload\upd_document.xml");
Сообщить("Файл УПД успешно сформирован!");

Преимущества ручного формирования XML:

---

Вариант 4. Использование «1С:Клиент ЭДО 8» как шлюза

Если на предприятии принципиально не хотят отказываться от 1С 7.7, но желают иметь полнофункциональный, официально поддерживаемый «1С-ЭДО», фирма «1С» предлагает компромиссное решение — конфигурацию «1С:Клиент ЭДО 8» (актуальная редакция 2.3).

Схема совместной работы выглядит следующим образом:

  1. На рабочем месте (или сервере) разворачивается бесплатная пустая база «1С:Клиент ЭДО 8» на платформе 1С 8.3. Она выполняет роль транспортного узла.
  2. Для организации связи между вашей рабочей базой 1С 7.7 и «Клиентом ЭДО 8» настраивается обмен данными. Правила обмена создаются в конфигурации «1С:Конвертация данных 2.0».
  3. С помощью обработки MD77Exp.ert выгружаются метаданные вашей конфигурации 7.7, настраивается сопоставление справочников (Номенклатура, Контрагенты, Договоры) и документов (Расходная накладная -> УПД).
  4. Пользователь работает в привычном интерфейсе 1С 7.7. При проведении документов данные автоматически выгружаются во временную XML-папку обмена и загружаются в «Клиент ЭДО 8».
  5. В базе «Клиент ЭДО 8» происходит автоматическое подписание документов ЭЦП и их отправка через встроенный сервис 1С-ЭДО. Входящие документы загружаются в обратном порядке.

---

Финансовые и технические особенности выбора оператора ЭДО в 1С 7.7

Проанализируем экономическую целесообразность интеграции на примере двух крупнейших игроков рынка ЭДО — СБИС (Тензор) и Контур.Диадок.

1. Стоимость API и интеграции:

2. Процедура смены оператора (переход с Диадока на СБИС):

Если вы приняли решение сменить оператора ЭДО (например, уйти с Диадока в СБИС из-за дороговизны API), обязательно соблюдайте корректную процедуру закрытия старого аккаунта. Просто забросить старый личный кабинет нельзя. Необходимо официально направить старому оператору заявление о прекращении документооборота с указанием вашего уникального идентификатора участника ЭДО (ID). В противном случае ваши контрагенты продолжат отправлять вам документы на старый адрес ЭДО, и они будут теряться в «зависшем» состоянии.

3. Технические требования к оборудованию:

Помните, что современные интеграционные модули ЭДО предъявляют повышенные требования к ресурсам компьютера. Если сама платформа 1С 7.7 способна быстро работать на старых ПК со слабым процессором и 2–4 ГБ оперативной памяти, то веб-интерфейсы операторов ЭДО и внешние компоненты обработки документов требуют как минимум процессора уровня Core i3 и не менее 8 ГБ ОЗУ для плавной работы без зависаний.

← На главную