Почему в 1С при синхронизации УТ 11 и БП 3.0 не регистрируются объекты и выдается сообщение «Зарегистрировано 0 изменений»?

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

При настройке синхронизации между конфигурациями «Управление торговлей 11» (УТ 11) и «Бухгалтерия предприятия 3.0» (БП 3.0) специалисты часто сталкиваются с парадоксальной ситуацией (особенно если обмен переполнен документами). При попытке принудительно зарегистрировать объект (например, конкретный банк или номенклатуру) через обработку «Состав отправляемых данных» или расширение для регистрации или удаления объектов из плана обмена с формы, система выдает уведомление: «Зарегистрировано 0 изменений из 1 на узле...». Это происходит даже в тех случаях, когда объект визуально корректен, а настройки обмена кажутся верными. Рассмотрим подробно причины этого поведения и способы решения проблемы.

Анализ механизмов регистрации изменений в БСП

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

Разберем ситуацию на программном уровне. В общем модуле ОбменДаннымиСобытия существует цикл, который подготавливает правила регистрации для конкретного объекта. Посмотрим на фрагмент кода, который участвует в этом процессе:


Для Каждого Правило Из Правила Цикл
    ПравилаРегистрацииОбъекта.Добавить(ПравилоРегистрацииСтруктурой(Правило, Правила.Колонки));
КонецЦикла;

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

Причина 1: Настройки отправки нормативно-справочной информации (НСИ)

Самая очевидная причина кроется в настройках самого узла обмена. В УТ 11 есть опция «Правила отправки данных» для справочников. Рассмотрим два режима:

  1. Отправлять всю — система должна регистрировать любой объект справочника.
  2. Отправлять только используемую в документах — система регистрирует объект только в том случае, если на него есть ссылка в документе, который уже входит в область выгрузки (в этом случае может помочь выборочный перенос документов из УТ).

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

Причина 2: Скрытые фильтры в правилах регистрации (ПРО)

В конфигурации УТ 11 правила регистрации объектов часто содержат встроенные запросы с секцией [Обязательные условия]. Эти условия могут блокировать регистрацию по неочевидным критериям. Рассмотрим примеры:

Причина 3: Последствия использования РИБ и ТиИ

Если база была создана путем «отрезания» от большой базы через механизм РИБ (Распределенные информационные базы) с последующим выполнением Тестирования и Исправления (ТиИ), могут возникнуть проблемы с уникальными идентификаторами (GUID). Рассмотрим ситуацию, когда в таблицах регистрации изменений остались «фантомные» записи от старых узлов РИБ. В этом случае попытка зарегистрировать объект на новый узел обмена может игнорироваться из-за конфликта метаданных в системных таблицах _ConfigChngRec.

Проверим это, выполнив принудительную перезапись объекта программно в режиме загрузки:


Объект = Справочники.Номенклатура.НайтиПоКоду("001").ПолучитьОбъект();
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();

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

Причина 4: Кэширование правил и соответствий

Система 1С активно кэширует правила регистрации. Чтобы исключить влияние кэша, выполним следующие шаги:

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

Метод диагностики через «Конвертацию данных 2.0»

Для того чтобы выяснить, какие именно условия прописаны в [Обязательные условия], проанализируем правила регистрации в специализированной конфигурации. Выгрузим правила регистрации из УТ 11 (через параметры обмена) и загрузим их в «Конвертацию данных 2.0». Там в наглядном виде можно увидеть текст запроса, который система выполняет перед регистрацией каждого типа объекта. Если в тексте запроса присутствуют жесткие фильтры по реквизитам, которые у ваших «проблемных» объектов не заполнены — причина найдена.

Резюме: Если вы столкнулись с ошибкой «Зарегистрировано 0 изменений», в первую очередь проверьте корректность заполнения обязательных реквизитов объекта, «перещелкните» настройки состава НСИ в узле обмена и попробуйте программную перезапись объекта. Если это не помогло — путь лежит в анализ правил регистрации через «Конвертацию данных».

← На главную