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

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

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

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

В чем кроется причина проблемы? Разбор механизмов БСП

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

Однако в конфигурациях на БСП этот сценарий не работает по следующим причинам:

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

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

Шаг 1. Отключение авторегистрации в конфигураторе

Выяснив причину, перейдем к исправлению конфигурации. Начнем с настройки плана обмена в конфигураторе.

Откроем свойства нашего плана обмена (например, Полный или ПоОрганизациям), перейдем на вкладку Состав. Найдем наш добавленный объект и в колонке Авторегистрация принудительно установим значение Запретить. Это обязательный шаг, который предотвратит неконтролируемое поведение платформы при обмене.

Шаг 2. Настройка подписок на события

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

Разберем по шагам, как добавить наш документ в подписку:

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

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


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

Шаг 3. Изменение правил регистрации объектов (ПРО)

Подписки на события лишь отправляют объект на анализ механизмам БСП, но само решение о регистрации принимается на основе Правил регистрации объектов (ПРО). Эти правила создаются во внешней базе "Конвертация данных" (редакция 2 или 3) и загружаются в конфигурацию.

Если для вашего плана обмена настроена фильтрация данных (например, передавать документы только по определенным организациям), вам необходимо:

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

Шаг 4. Борьба с кэшированием правил в режиме "1С:Предприятие"

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

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

Чтобы сбросить кэш и принудительно применить новые правила, выполним следующие действия в режиме "1С:Предприятие":

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

Резюме и чеклист для разработчика

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

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

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

← На главную