Почему документы не переносятся в РИБ по организации в 1С:Бухгалтерия 3.0 и как это исправить

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

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

Проверка основных настроек узла обмена

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

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

Особенности механизмов регистрации в БП 3.0

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

Рассмотрим стандартные подписки, которые отвечают за миграцию документов в РИБ по организации:

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

Добавление новых объектов в РИБ по организации

Проанализируем ситуацию, когда необходимо внедрить в существующий РИБ новый тип документа. Чтобы он корректно мигрировал, выполним следующие шаги:

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

Важный момент: В плане обмена ПоОрганизации существует макет ПравилаРегистрации. Это XML-файл, содержащий условия регистрации объектов. Если объект добавлен в состав плана, но отсутствует в этих правилах (или правила не обновлены), регистрация может работать некорректно.

Почему не срабатывает точка останова в ПриОтправкеДанныхПодчиненному?

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

Во-первых, в БП 3.0 обмен чаще всего выполняется в фоновом задании. Чтобы отладчик «поймал» этот момент, необходимо включить отладку фоновых заданий в настройках или запускать обмен вручную в текущем сеансе.

Во-вторых, при создании начального образа (Initial Image) работают низкоуровневые механизмы платформы. В некоторых случаях они могут обходить стандартные обработчики модуля плана обмена, выполняя выгрузку данных напрямую по таблице регистрации.

Программная регистрация объектов

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


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

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

ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ЭтотОбъект);

Итоги и рекомендации

Подведем итог нашему исследованию. Для того чтобы РИБ по организации в БП 3.0 работал корректно, соблюдайте следующий алгоритм:

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

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

← На главную