При сопровождении и доработке нетиповых конфигураций 1С, особенно работающих на базе Библиотеки Стандартных Подсистем (БСП), разработчики часто сталкиваются с проблемой: новые добавленные объекты (документы, справочники) не мигрируют в узлы распределенной информационной базы (РИБ). При этом в конфигураторе для этих объектов может быть включена стандартная авторегистрация в плане обмена, но при выполнении обмена данные всё равно игнорируются платформой.
В этой статье мы подробно разберем, почему стандартная авторегистрация платформы 1С "не дружит" с современными конфигурациями на БСП, выясним причину такого поведения и пошагово настроим корректную регистрацию изменений для новых объектов на примере конфигурации «Бухгалтерия предприятия 3.0».
Проанализируем классическую ситуацию. Разработчик добавляет новый документ в конфигурацию, включает его в состав плана обмена (например, Полный) и устанавливает для него режим авторегистрации в положение Разрешить. На первый взгляд, всё сделано правильно: платформа должна автоматически регистрировать изменения документа при его записи и передавать их в подчиненные узлы.
Однако в конфигурациях на БСП этот сценарий не работает по следующим причинам:
Таким образом, когда мы просто включаем авторегистрацию в плане обмена, БСП игнорирует этот флаг, поскольку вся регистрация в коде завязана на обработку событий записи объектов через подписки.
Выяснив причину, перейдем к исправлению конфигурации. Начнем с настройки плана обмена в конфигураторе.
Откроем свойства нашего плана обмена (например, Полный или ПоОрганизациям), перейдем на вкладку Состав. Найдем наш добавленный объект и в колонке Авторегистрация принудительно установим значение Запретить. Это обязательный шаг, который предотвратит неконтролируемое поведение платформы при обмене.
Для того чтобы БСП "увидела" изменения нашего объекта при его записи, его необходимо добавить в качестве источника в соответствующую подписку на события. Рассмотрим подробнее основные подписки, используемые в БСП для регистрации изменений:
ПолныйРегистрацияДокумента или ОбменДаннымиРегистрацияДокумента (в зависимости от используемого плана обмена).ПолныйРегистрацияСправочника или ОбменДаннымиРегистрацияСправочника.ОбменДаннымиРегистрацияРегистраСведений.Разберем по шагам, как добавить наш документ в подписку:
ПолныйРегистрацияДокумента (для РИБ с полным обменом).При записи документа теперь будет срабатывать общий обработчик подписки, который передаст управление механизмам БСП. Ниже приведен пример того, как выглядит типовой обработчик регистрации изменений в общем модуле:
Процедура ОбменДаннымиСобытия.МеханизмРегистрацииОбъектовПередЗаписьюДокумента(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Программная регистрация изменений средствами БСП
ОбменДаннымиСобытия.ЗарегистрироватьИзменениеОбъекта(Источник);
КонецПроцедуры
Подписки на события лишь отправляют объект на анализ механизмам БСП, но само решение о регистрации принимается на основе Правил регистрации объектов (ПРО). Эти правила создаются во внешней базе "Конвертация данных" (редакция 2 или 3) и загружаются в конфигурацию.
Если для вашего плана обмена настроена фильтрация данных (например, передавать документы только по определенным организациям), вам необходимо:
MD83Exp.epf.Часто разработчики выполняют все действия в конфигураторе, обновляют базу данных, но обмены по-прежнему игнорируют новые объекты. Выясним причину этой неочевидной проблемы.
Дело в том, что БСП кэширует структуру метаданных и правила регистрации в специальных регистрах сведений (например, в регистре ПравилаРегистрацииОбъектов). При обновлении конфигурации кэш может не обновиться автоматически.
Чтобы сбросить кэш и принудительно применить новые правила, выполним следующие действия в режиме "1С:Предприятие":
ПравилаРегистрацииОбъектов, после чего запустить обновление информационной базы программно.Мы проанализировали особенности работы механизма регистрации изменений в конфигурациях на платформе 1С, использующих БСП. Для того чтобы гарантировать успешную миграцию новых объектов в РИБ, используйте следующий проверенный алгоритм:
Соблюдение этих простых правил убережет вас от труднодиагностируемых ошибок и обеспечит стабильную и быструю работу распределенной информационной базы.