Ситуация, когда конкретный документ не попадает в очередь на обмен, является классической задачей для разработчика 1С. Часто мы сталкиваемся с тем, что для большинства контрагентов обмен работает штатно, а по одному объекту регистрация изменений упорно не происходит. Давайте разберем по шагам, как выявить причину и заставить данные синхронизироваться. При возникновении сложностей с поиском причин расхождений после завершения синхронизации можно автоматически сравнить бухгалтерские и налоговые проводки между базами 1С.
Первое, что мы должны сделать — это остановить попытки «угадать» причину путем комментирования кода в правилах. Самый надежный путь — это отладка. Не стоит сразу менять конфигурацию, сначала нужно увидеть, как система проходит через механизмы регистрации.
Для начала работы выполните следующие действия:
ПланОбмена фиксирует изменение.Если в правилах регистрации (КД 3.0/2.0) или в коде конфигурации есть специфические обработчики, они могут блокировать запись. Часто разработчики используют Отказ = Истина внутри события ПередОбработкой, как в вашем случае с проверкой наименования договора. Важно помнить: даже если вы закомментировали код, проверьте, не остались ли в кэше старые версии правил или не выполняется ли регистрация через ПодпискиНаСобытия.
Рассмотрим пример кода, который часто встречается в обработчиках и может быть причиной тихой ошибки:
// Пример проверки условий в обработчике регистрации
Если СтрНайти(ВРег(Объект.Договор.Наименование), "НАЛ") > 0 Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если условие не выполняется, но документ всё равно не регистрируется, возможно, объект просто не проходит проверку фильтров самого ПланаОбмена.
Всегда имейте под рукой обработку «Регистрация изменений для обмена данными». Это инструмент «первой помощи». Попробуйте добавить документ в узел вручную через эту обработку. Если после ручного добавления документ успешно уходит при следующем сеансе обмена, значит, проблема стопроцентно кроется в программной логике автоматической регистрации (события при записи, правила регистрации или функциональные опции). Чтобы не запускать процессы вручную, можно автоматизировать регулярный обмен данными между базами 1С по расписанию.
Частая, но скрытая причина — RLS (ограничение прав на уровне записей). Если пользователь, под которым запущена процедура обмена или под которым создается/изменяется документ, не имеет прав на чтение объекта, система может программно запретить запись в регистр сведений обмена. Убедитесь, что для учетной записи обмена доступны все контрагенты и договоры.
Не пренебрегайте Журналом регистрации. Установите отбор по событию Обмен данными и конкретному пользователю или объекту. Иногда там скрываются ошибки исполнения правил, например: «Ошибка при выполнении обработчика: {Обработка.КонвертацияОбъектовДанных...}». Это сразу укажет на место в коде, где происходит сбой.
Для успешного решения задачи рекомендуем придерживаться следующей последовательности:
ПриЗаписи и в обработчиках правил).Помните, что регистрация — это лишь запись в регистр сведений, связанный с узлом. Если запись в него происходит, но данные не передаются, значит, проблема уже на этапе выгрузки, а не регистрации. Если же запись не появляется даже в консоли — значит, код регистрации «молчит» из-за Отказ = Истина или отсутствия срабатывания подписки.