Перенос данных между различными версиями программ 1С — задача всегда ответственная, а когда речь идет о переходе с более новой версии (например, Бухгалтерия предприятия 3.0 на платформе 8.3) на старую (Бухгалтерия предприятия 2.0 на платформе 8.2), она становится технически сложной. В профессиональной среде такой процесс называют «back-transfer» или «даунгрейд». В данной статье мы разберем, почему возникают такие задачи, с какими трудностями придется столкнуться и как реализовать перенос с помощью профессиональных инструментов.
Рассмотрим типичную ситуацию, описанную пользователями: попытка перенести данные из 1С 7.7 напрямую в БП 2.0 провалилась из-за ошибок в базе-источнике или отсутствия актуальных правил. Руководство может принять решение действовать через промежуточное звено: сначала обновиться до БП 3.0, а затем «спуститься» в БП 2.0. Однако стоит понимать, что фирма «1С» не предусматривает штатных механизмов для движения «вниз» по версиям.
Проанализируем основные причины сложности такого перехода:
Как показывает практика, наиболее надежным и профессиональным способом является создание собственных правил обмена. Разберем этот процесс по шагам:
Шаг 1: Подготовка метаданных. Нам необходимо выгрузить структуру обеих баз. Для этого используем обработку MD83Exp.epf для базы 8.3 и MD82Exp.epf (или аналогичную для вашей версии) для базы 8.2. Эти файлы входят в состав поставки конфигурации КонвертацияДанных.
Шаг 2: Создание правил обмена. В конфигурации «Конвертация данных» создаем новый проект, где источником будет БП 3.0, а приемником — БП 2.0. Настроим соответствия для основных объектов:
Контрагенты, Номенклатура, Организации, ДоговорыКонтрагентов.ПоступлениеТоваровУслуг, РеализацияТоваровУслуг, ПлатежноеПоручение.Шаг 3: Написание обработчиков. Поскольку структуры различаются, нам придется использовать обработчики событий «Перед выгрузкой» или «При загрузке». Например, если в 3.0 есть реквизит, которого нет в 2.0, мы должны либо проигнорировать его, либо сопоставить с другим полем. Пример кода для сопоставления значений:
// В правиле конвертации свойства (ПКС)
Если Источник.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком Тогда
Значение = Перечисления.ТипыДоговоров.СПоставщиком;
ИначеЕсли Источник.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем Тогда
Значение = Перечисления.ТипыДоговоров.СПокупателем;
КонецЕсли;
Шаг 4: Выгрузка и загрузка. После сохранения правил используем универсальную обработку ВыгрузкаЗагрузкаДанныхXML.epf. В базе 8.3 выполняем выгрузку в файл, а в 8.2 — загрузку.
Зачастую идея переноса через 8.3 возникает из-за ошибок при прямом переносе из 7.7. Выясним причину этих ошибок. Чаще всего они связаны с состоянием учета в старой базе. Перед переносом крайне важно выполнить следующие действия в 1С 7.7:
Договоры на наличие пустых дат или некорректных владельцев.Важный совет: Фирма «1С» убрала прямые ссылки на правила переноса 7.7 -> 2.0 из последних дистрибутивов, но сами файлы Acc77_BP2.xml часто сохраняются в каталогах шаблонов предыдущих релизов БП 2.0 (например, в папке tmpls\1c\Accounting\2_0_66_...). Использование этих архивных правил может решить проблему гораздо быстрее, чем двойной перенос.
Для программиста доступен еще один метод — написание обработки, которая напрямую читает данные из одной базы и записывает в другую через COMОбъект. Рассмотрим этот метод подробнее.
Мы создаем в базе 8.2 (приемник) обработку, которая подключается к 8.3 (источник):
ПараметрыСоединения = "File=""C:\Bases\BP3""; Usr=""Admin""; Pwd="""";";
V83 = Новый COMОбъект("V83.ComConnector");
Попытка
Соединение = V83.Connect(ПараметрыСоединения);
Сообщить("Соединение установлено!");
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Пример выборки данных из источника
Выборка = Соединение.Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
// Создаем контрагента в текущей базе (8.2)
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = Выборка.Наименование;
НовыйКонтрагент.ИНН = Выборка.ИНН;
НовыйКонтрагент.Записать();
КонецЦикла;
Этот способ требует больше времени на написание кода, но он максимально гибкий. Вы можете на лету трансформировать данные, объединять справочники или игнорировать ненужные документы без необходимости изучать сложную логику Конвертации данных.
Перенос данных из 8.3 в 8.2 — задача нестандартная, но выполнимая. Разберем резюме наших действий:
Помните: Перед любыми операциями по переносу данных обязательно создавайте архивные копии обеих информационных баз!