При переносе учета или интеграции исторической самописной конфигурации на платформе 1С:Предприятие 7.7 с современной 1С:Бухгалтерией 8.3 возникает задача организации надежного обмена данными. Разберем основные варианты реализации интеграции, ключевые архитектурные ограничения платформы 7.7 и способы фиксации изменений для регулярной выгрузки.
Использование правил обмена, разработанных в «1С:Конвертации данных 2.1», является наиболее универсальным, масштабируемым и надежным решением. Даже при переносе небольшого количества видов документов всегда выгружаются сопутствующие справочники (контрагенты, договоры, номенклатура, единицы измерения, ставки НДС), сопоставление которых проще всего настроить через правила конвертации объектов (ПКО).
Разберем процесс настройки по шагам:
MDChangeExport.ert (поставляется в составе конфигурации КД 2) выгружаем описание структуры конфигурации 7.7 в файл XML.MD83Exp.epf и формируем XML-описание метаданных приемника.V77Exp.ert, которая считывает сформированный файл правил и выгружает данные в XML-пакет.V8Exchan83.epf.Если требуется полностью автоматизировать процесс без промежуточных 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-подключения:
rphost), прямое создание COM-объекта завершится ошибкой. В этом случае требуется либо настраивать прокси-приложение в COM+ (dllhost.exe), либо запускать обмен через 32-разрядный клиент.УникальныйИдентификатор (GUID). Сопоставление объектов необходимо выполнять по набору ключевых полей (для документов — НомерДок, ДатаДок, Организация; для контрагентов — ИНН и КПП) или формировать суррогатный идентификатор на основе внутреннего 9-значного кода IDDoc.В платформе 7.7 нет встроенного механизма планов обмена и подписок на события. Чтобы выгружать только измененные или новые документы, рассмотрим следующие подходы:
Объект (тип «Документ») и ДатаВыгрузки (тип «Дата»). При записи или проведении документа в коде модуля документа добавляется фиксация ссылки в этот справочник. После успешной выгрузки запись помечается или удаляется.ФлагВыгрузкиВ8 (тип «Число»). В процедурах ОбработкаПроведения и ОбработкаОтменыПроведения модулей документов выставляется значение 0, а после передачи в 8.3 значение реквизита меняется на 1 без повторного проведения документа.1Cv7.mlg): регламентный скрипт считывает текстовый файл журнала регистрации 7.7, отбирая идентификаторы измененных документов за период с момента предыдущего запуска.Для долгосрочной и стабильной работы лучшим решением является связка: настройка правил в КД 2 + выгрузка через внешнюю обработку V77Exp.ert по расписанию (через планировщик задач Windows и пакетный запуск 1С 7.7). Этот подход исключает проблемы с разрядностью COM-компонентов и упрощает поддержку правил при обновлении конфигурации «1С:Бухгалтерия 8.3».