Как настроить синхронизацию между базами 1С:УПП и ускорить выгрузку данных?

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

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

1. Использование типовых планов обмена и ускорение передачи данных

Выгрузка всего массива документов за период каждый раз заново создает колоссальную нагрузку на дисковую подсистему и оперативную память сервера. Для автоматизации выгрузки только измененных данных в конфигурации 1С:Управление производственным предприятием 1.3 предусмотрены готовые механизмы:

  1. В конфигураторе уже присутствуют специализированные планы обмена: Обмен с УПП 1.3 и Обмен с УПП 1.3 (фоновый).
  2. Типовые правила конвертации содержатся в общем макете конфигурации ПравилаОбмена_УПП_УПП. Их можно выгрузить в XML, доработать в конфигурации «Конвертация данных 2.1» и загрузить обратно в настройку обмена.

Если процесс выгрузки зависает даже при использовании плана обмена, проанализируем основные причины и способы оптимизации:

  1. Переполнение таблиц регистрации изменений. Если узел был создан давно, но обмен с ним не завершался получением квитанции, в таблице регистрации накапливаются миллионы записей. В этом случае необходимо полностью очистить регистрацию для узла: ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена); После этого следует зарегистрировать только те объекты, которые действительно требуют переноса в текущий момент.
  2. Транзакционное дробление (пакетирование). Попытка выгрузить и записать весь объем данных в рамках одной транзакции СУБД приводит к блокировкам таблиц. В настройках узла обмена обязательно задаем параметр Количество объектов в транзакции (оптимальное значение — от 500 до 2000).
  3. Отключение проверок бизнес-логики при загрузке. В базе-приемнике в обработчиках событий документов и справочников (ПередЗаписью, ПриЗаписи) должен контролироваться флаг загрузки:
    
    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    Это предотвращает лишние пересчеты, проверки движений и повторное формирование проводок, ускоряя загрузку в десятки раз.

2. Тонкая фильтрация документов (только с признаком бухгалтерского учета)

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

Способ А: Фильтрация на этапе регистрации (рекомендуемый способ).
Чтобы не нагружать процедуру выгрузки перебором лишних документов, отключим авторегистрацию для требуемых документов в составе плана обмена (Авторегистрация = Запретить) и создадим подписку на событие ПриЗаписи:


Процедура ПриЗаписиДокументаДляОбмена(Источник, Отказ) Экспорт
    Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Проверяем наличие флага отражения в бухучете
    Если Источник.ОтражатьВБухгалтерскомУчете Тогда
        УзелОбмена = ПланыОбмена.ОбменСУПП.НайтиПоКоду("БУХ");
        Если ЗначениеЗаполнено(УзелОбмена) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, Источник);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Способ Б: Фильтрация в правилах КД 2.1.
В Правиле Конвертации Объекта (ПКО) или Правиле Выгрузки Данных (ПВД) в обработчике ПередВыгрузкой прописываем условие:


Если НЕ Источник.ОтражатьВБухгалтерскомУчете Тогда
    Отказ = Истина;
КонецЕсли;

3. Почему не работает «Обмен без правил» и где настраивается поиск по УИД

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

Что касается сопоставления по уникальному идентификатору (GUID / УИД) в конфигурации «Конвертация данных 2.1»:

  1. Открываем нужное Правило конвертации объекта (ПКО).
  2. Переходим на закладку «Настройки» (а не на закладку «Поля поиска»).
  3. Устанавливаем флаг «Искать объект приемника по внутреннему идентификатору».

4. Устранение ошибки несовпадения структуры метаданных

Если в процессе загрузки возникает ошибка вида Тип не определен (СправочникСсылка.ВидыОбъектовЕГАИС), это означает, что в базе-источнике метаданные были обновлены или доработаны, а в базе-приемнике указанный объект отсутствует.

Для исправления ситуации выполним следующие действия:

  1. Выравнивание конфигураций: обновить базу-приемник до той же версии, что и источник.
  2. Корректировка правил: если обновлять приемник не планируется, выгружаем актуальную структуру метаданных приемника с помощью обработки MD83Exp.epf (или MD82Exp.epf), загружаем ее в КД 2.1, удаляем или отключаем ПКО для отсутствующих объектов, а также снимаем галочки передачи реквизитов, ссылающихся на этот тип данных в ПКС (Правилах конвертации свойств).
  3. Исключение из плана обмена: убираем неиспользуемые объекты из состава плана обмена в конфигураторе источника.

5. Предотвращение дублирования справочников

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

  1. Настройка поиска по ключевым полям: в ПКО для справочника Валюты отключаем поиск по внутреннему идентификатору и настраиваем сопоставление по полю Код. Для справочника Банки — по реквизиту БИК, для Контрагенты — по связке ИНН + КПП.
  2. Использование регистра соответствий: в типовых конфигурациях сопоставление ссылок с разными УИД фиксируется в регистре сведений Соответствие объектов для обмена. При необходимости ручной перепривязки или сброса ошибочных связей этот регистр можно очистить.
  3. Устранение уже возникших дублей: если дубликаты уже записались в приемник и на них ссылаются проведенные документы, используем типовую обработку Поиск и удаление дублей, которая заменяет дублирующие элементы на оригинальные во всех связях и регистрах информационной базы.
← На главную