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