Как отключить обмен регистра сведений СоответствияОбъектовИнформационныхБаз в 1С

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

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

Почему нельзя просто удалить регистр из состава плана обмена

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

  1. В модуле набора записей регистра СоответствияОбъектовИнформационныхБаз в событии ПередЗаписью выполняется добавление узлов плана обмена в список получателей с помощью метода ОбменДанными.Получатели.Добавить(...).
  2. Если регистр исключен из состава плана обмена на уровне метаданных, платформа генерирует исключение времени выполнения из-за несоответствия типов или невозможности добавить получателя для объекта, не входящего в план обмена. Это прерывает процесс загрузки данных в приемнике.

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

Способ 1. Отключение авторегистрации через Правила регистрации данных (ПРД)

Проанализируем наиболее правильный и системный вариант решения. Он позволяет избежать накопления лишних записей в таблицах регистрации изменений СУБД (_ChangeRec).

Разберем по шагам порядок настройки:

  1. Открываем конфигурацию «Конвертация данных» и загружаем правила регистрации данных для настраиваемого плана обмена.
  2. Находим правило регистрации для регистра сведений СоответствияОбъектовИнформационныхБаз.
  3. В обработчике Перед обработкой устанавливаем отмену регистрации: Отказ = Истина;
  4. Либо в свойствах правила отключаем автоматическую регистрацию для данного объекта.
  5. Выгружаем обновленные правила регистрации и загружаем их в информационную базу через форму настройки синхронизации данных.

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

Способ 2. Отмена выгрузки в Правилах конвертации объектов (ПКО)

Если обмен настраивается через правила конвертации данных (КД 2.x), а менять правила регистрации не планируется, рассмотрим вариант подавления выгрузки непосредственно в обработчиках конвертации.

Для этого в конфигурации «Конвертация данных» переходим в правила конвертации объектов:

  1. Находим ПКО для регистра сведений СоответствияОбъектовИнформационныхБаз.
  2. В обработчике события Перед выгрузкой (или Перед обработкой) прописываем отказ от выгрузки: Отказ = Истина;
  3. Сохраняем правила обмена и обновляем их в настройке синхронизации.

В этом случае платформа считывает зарегистрированные изменения, но сам объект в результирующий XML-файл или сообщение обмена не помещается.

Способ 3. Программная очистка регистрации перед сеансом выгрузки

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

Посмотрим на пример кода:


ВыборкаУзлов = ПланыОбмена.Обмен_УХ.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
    Если ВыборкаУзлов.Ссылка <> ПланыОбмена.Обмен_УХ.ЭтотУзел() Тогда 
        ПланыОбмена.УдалитьРегистрациюИзменений(
            ВыборкаУзлов.Ссылка, 
            Метаданные.РегистрыСведений.СоответствияОбъектовИнформационныхБаз
        );
    КонецЕсли;
КонецЦикла;

Разберем логику работы кода: перед стартом выгрузки процедура ПланыОбмена.УдалитьРегистрациюИзменений() полностью очищает зарегистрированные записи регистра по всем узлам, кроме предопределенного узла ЭтотУзел(), поэтому в пакет обмена данные регистра не попадают.

Способ 4. Запрет авторегистрации в свойствах состава плана обмена

Если метаданные конфигурации доступны для изменения, рассмотрим настройку на уровне дерева объектов конфигурации:

  1. Открываем свойства нужного плана обмена и переходим на вкладку Состав.
  2. Находим регистр сведений СоответствияОбъектовИнформационныхБаз.
  3. Флаг включения в состав оставляем активным, а свойство Авторегистрация переводим в значение Запретить.

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

Возможные риски при отключении обмена соответствиями

Обратите внимание на особенности работы подсистемы сопоставления БСП:

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