При настройке или доработке нетиповых обменов (например, между 1С:Управление торговлей 10 и 1С:Бухгалтерия предприятия 3) разработчики часто сталкиваются со специфическими ошибками подсистемы Конвертации данных. Одна из самых распространенных и сбивающих с толку — это ошибка инициализации обработчиков событий, которая выглядит следующим образом:
Ошибка в обработчике события ПередОбработкойВыгрузки группы свойств
ПКО = СчетНаОплатуПокупателю (Документ: Заказ покупателя)
ПКГС = 47 (--> Товары)
Объект = Заказ покупателя КР000000121 от 31.01.2021 23:59:59
Обработчик = ПередОбработкойВыгрузкиГруппыСвойств
ОписаниеОшибки = Метод объекта не обнаружен (ПКГС_СчетНаОплатуПокупателю_Товары_ПередОбработкойВыгрузки_47_22)
Часто проблема проявляется так: вы добавляете даже самую простую строку кода в событие «Перед обработкой» для группы свойств (например, КоллекцияОбъектов = Источник.Товары.Выгрузить();), и обмен моментально обрывается с сообщением о том, что метод объекта не обнаружен. Проанализируем эту ситуацию подробно и выясним причину такого поведения платформы 1С.
Внимательно посмотрим на текст ошибки. В нем кроется главная подсказка к пониманию проблемы:
ПКО = СчетНаОплатуПокупателю (Документ: Заказ покупателя)
Система прямым текстом говорит нам: в качестве входящего объекта (источника) на вход поступил документ ЗаказПокупателя, но обрабатывается он почему-то по правилу конвертации СчетНаОплатуПокупателю. Рассмотрим, почему это происходит и чем грозит:
СчетНаОплатуПокупателю, система отправит туда любой документ, который пользователи укажут в базе. Если пользователи начали создавать документы на основании Заказов, а не Счетов, платформа передаст Заказ в правило для Счета.СчетНаОплатуПокупателю ожидает на входе реквизиты и табличные части, присущие именно Счету. Однако на вход приходит Заказ. Если вы в обработчике пытаетесь обратиться к полям, которых нет у Заказа, или платформа автоматически пытается обойти коллекцию свойств, возникает критический сбой на этапе инициализации параметров.В Конвертации данных 2.1 (и особенно при работе в современных конфигурациях с использованием БСП) код, который вы пишете в событиях, не выполняется «на лету» как строка через функцию платформы Выполнить(). Для ускорения работы обмена весь ваш код собирается в единый текстовый модуль, который затем оформляется как внешняя обработка.
Разберем по шагам механизм вызова:
ПКГС_СчетНаОплатуПокупателю_Товары_ПередОбработкойВыгрузки_47_22.ПКГС_СчетНаОплатуПокупателю_Товары..., пойдет искать её во внешней обработке, не найдет (так как там старый код) и выдаст ошибку «Метод объекта не обнаружен».Рассмотрим еще один важный технический нюанс. Внешняя обработка или сгенерированный модуль компилируются платформой 1С целиком. Если в каком-то другом правиле конвертации, даже совершенно не связанном с документами продаж, вы допустили синтаксическую ошибку (забыли точку с запятой, не закрыли скобку, опечатались в переменной), то весь модуль не сможет пройти компиляцию при загрузке.
В результате платформа 1С просто не сможет инициализировать этот модуль в оперативной памяти, и любой вызов любого обработчика из него будет завершаться ошибкой об отсутствии метода объекта.
Если вы загружаете сами правила в план обмена и при этом конфигурация не выдает никаких ошибок («При загрузке самих правил никаких ошибок не выдает»), это еще не значит, что обмен будет идти по новым правилам. Типовые механизмы БСП (Библиотеки стандартных подсистем) кэшируют прочитанные XML-правила в регистрах сведений для ускорения фоновых заданий.
Старый кэш мог просто не очиститься, из-за чего механизм обмена пытается выполнить старую логику.
Чтобы гарантированно устранить ошибку «Метод объекта не обнаружен», выполним следующие шаги:
ЗаказПокупателя уходит в правило СчетНаОплатуПокупателю. Найдите все Правила Выгрузки Данных (ПВД) и свойства (ПКС), где может выгружаться Заказ. Если Заказ должен конвертироваться в Счет, убедитесь, что в событии «Перед выгрузкой» вы правильно заполняете ВходящиеДанные, или создайте отдельное правило конвертации специально для трансформации Заказа в Счет с совпадающей структурой..epf)..epf в Конфигураторе 1С. Зайдите в модуль объекта и нажмите кнопку синтаксического контроля. Платформа сразу покажет вам, собирается ли модуль, нет ли грубых опечаток (например, «битых» правил, как упоминалось разработчиками), и существует ли физически в коде функция ПКГС_СчетНаОплатуПокупателю_Товары_ПередОбработкойВыгрузки_47_22.Используя комплексный подход: проверку логики сопоставления типов и жесткий контроль компиляции модуля обработчиков, вы легко найдете источник проблемы и восстановите работоспособность обмена между базами 1С.