Проблема, при которой изменения в объектах, в частности в регистре сведений Штрихкоды, не попадают в таблицу изменений плана обмена, является достаточно распространенной в архитектуре РИБ. Когда база данных перестает «видеть» изменения, необходимо провести пошаговую диагностику механизмов регистрации.
Первым делом необходимо проанализировать ПодпискиНаСобытия, которые срабатывают при записи объектов. В конфигурациях 1С часто используются подписки для автоматической регистрации изменений. Разберем, на что стоит обратить внимание:
ЗарегистрироватьИзменения....Отказ = Истина при выполнении определенных условий. Если условие срабатывает, регистрация изменений для данного объекта будет заблокирована.Для корректной работы механизмов РИБ в 1С:Управление торговлей 10.3 критически важно состояние настроек параметров учета. Одной из возможных причин отсутствия регистрации является неверное заполнение константы Префикс внутреннего ш/к.
В РИБ-узлах наличие нулевого значения или отсутствие префикса может приводить к тому, что платформа не считает объект требующим синхронизации, так как он воспринимается как «локальный» или системный. Убедитесь, что префикс задан корректно в соответствии с настройками узла обмена.
Иногда при обновлении конфигурации или внесении изменений в метаданные регистр сведений Штрихкоды может быть исключен из состава плана обмена. Выполните следующие действия:
ПланОбмена.Штрихкоды присутствует в списке.Авторегистрация. Если оно установлено в значение Запретить, то изменения в объект не будут записываться автоматически, даже если он включен в состав плана. Установите значение Разрешить или Авто.Если штрихкоды создаются программно или через нестандартные формы, возможна ситуация, когда запись происходит в контексте, где отключен обмен данными. Рассмотрим пример кода, который может подавлять регистрацию:
// В коде часто встречается установка флага ОбменДанными.Загрузка
Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();
Когда свойство ОбменДанными.Загрузка установлено в Истина, механизм платформы осознанно игнорирует регистрацию изменений в планы обмена. Проверьте весь код, который отвечает за создание записей в регистре, на наличие подобных конструкций.
Если на пустой базе проблема не воспроизводится, велика вероятность повреждения таблиц регистрации изменений (_ChangeR...) в основной базе. Выполните следующие шаги для восстановления:
Реструктуризация таблиц и Проверка логической целостности.Чтобы точно определить, на каком этапе происходит сбой, установите точку останова в модуль записи регистра сведений Штрихкоды. Проанализируйте, вызывается ли процедура ПриЗаписи. Если событие вызывается, проверьте доступность объекта ПланОбменаОбъект и состояние параметров сеанса. В некоторых случаях права доступа (RLS) могут блокировать запись в регистры обмена для определенных ролей пользователей, что также стоит проверить в конфигураторе.
Если после всех предпринятых мер изменения по-прежнему не появляются в таблицах регистрации, рекомендуется выполнить выгрузку и загрузку данных через dt-файл, что иногда помогает пересобрать структуру индексов таблиц изменений 1С.