Перенос данных в обратном направлении — из более новой платформы «1С:Предприятие 8» в устаревшую «1С:Предприятие 7.7» — является нестандартной задачей. Фирма «1С» ориентирована на переход пользователей на современные платформы, поэтому готовой типовой обработки «обратной» выгрузки не существует. Однако реализовать такой перенос можно несколькими проверенными способами.
Разберем основные архитектурные отличия систем, которые необходимо учитывать при настройке переноса, и детально проанализируем три основных метода реализации задачи: через конфигурацию «1С:Конвертация данных 2», через прямое COM/OLE-соединение и через промежуточные файлы формата DBF.
Перед разработкой правил или обработок обмена необходимо учитывать принципиальные различия в структуре метаданных обеих платформ:
Использование конфигурации «Конвертация данных 2» является наиболее надежным и гибким решением. Обмен строится на базе передачи данных через файлы XML по заранее описанным правилам.
Рассмотрим пошаговый порядок настройки обмена:
MD82Exp.epf, а из базы 7.7 — с помощью внешней обработки MD77Exp.ert.V8Exchan82.epf, а загрузка в 7.7 — обработкой V77Exp.ert (в режиме загрузки данных) или V77Import.ert.Если требуется настроить регулярный бесшовный обмен без промежуточных файлов выгрузки, можно использовать программное межпрограммное взаимодействие.
При использовании этого подхода важно учитывать:
V82.COMConnector, так как он работает быстрее и не запускает графическую оболочку, в отличие от V82.Application.Посмотрим на пример инициализации COM-соединения к базе 8.2 из среды 1С 7.7:
// Создание COM-соединения к 1С 8.2 из 1С 7.7
СтрокаПодключения = "File=""C:\Bases\BP82""; Usr=""Admin""; Pwd=""123"";";
Попытка
V8 = СоздатьОбъект("V82.COMConnector");
База8 = V8.Connect(СтрокаПодключения);
Исключение
Предупреждение("Не удалось подключиться к информационной базе 8.2: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
Для простых задач переноса остатков, справочников или плоских документов без сложной аналитики эффективным методом является выгрузка во внешние таблицы формата DBF.
Проанализируем алгоритм работы с DBF:
XBase создается таблица нужной структуры, куда запросом выгружаются необходимые данные.СоздатьОбъект("XBase") файл открывается, выполняется построчный обход и создание соответствующих элементов справочников или документов.Разберем пример создания и заполнения DBF-файла в среде 1С 8.2:
// Создание и заполнение DBF-файла в 1С 8.2
ФайлDBF = Новый XBase;
ФайлDBF.Поля.Добавить("CODE", "S", 9);
ФайлDBF.Поля.Добавить("NAME", "S", 100);
ФайлDBF.Поля.Добавить("INN", "S", 12);
ФайлDBF.СоздатьФайл("C:\Exchange\Contragents.dbf");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Код КАК Код,
| Контрагенты.Наименование КАК Наименование,
| Контрагенты.ИНН КАК ИНН
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ФайлDBF.Добавить();
ФайлDBF.CODE = Выборка.Код;
ФайлDBF.NAME = Выборка.Наименование;
ФайлDBF.INN = Выборка.ИНН;
ФайлDBF.Записать();
КонецЦикла;
ФайлDBF.ЗакрытьФайл();
Рассмотрим чтение сформированного DBF-файла и загрузку контрагентов в 1С 7.7:
// Загрузка данных из DBF в справочник 1С 7.7
ФайлDBF = СоздатьОбъект("XBase");
ФайлDBF.ОткрытьФайл("C:\Exchange\Contragents.dbf");
Если ФайлDBF.Открыта() = 1 Тогда
Спр = СоздатьОбъект("Справочник.Контрагенты");
ФайлDBF.Первая();
Пока ФайлDBF.ВКонце() = 0 Цикл
КодКонтрагента = СокрЛП(ФайлDBF.CODE);
Если Спр.НайтиПоКоду(КодКонтрагента, 0) = 0 Тогда
Спр.Новый();
Спр.Код = КодКонтрагента;
КонецЕсли;
Спр.Наименование = СокрЛП(ФайлDBF.NAME);
Спр.ИНН = СокрЛП(ФайлDBF.INN);
Спр.Записать();
ФайлDBF.Следующая();
КонецЦикла;
ФайлDBF.ЗакрытьФайл();
КонецЕсли;
Выбор конкретного способа зависит от объема переносимой информации: для комплексного регулярного обмена документами с проводками оптимально настроить правила в «1С:Конвертации данных», а для разовой миграции справочников достаточно использовать файлы DBF или COM-соединение.