При работе с 1С:Предприятие 8.3 часто возникает задача переноса документов за определенный период из одной базы в другую. Если конфигурации идентичны (например, две базы «Бухгалтерия предприятия 3.0 КОРП» одного релиза, предварительно выполнив сравнение значений констант для проверки идентичности настроек), использование классической «Конвертации данных 2.0» (КД2) может показаться избыточным и трудозатратным процессом. Разберем, какие инструменты и методики переноса объектов позволяют выполнить эту задачу быстро и эффективно, не прибегая к созданию правил обмена.
Рассмотрим самый популярный способ — использование универсальной обработки для выгрузки и загрузки данных или стандартного файла ВыгрузкаЗагрузкаДанныхXML83.epf. Этот инструмент предназначен специально для обмена между идентичными конфигурациями. Основное преимущество метода заключается в том, что объекты переносятся целиком со всеми реквизитами и движениями по регистрам на основании их уникальных идентификаторов (GUID/УИД).
Проанализируем алгоритм работы с этой обработкой:
РеализацияТоваровУслуг или ПоступлениеТоваровУслуг).Важный технический нюанс: сопоставление данных происходит строго по УИД. Если в базе-приемнике уже есть объект с таким же идентификатором, он будет перезаписан данными из файла. Если идентификаторы различаются (например, вы создали одинаковых контрагентов вручную в обеих базах), система создаст дубли. В этом случае после загрузки потребуется запуск стандартной обработки ПоискИЗаменаДублей.
Разберем ситуацию, когда скачанные из интернета обработки выдают ошибки или просто не открываются. Выясним причину такого поведения платформы 1С 8.3. В современных конфигурациях на базе БСП (Библиотеки стандартных подсистем) усилены меры безопасности. Чтобы успешно запустить ВыгрузкаЗагрузкаДанныхXML83.epf, необходимо:
Если базы достаточно современные (например, БП 3.0), мы можем использовать механизм EnterpriseData. Это универсальный формат обмена, который встроен в логику конфигурации и не требует внешних файлов правил. Посмотрим на этот процесс по шагам:
В типовых конфигурациях существует обработка УниверсальныйОбменДаннымиEnterpriseData. Она позволяет выгрузить данные в файл или передать их напрямую через веб-сервис. Главное отличие от простого XML заключается в том, что EnterpriseData использует бизнес-логику конфигурации для сопоставления объектов (например, по ИНН/КПП для контрагентов), что снижает риск появления дублей, если УИДы в базах не совпадают.
Для программистов, которым нужно реализовать более гибкий перенос или автоматизировать процесс, рассмотрим метод сериализации через XDTO. Этот способ позволяет превратить любой объект базы в строку XML и обратно без сторонних инструментов. Проанализируем пример кода для выгрузки объекта:
// Пример выгрузки документа в строку XML через XDTO
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Сериализатор = СериализаторXDTO;
Сериализатор.ЗаписатьXML(Запись, СсылкаНаДокумент);
XMLСтрока = Запись.Закрыть();
В базе-приемнике для восстановления объекта мы используем обратный метод СериализаторXDTO.ПрочитатьXML. Это наиболее быстрый способ передачи данных «один в один» при условии полной идентичности метаданных в обеих базах.
В ситуациях, когда обмен через файлы неудобен, разберем возможность прямого подключения одной базы к другой. Это можно сделать через COM-соединение. Мы пишем небольшую обработку, которая подключается к базе-источнику, делает выборку документов за период и создает их копии в текущей базе.
Посмотрим на пример логики подключения:
// Установка COM-соединения с другой базой
Connector = Новый COMObject("V83.COMConnector");
Connection = Connector.Connect("Srvr=""ServerName"";Ref=""BaseName"";Usr=""Admin"";Pwd=""123"";");
// Пример получения данных
Выборка = Connection.Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаКонца);
Пока Выборка.Следующий() Цикл
// Логика создания документа в текущей базе
КонецЦикла;
Следует помнить, что использование COMConnector требует установленных одинаковых версий платформы на сервере и клиенте, а также может вызывать сложности в 64-битных системах, поэтому данный метод сейчас все чаще вытесняется Web-сервисами и HTTP-сервисами.
Подводя итог, можно сказать: если ваша задача — разовый перенос между полностью одинаковыми базами, оптимальным выбором будет стандартная обработка «Выгрузка и загрузка данных XML» из состава БСП. Она гарантирует перенос всех движений и реквизитов. Если же вы опасаетесь появления дублей НСИ из-за разных УИД, используйте Универсальный обмен EnterpriseData. Помните, что перед любыми манипуляциями по массовому переносу данных необходимо создавать резервную копию базы-приемника.