Как организовать регулярный обмен данными между 1С 7.7 и 1С:Бухгалтерией 8.3?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При переносе учета или интеграции исторической самописной конфигурации на платформе 1С:Предприятие 7.7 с современной 1С:Бухгалтерией 8.3 возникает задача организации надежного обмена данными. Разберем основные варианты реализации интеграции, ключевые архитектурные ограничения платформы 7.7 и способы фиксации изменений для регулярной выгрузки.

Вариант 1. Использование конфигурации «Конвертация данных 2» (КД 2)

Использование правил обмена, разработанных в «1С:Конвертации данных 2.1», является наиболее универсальным, масштабируемым и надежным решением. Даже при переносе небольшого количества видов документов всегда выгружаются сопутствующие справочники (контрагенты, договоры, номенклатура, единицы измерения, ставки НДС), сопоставление которых проще всего настроить через правила конвертации объектов (ПКО).

Разберем процесс настройки по шагам:

  1. Выгрузка структуры метаданных 7.7: с помощью внешней обработки MDChangeExport.ert (поставляется в составе конфигурации КД 2) выгружаем описание структуры конфигурации 7.7 в файл XML.
  2. Выгрузка структуры метаданных 8.3: в базе «1С:Бухгалтерия 8.3» запускаем обработку MD83Exp.epf и формируем XML-описание метаданных приемника.
  3. Загрузка метаданных и разработка правил: загружаем описания обеих конфигураций в базу «Конвертация данных 2». Настраиваем правила конвертации объектов (ПКО) и правила конвертации свойств (ПКС). Если конфигурация 7.7 создана на базе типовой конфигурации «Бухгалтерский учет 7.7», за основу можно взять типовые правила переноса и адаптировать их под свои доработки.
  4. Выгрузка данных из 7.7: на стороне 7.7 используем универсальную внешнюю обработку V77Exp.ert, которая считывает сформированный файл правил и выгружает данные в XML-пакет.
  5. Загрузка данных в 8.3: на стороне 8.3 загрузка выполняется с помощью встроенной обработки «Универсальный обмен данными в формате XML» или внешней обработки V8Exchan83.epf.

Вариант 2. Прямой COM/OLE-обмен

Если требуется полностью автоматизировать процесс без промежуточных XML-файлов, можно настроить прямое подключение между базами через COM-соединение. Инициатором обмена может выступать регламентное задание на стороне 1С 8.3.

Проанализируем пример кода подключения к 1С 7.7 из базы 1С 8.3 через OLE-объект V77.Application:


База77 = Новый COMОбъект("V77.Application");
КаталогИБ = "C:\Bases\1Cv77_Trade";
Пользователь = "Администратор";
Пароль = "Pass123";

ПараметрыПодключения = База77.Initialize(База77.RMTrade, "/D""" + КаталогИБ + """ /N""" + Пользователь + """ /P""" + Пароль + """", "NO_SPLASH_SHOW");

Если Не ПараметрыПодключения Тогда
    ВызватьИсключение "Не удалось подключиться к базе 1С 7.7!";
КонецЕсли;

Док77 = База77.CreateObject("Документ.РасходнаяНакладная");
Док77.ВыбратьДокументы(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));

Пока Док77.ПолучитьДокумент() = 1 Цикл
    Если Док77.Проведен() = 1 Тогда
        // Обработка данных документа и создание/обновление объекта в 1С 8.3
        Номер77 = СокрЛП(Док77.НомерДок);
        Дата77  = Док77.ДатаДок;
        Сумма77 = Док77.Итог("Сумма");
    КонецЕсли;
КонецЦикла;

Важные технические ограничения COM-подключения:

  1. Разрядность процессов: платформа 1С 7.7 существует только в 32-разрядном варианте. Если регламентное задание 1С 8.3 выполняется в 64-разрядном рабочем процессе сервера (rphost), прямое создание COM-объекта завершится ошибкой. В этом случае требуется либо настраивать прокси-приложение в COM+ (dllhost.exe), либо запускать обмен через 32-разрядный клиент.
  2. Синхронизация объектов: в 1С 7.7 отсутствует тип УникальныйИдентификатор (GUID). Сопоставление объектов необходимо выполнять по набору ключевых полей (для документов — НомерДок, ДатаДок, Организация; для контрагентов — ИНН и КПП) или формировать суррогатный идентификатор на основе внутреннего 9-значного кода IDDoc.

Организация отслеживания изменений в 1С 7.7

В платформе 7.7 нет встроенного механизма планов обмена и подписок на события. Чтобы выгружать только измененные или новые документы, рассмотрим следующие подходы:

  1. Выгрузка по скользящему временному окну: для небольшого документооборота самым простым решением является выгрузка всех проведенных документов за фиксированный период (например, за последние 7–14 дней). При загрузке в 1С 8.3 существующие документы обновляются без создания дубликатов.
  2. Служебный справочник «ОчередьОбмена»: в конфигурации 7.7 создается справочник с реквизитами Объект (тип «Документ») и ДатаВыгрузки (тип «Дата»). При записи или проведении документа в коде модуля документа добавляется фиксация ссылки в этот справочник. После успешной выгрузки запись помечается или удаляется.
  3. Служебный общий реквизит документов: в 7.7 создается общий реквизит ФлагВыгрузкиВ8 (тип «Число»). В процедурах ОбработкаПроведения и ОбработкаОтменыПроведения модулей документов выставляется значение 0, а после передачи в 8.3 значение реквизита меняется на 1 без повторного проведения документа.
  4. Чтение журнала регистрации (1Cv7.mlg): регламентный скрипт считывает текстовый файл журнала регистрации 7.7, отбирая идентификаторы измененных документов за период с момента предыдущего запуска.

Итог и рекомендации

Для долгосрочной и стабильной работы лучшим решением является связка: настройка правил в КД 2 + выгрузка через внешнюю обработку V77Exp.ert по расписанию (через планировщик задач Windows и пакетный запуск 1С 7.7). Этот подход исключает проблемы с разрядностью COM-компонентов и упрощает поддержку правил при обновлении конфигурации «1С:Бухгалтерия 8.3».

← На главную