Платформа 1С:Предприятие 7.7, несмотря на свой солидный возраст, продолжает успешно эксплуатироваться во множестве розничных магазинов и небольших производственных предприятий. Однако современные реалии требуют обязательного использования электронного документооборота (ЭДО) для обмена УПД, счетами-фактурами и работы с маркированными товарами. Разберем подробно, как реализовать ЭДО на платформе 1С 7.7, если в ней полностью отсутствуют штатные (встроенные «из коробки») механизмы для этого. Если доработка устаревшей программы признана нецелесообразной, для перехода на новые конфигурации доступен раздел с решениями по переносу данных из 1С 7.7.
Проанализируем доступные варианты интеграции, их плюсы, минусы и особенности реализации. Мы подробно остановимся на четырех основных подходах: интеграции через внешнюю компоненту СБИС (Saby) SDK, использовании файлового обмена через СБИС-Коннект, ручной генерации XML по формату ФНС 820@ и связке с конфигурацией «1С:Клиент ЭДО 8».
---
Один из самых функциональных способов — это интеграция через API оператора ЭДО прямо из интерфейса 1С 7.7. Рассмотрим, как устроен этот механизм на примере оператора СБИС (Тензор), который предоставляет готовую внешнюю обработку sbis.ert.
Эта обработка представляет собой масштабный программный комплекс объемом около 14 000–15 000 строк кода. Она работает на базе трех ключевых компонентов:
Проблема отладки сложных структур данных в 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 ЭДО данные через стандартное табло отладчика или вывести их на форму для визуального контроля.
---
Если вам не требуется сложная интерактивная работа с API прямо из 1С 7.7 (например, когда достаточно просто отправлять сформированные накладные и загружать входящие), оптимальным решением станет использование утилиты СБИС-Коннект.
Разберем по шагам схему работы этого механизма:
C:\SBIS_Exchange\Out\).C:\SBIS_Exchange\In\, откуда ваша обработка в 1С 7.7 загружает их по расписанию или по кнопке.Этот вариант является самым стабильным, так как изолирует платформу 1С 7.7 от сложных криптографических операций и сетевых запросов, которые часто приводят к падению старой платформы «в аварийный режим» из-за нехватки памяти или конфликтов внешних компонент. Если же требуется выполнять подписание непосредственно в программе, пригодится решение для настройки электронной подписи CAdESCOM и CAPICOM в 1С 7.7.
---
Для максимальной независимости от обновлений операторского софта и сторонних библиотек можно реализовать прямую генерацию 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:
---
Если на предприятии принципиально не хотят отказываться от 1С 7.7, но желают иметь полнофункциональный, официально поддерживаемый «1С-ЭДО», фирма «1С» предлагает компромиссное решение — конфигурацию «1С:Клиент ЭДО 8» (актуальная редакция 2.3).
Схема совместной работы выглядит следующим образом:
MD77Exp.ert выгружаются метаданные вашей конфигурации 7.7, настраивается сопоставление справочников (Номенклатура, Контрагенты, Договоры) и документов (Расходная накладная -> УПД).---
Проанализируем экономическую целесообразность интеграции на примере двух крупнейших игроков рынка ЭДО — СБИС (Тензор) и Контур.Диадок.
1. Стоимость API и интеграции:
2. Процедура смены оператора (переход с Диадока на СБИС):
Если вы приняли решение сменить оператора ЭДО (например, уйти с Диадока в СБИС из-за дороговизны API), обязательно соблюдайте корректную процедуру закрытия старого аккаунта. Просто забросить старый личный кабинет нельзя. Необходимо официально направить старому оператору заявление о прекращении документооборота с указанием вашего уникального идентификатора участника ЭДО (ID). В противном случае ваши контрагенты продолжат отправлять вам документы на старый адрес ЭДО, и они будут теряться в «зависшем» состоянии.
3. Технические требования к оборудованию:
Помните, что современные интеграционные модули ЭДО предъявляют повышенные требования к ресурсам компьютера. Если сама платформа 1С 7.7 способна быстро работать на старых ПК со слабым процессором и 2–4 ГБ оперативной памяти, то веб-интерфейсы операторов ЭДО и внешние компоненты обработки документов требуют как минимум процессора уровня Core i3 и не менее 8 ГБ ОЗУ для плавной работы без зависаний.