Как перенести документы за текущий день в копию базы 1С:Управление торговлей 11.4?

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

В процессе работы с 1С часто возникают ситуации, когда необходимо «подтянуть» данные из актуальной рабочей базы в старую копию (например, если копия была создана вчера, а сегодня в ней нужно провести тесты на актуальных данных). Разберем, как осуществить перенос всех документов за сегодня между идентичными конфигурациями 1С:Управление торговлей 11.4, минимизируя риск появления дублей и ошибок.

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

Этот способ считается классическим для разового переноса. Рассмотрим подробнее, как правильно настроить выгрузку, чтобы не потерять связанные данные. Для работы нам понадобится обработка ВыгрузкаЗагрузкаДанныхXML.epf, которая обычно входит в состав инструментов разработчика («Библиотека стандартных подсистем» или диск ИТС).

Порядок действий:

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

Преимущество метода в его простоте, однако он требует внимательности при выборе типов документов, чтобы ничего не забыть.

Метод 2. Синхронизация данных через планы обмена

Если мы не уверены, какие именно объекты были созданы или изменены за сегодня, лучше доверить поиск изменений самой платформе. Проанализируем ситуацию: в 1С встроен механизм планов обмена, который умеет регистрировать изменения объектов.

Рассмотрим пошагово, как использовать этот механизм для нашей задачи:

  1. В базе-источнике перейдем в раздел НСИ и администрирование — Синхронизация данных.
  2. Если синхронизация не настроена, мы можем использовать любой существующий план обмена (например, «Синхронизация через универсальный формат»).
  3. Откроем обработку «Регистрация изменений для обмена». В ней мы увидим список всех объектов, которые система пометила для выгрузки.
  4. Выясним, как добавить туда документы за сегодня. Для этого можно воспользоваться программным кодом или консолью запросов, чтобы отобрать документы по дате и зарегистрировать их на узле обмена.

Пример программной регистрации документов (условно):


ПланОбменаСсылка = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("НашУзел");
Выборка = Документы.РеализацияТоваровУслуг.Выбрать(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()));
Пока Выборка.Следующий() Цикл
    ПланыОбмена.ЗарегистрироватьИзменения(ПланОбменаСсылка, Выборка.Ссылка);
КонецЦикла;

После регистрации изменений мы можем выполнить штатную выгрузку. Главный плюс этого метода — система сама отслеживает зависимости и гарантирует, что данные будут сопоставлены по уникальным идентификаторам (GUID), что исключает появление дублей.

Метод 3. Использование EnterpriseData (Универсальный формат)

В современных редакциях УТ 11.4 встроен механизм обмена через EnterpriseData. Это более продвинутый вариант обмена XML. Разберем его преимущества:

Этот способ наиболее безопасен для целостности информационной базы.

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

Если мы хотим избежать создания промежуточных файлов, проанализируем возможность использования COMConnector. Этот метод позволяет из одной базы напрямую «дотянуться» до другой.

Логика работы скрипта будет следующей:

  1. Создается подключение к базе-источнику через V83.COMConnector.
  2. В базе-источнике выполняется запрос по всем типам документов с фильтром по дате.
  3. Для каждого найденного документа в текущей базе (приемнике) ищется объект с таким же GUID.
  4. Если объект найден — он обновляется, если нет — создается новый.

Пример инициализации соединения:


Соединитель = Новый COMОбъект("V83.COMConnector");
ПараметрыСвязи = "Srvr=""ServerName"";Ref=""BaseName"";Usr=""Admin"";Pwd=""123"";";
Попытка
    БазаИсточник = Соединитель.Connect(ПараметрыСвязи);
Исключение
    Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;

Важные риски и пост-обработка данных

Независимо от выбранного способа, перенос данных из «будущего» (сегодня) в «прошлое» (вчерашняя копия) влечет за собой ряд технических моментов, которые мы обязаны учесть:

1. Нарушение последовательности проведения.
После загрузки документов за сегодня во вчерашнюю базу, необходимо обязательно выполнить перепроведение документов. В УТ 11.4 это критично для корректного формирования остатков по регистрам накопления, расчета себестоимости и взаиморасчетов. Без перепроведения отчеты могут показывать неверные данные, несмотря на наличие самих документов.

2. Префиксы и нумерация.
Если во вчерашней копии сегодня тоже велась какая-то работа (например, создавались тестовые документы), возможны конфликты номеров. Выясним причину: 1С следит за уникальностью номеров в пределах префикса. При загрузке документов из рабочей базы может возникнуть коллизия, если номера совпадут. Рекомендуется проверить настройки префиксов перед загрузкой.

3. Использование GUID (Уникальных идентификаторов).
При использовании типовых обработок (XML или синхронизация) сопоставление объектов происходит по их внутренним идентификаторам. Это гарантирует, что если документ был изменен, он просто обновится в базе-приемнике, а не создаст вторую копию самого себя.

Заключение

Подводя итог, можно сказать: для разового и быстрого переноса «всего за сегодня» оптимально подходит типовая синхронизация с ручной регистрацией изменений или универсальная обработка XML с включенной опцией выгрузки по ссылкам. Если же задача станет регулярной, стоит рассмотреть настройку постоянного обмена или использование механизма РИБ (Распределенных информационных баз), предварительно ограничив направление передачи данных.

← На главную