Каким образом перенести данные из БП 2.0 в БП 3.0 копейка в копейку при регулярном обмене

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

Переход с редакции 2.0 на 3.0 в «1С:Бухгалтерии предприятия» — это не просто обновление интерфейса, а глубокая трансформация структуры данных. Когда перед разработчиком встает задача не разового перехода, а регулярного переноса документов (например, из доработанной старой базы в новую типовую), возникает вопрос: как обеспечить идентичность данных? Рассмотрим механизмы, которые позволяют реализовать перенос данных «копейка в копейку», разберем внутреннее устройство процесса обновления и определим оптимальные инструменты для автоматизации обмена.

Механизм трансформации данных при обновлении

Для начала проанализируем, как происходит переход в штатном режиме. В отличие от обмена через XML, процесс обновления конфигурации (накатывание cf-файла) работает на уровне СУБД. Однако, поскольку метаданные в 3.0 существенно отличаются, платформа не может просто переименовать поля таблиц. Процесс разделен на два этапа:

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

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

Использование конфигурации «Конвертация данных 2.1»

Самый надежный способ обеспечить точность данных при регулярном обмене — это создание правил обмена в Конвертации данных 2.1 (КД 2). Многие программисты считают это трудозатратным, но для типовых документов БП 2.0 и БП 3.0 структура объектов совпадает на 80–90%. Рассмотрим алгоритм создания таких правил:

  1. Выгрузите описания метаданных из обеих баз (БП 2.0 и БП 3.0) с помощью обработки MD83Exp.epf.
  2. Загрузите их в КД 2.
  3. Создайте новую конвертацию и воспользуйтесь «Помощником настройки правил». Поскольку имена реквизитов (Дата, Номер, Организация, СуммаДокумента) идентичны, КД автоматически сопоставит большинство полей.
  4. Для специфических объектов (например, документов расчетного счета), где структура изменилась, используйте ПКС (Правила конвертации свойств) с написанием небольших обработчиков на языке 1С.

Проанализируем ситуацию, когда в БП 3.0 появились новые обязательные реквизиты, которых нет в 2.0. В этом случае в ПКС можно прописать фиксированные значения или алгоритм поиска:


// Пример в ПКС перед выгрузкой
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
    Значение = Объект.Контрагент.ОсновнойДоговор;
Иначе
    Отказ = Истина;
КонецЕсли;

Где взять готовые правила обмена

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

Это даст вам мощный фундамент. Вы сможете удалить из этих правил все лишнее, оставив только нужные вам документы (Поступления, Реализации, Кассу), и адаптировать их под свои нетиповые реквизиты. Это значительно быстрее, чем ручное создание всех связей.

Автоматизация через «Обновлятор1С» или скрипты

Если бюджет ограничен, а время дорого, можно рассмотреть «костыльный», но рабочий метод, предложенный участниками сообщества. Разберем его по шагам:

  1. Ежеквартально создается копия текущей рабочей базы БП 2.0.
  2. С помощью автоматизированных средств (например, Обновлятор1С) эта копия обновляется до типовой БП 3.0. При этом срабатывают все встроенные обработчики, которые выверяют данные «копейка в копейку».
  3. Из полученной временной базы БП 3.0 данные выгружаются в основную базу БП 3.0 с помощью стандартной обработки ВыгрузкаЗагрузкаДанныхXML.epf.

Этот метод хорош тем, что не требует написания правил обмена, так как перенос идет между идентичными структурами БП 3.0 (из обновленной копии в рабочую базу).

Прямое подключение через COM-соединение

Для программиста, который хочет полностью контролировать процесс, оптимальным будет написание обработки, работающей через COMConnector. Выясним причину выбора этого метода: он позволяет избежать промежуточных файлов и работать с объектами напрямую. Рассмотрим примерный код подключения и поиска документа:


// Подключение к базе БП 2.0 из БП 3.0
COMСоединитель = Новый COMОбъект("V83.COMConnector");
ПутьКБазе = "File=""C:\Bases\BP20"";Usr=""Admin"";";
Попытка
    База20 = COMСоединитель.Connect(ПутьКБазе);
Исключение
    Сообщить("Ошибка подключения: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

// Выборка документов в старой базе
Запрос = База20.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &Начало И &Конец";
// ... установка параметров и выполнение

При таком подходе вы просто читаете свойства объекта в 2.0 и присваиваете их объекту в 3.0. Основная сложность здесь — правильное сопоставление ссылочных данных (Справочников: Контрагенты, Номенклатура). Рекомендуется сопоставлять их по УникальныйИдентификатор или по ИНН/КПП для контрагентов.

Важные нюансы учета при переносе

Чтобы данные сошлись «копейка в копейку», недостаточно просто перенести суммы. Проанализируем критические точки:

Резюме: Если вам нужен быстрый результат для нескольких видов документов, лучший путь — извлечь типовые правила из макетов БП 3.0, обрезать их в «Конвертации данных 2.1» и использовать для регулярной выгрузки. Это гарантирует, что логика, заложенная методистами 1С для перехода «копейка в копейку», будет сохранена и в вашем обмене.

← На главную