Почему падает загрузка данных в Бухгалтерию 3.0 с ошибкой метода ПланыОбмена.ИзменениеЗарегистрировано?

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

При организации обмена между конфигурациями (например, при переносе документов из УПП 1.3 в Бухгалтерию предприятия 3.0) разработчики нередко сталкиваются с ситуацией: тестовый перенос одного типа документов проходит успешно, но при добавлении в правила новых видов документов загрузка в базу-приемник аварийно завершается. В отладчике на строке проверки коллизий возникает исключение вида Есть Коллизия = ПланыОбмена.ИзменениеЗарегистрировано(Отправитель, Элемент Данных) <Ошибка получения представления значения>. Разберем детально, почему это происходит и как исправить ошибку.

Причины возникновения ошибки

Проанализируем механику работы платформы и механизмов БСП (Библиотеки стандартных подсистем) при обработке входящих сообщений обмена:

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

Пошаговое решение проблемы

Разберем по шагам, какие действия необходимо выполнить для восстановления корректной загрузки данных.

  1. Включение объектов в состав плана обмена в Конфигураторе:

    Откроем конфигурацию базы-приемника (Бухгалтерия предприятия 3.0), найдем используемый план обмена и перейдем на вкладку Состав. Убедимся, что для всех переносимых типов документов проставлены флаги включения. Если обмен односторонний и исходящая выгрузка этих документов из Бухгалтерии не планируется, для свойства Авторегистрация можно выбрать значение Запретить. Главное требование — сам объект метаданных обязан присутствовать в составе плана обмена.

  2. Синхронизация правил регистрации и состава плана обмена:

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

  3. Регистрация плана обмена в подсистеме БСП:

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

    
    Процедура ПолучитьПланыОбмена(ПланыОбмена) Экспорт
        ПланыОбмена.Добавить(Метаданные.ПланыОбмена.НашКастомныйПланОбмена);
    КонецПроцедуры
    

    Это обеспечит корректную инициализацию механизмов обмена данными и версионирования для нового узла.

  4. Очистка кэша и обновление служебных данных:

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

  5. Корректировка версионирования объектов (альтернативный способ):

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

Таким образом, для устранения ошибки достаточно синхронизировать состав плана обмена в конфигурации с перечнем всех загружаемых видов документов и корректно инициализировать параметры обмена в базе-приемнике.

← На главную