Как выгрузить данные и документы из 1С 8.2 в 1С 7.7

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

Перенос данных в обратном направлении — из более новой платформы «1С:Предприятие 8» в устаревшую «1С:Предприятие 7.7» — является нестандартной задачей. Фирма «1С» ориентирована на переход пользователей на современные платформы, поэтому готовой типовой обработки «обратной» выгрузки не существует. Однако реализовать такой перенос можно несколькими проверенными способами.

Разберем основные архитектурные отличия систем, которые необходимо учитывать при настройке переноса, и детально проанализируем три основных метода реализации задачи: через конфигурацию «1С:Конвертация данных 2», через прямое COM/OLE-соединение и через промежуточные файлы формата DBF.

Архитектурные различия между 1С 8.2 и 1С 7.7

Перед разработкой правил или обработок обмена необходимо учитывать принципиальные различия в структуре метаданных обеих платформ:

  1. Табличные части документов: В конфигурациях на платформе 8.2 документ может содержать несколько независимых табличных частей (например, «Товары», «Услуги», «ВозвратнаяТара»), тогда как в конфигурациях 7.7 у документа предусмотрена строго одна многострочная часть.
  2. Многофирменный учет: В «1С:Бухгалтерии 8» учет ведется по нескольким организациям в рамках единой информационной базы. Типовая «1С:Бухгалтерия 7.7» (ред. 4.5) рассчитана строго на одно юридическое лицо. При выгрузке требуется обязательная фильтрация по конкретной организации и разделение потоков данных по отдельным базам 7.7.
  3. Планы счетов и субконто: В 8.2 состав субконто на счетах настраивается динамически, а также поддерживается ведение раздельного количественного и валютного учета по каждому субконто. В 7.7 количество субконто на счете жестко зафиксировано структурой конфигурации (не более 3 видов субконто).
  4. Формат кодов и номеров: В платформе 8.2 длина номеров документов и кодов справочников обычно больше, а также используются буквенные префиксы узлов и организаций. При загрузке в 7.7 требуется контролировать длину строковых реквизитов и обрезать лишние символы для предотвращения ошибок уникальности.

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

Использование конфигурации «Конвертация данных 2» является наиболее надежным и гибким решением. Обмен строится на базе передачи данных через файлы XML по заранее описанным правилам.

Рассмотрим пошаговый порядок настройки обмена:

  1. Выгрузка структуры метаданных: Из базы 8.2 структура выгружается с помощью обработки MD82Exp.epf, а из базы 7.7 — с помощью внешней обработки MD77Exp.ert.
  2. Загрузка метаданных в КД: Полученные файлы описания структуры загружаются в конфигурацию «Конвертация данных».
  3. Создание правил конвертации объектов (ПКО): Для справочников настраиваются правила сопоставления по кодам, наименованиям или реквизитам синхронизации (например, ИНН/КПП для контрагентов).
  4. Обработка табличных частей: Для объединения нескольких табличных частей документа 8.2 в единую многострочную часть 7.7 в ПКО документа (в обработчике «Перед выгрузкой» или «При выгрузке») формируется промежуточная таблица значений, объединяющая нужные строки. Если один документ 8.2 должен распасться на несколько документов в 7.7 (например, создание отдельной накладной и отдельного акта на услуги), создаются раздельные ПКО с фильтрацией по видам строк.
  5. Выгрузка и загрузка данных: Выгрузка из 8.2 выполняется универсальной обработкой V8Exchan82.epf, а загрузка в 7.7 — обработкой V77Exp.ert (в режиме загрузки данных) или V77Import.ert.

Способ 2. Прямое подключение через COM / OLE

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

При использовании этого подхода важно учитывать:

  1. Разрядность приложений: Платформа 1С 7.7 является исключительно 32-разрядным приложением. Если инициатором выступает 8.2, процесс выгрузки должен выполняться в 32-битном клиенте 1С.
  2. Выбор коннектора: При подключении из среды 7.7 к базе 8.2 рекомендуется использовать V82.COMConnector, так как он работает быстрее и не запускает графическую оболочку, в отличие от V82.Application.
  3. Модальные окна: Во избежание зависаний обмена в обеих конфигурациях должны быть исключены вызовы модальных диалогов и предупреждений во время программной записи объектов.

Посмотрим на пример инициализации 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: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

Способ 3. Выгрузка через формат DBF

Для простых задач переноса остатков, справочников или плоских документов без сложной аналитики эффективным методом является выгрузка во внешние таблицы формата DBF.

Проанализируем алгоритм работы с DBF:

  1. В базе 8.2 при помощи объекта XBase создается таблица нужной структуры, куда запросом выгружаются необходимые данные.
  2. В базе 7.7 с помощью встроенного объекта СоздатьОбъект("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-соединение.

← На главную