Как перенести документы между одинаковыми конфигурациями 1С 8.3 без использования Конвертации данных

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

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

Использование универсальной обработки «Выгрузка и загрузка данных XML»

Рассмотрим самый популярный способ — использование универсальной обработки для выгрузки и загрузки данных или стандартного файла ВыгрузкаЗагрузкаДанныхXML83.epf. Этот инструмент предназначен специально для обмена между идентичными конфигурациями. Основное преимущество метода заключается в том, что объекты переносятся целиком со всеми реквизитами и движениями по регистрам на основании их уникальных идентификаторов (GUID/УИД).

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

  1. Запустим обработку в базе-источнике. В интерфейсе выберем период, за который необходимо выгрузить документы.
  2. В дереве объектов отметим нужные типы документов (например, РеализацияТоваровУслуг или ПоступлениеТоваровУслуг).
  3. Обратим внимание на настройку «Выгружать объекты по ссылкам». Если этот флаг установлен, программа автоматически подтянет все справочники (Контрагенты, Номенклатура, Склады), которые задействованы в документах.
  4. Выполним выгрузку в файл формата XML.
  5. В базе-приемнике откроем эту же обработку на закладке «Загрузка» и укажем полученный файл.

Важный технический нюанс: сопоставление данных происходит строго по УИД. Если в базе-приемнике уже есть объект с таким же идентификатором, он будет перезаписан данными из файла. Если идентификаторы различаются (например, вы создали одинаковых контрагентов вручную в обеих базах), система создаст дубли. В этом случае после загрузки потребуется запуск стандартной обработки ПоискИЗаменаДублей.

Проблема с запуском внешних обработок в управляемом интерфейсе

Разберем ситуацию, когда скачанные из интернета обработки выдают ошибки или просто не открываются. Выясним причину такого поведения платформы 1С 8.3. В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) усилены меры безопасности. Чтобы успешно запустить ВыгрузкаЗагрузкаДанныхXML83.epf, необходимо:

Перенос через формат EnterpriseData

Если базы достаточно современные (например, БП 3.0), мы можем использовать механизм EnterpriseData. Это универсальный формат обмена, который встроен в логику конфигурации и не требует внешних файлов правил. Посмотрим на этот процесс по шагам:

В типовых конфигурациях существует обработка УниверсальныйОбменДаннымиEnterpriseData. Она позволяет выгрузить данные в файл или передать их напрямую через веб-сервис. Главное отличие от простого XML заключается в том, что EnterpriseData использует бизнес-логику конфигурации для сопоставления объектов (например, по ИНН/КПП для контрагентов), что снижает риск появления дублей, если УИДы в базах не совпадают.

Программный метод: сериализация XDTO

Для программистов, которым нужно реализовать более гибкий перенос или автоматизировать процесс, рассмотрим метод сериализации через XDTO. Этот способ позволяет превратить любой объект базы в строку XML и обратно без сторонних инструментов. Проанализируем пример кода для выгрузки объекта:


// Пример выгрузки документа в строку XML через XDTO
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Сериализатор = СериализаторXDTO;
Сериализатор.ЗаписатьXML(Запись, СсылкаНаДокумент);
XMLСтрока = Запись.Закрыть();

В базе-приемнике для восстановления объекта мы используем обратный метод СериализаторXDTO.ПрочитатьXML. Это наиболее быстрый способ передачи данных «один в один» при условии полной идентичности метаданных в обеих базах.

Синхронизация данных через COM-соединение

В ситуациях, когда обмен через файлы неудобен, разберем возможность прямого подключения одной базы к другой. Это можно сделать через COM-соединение. Мы пишем небольшую обработку, которая подключается к базе-источнику, делает выборку документов за период и создает их копии в текущей базе.

Посмотрим на пример логики подключения:


// Установка COM-соединения с другой базой
Connector = Новый COMObject("V83.COMConnector");
Connection = Connector.Connect("Srvr=""ServerName"";Ref=""BaseName"";Usr=""Admin"";Pwd=""123"";");

// Пример получения данных
Выборка = Connection.Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаКонца);
Пока Выборка.Следующий() Цикл
    // Логика создания документа в текущей базе
КонецЦикла;

Следует помнить, что использование COMConnector требует установленных одинаковых версий платформы на сервере и клиенте, а также может вызывать сложности в 64-битных системах, поэтому данный метод сейчас все чаще вытесняется Web-сервисами и HTTP-сервисами.

Резюме и рекомендации

Подводя итог, можно сказать: если ваша задача — разовый перенос между полностью одинаковыми базами, оптимальным выбором будет стандартная обработка «Выгрузка и загрузка данных XML» из состава БСП. Она гарантирует перенос всех движений и реквизитов. Если же вы опасаетесь появления дублей НСИ из-за разных УИД, используйте Универсальный обмен EnterpriseData. Помните, что перед любыми манипуляциями по массовому переносу данных необходимо создавать резервную копию базы-приемника.

← На главную