При разработке собственных механизмов интеграции на платформе «1С:Предприятие 8» программисты часто сталкиваются с необходимостью создания новых планов обмена. Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), процесс добавления нового плана обмена строго регламентирован. Любое отклонение от стандартов БСП может привести к критическим ошибкам, из-за которых система откажется запускаться даже в режиме «Предприятие».
В этой статье мы подробно разберем одну из самых распространенных ошибок разработчиков при добавлении нового плана обмена: Метод объекта не обнаружен (ПриПолученииНастроек). Мы выясним причины ее возникновения, пошагово устраним неисправность и рассмотрим сопутствующие настройки, необходимые для того, чтобы ваш новый план обмена работал стабильно и без сбоев.
Давайте проанализируем ситуацию. Ошибка обычно проявляется в виде следующего системного сообщения:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(8825)}: Метод объекта не обнаружен (ПриПолученииНастроек)
ПланыОбмена[ИмяПланаОбмена].ПриПолученииНастроек(НастройкиПланаОбмена);
Эта ошибка возникает в тот момент, когда подсистема обмена данными БСП пытается инициализировать настройки для вашего нового плана обмена. Когда вы регистрируете свой план обмена в подсистеме (например, добавляя строку ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ИмяВашегоПланаОбмена) в общем модуле ОбменДаннымиПереопределяемый), ядро БСП автоматически включает его в контур мониторинга.
При запуске системы, открытии формы настроек синхронизации или в процессе самого обмена общий модуль БСП ОбменДаннымиСервер пытается динамически обратиться к модулю менеджера вашего плана обмена и вызвать из него экспортную процедуру ПриПолученииНастроек. Если эта процедура отсутствует, не объявлена как экспортная или ошибочно помещена в модуль объекта вместо модуля менеджера, платформа генерирует исключение, полностью блокируя дальнейшую работу.
Важное примечание: Иногда данная ошибка может проявляться на полностью типовых конфигурациях (1С:ERP, 1С:Комплексная автоматизация или 1С:Управление нашей фирмой) после обновления. Это происходит, если разработчики фирмы «1С» добавили в поставку новый служебный план обмена, но забыли описать необходимый метод в его модуле менеджера. Способ устранения в обоих случаях идентичен.
---
Для решения проблемы нам необходимо предоставить БСП ожидаемый интерфейс. Откроем конфигуратор, найдем наш новый план обмена и перейдем в его Модуль менеджера (обратите внимание, именно в модуль менеджера, а не модуль объекта!).
Добавим в модуль менеджера следующий шаблон экспортной процедуры:
#Область ПрограммныйИнтерфейс
// Заполняет настройки, влияющие на использование плана обмена подсистемой БСП.
//
// Параметры:
// Настройки - Структура - настройки плана обмена по умолчанию.
// См. описание возвращаемого значения функции
// ОбменДаннымиСервер.НастройкиПланаОбменаПоУмолчанию().
//
Процедура ПриПолученииНастроек(Настройки) Экспорт
// Здесь при необходимости переопределяются стандартные настройки БСП.
// Если специфических настроек нет, процедуру можно оставить пустой.
КонецПроцедуры
#КонецОбласти
Даже если вам не нужно переопределять стандартное поведение БСП для данного обмена, эта процедура обязательно должна присутствовать в модуле менеджера и иметь ключевое слово Экспорт. Пустая процедура просто вернет настройки по умолчанию, что позволит системе успешно пройти инициализацию.
---
Разберем подробнее, какие именно настройки мы можем переопределить в процедуре ПриПолученииНастроек. Это позволит нам тоньше управлять поведением обмена данными. Через входящий параметр Настройки (который является структурой) мы можем задать следующие свойства:
Настройки.ПравилаРегистрацииВМенеджере = Истина;
Настройки.ИмяМенеджераРегистрации = "ИмяВашегоОбщегоМодуляРегистрации";
Настройки.Глобальный = Истина;
// Пример отключения отправки по электронной почте для данного плана обмена
Настройки.ДоступныеТранспортыДанных.Удалить("Email");
---
Одной лишь вставки процедуры ПриПолученииНастроек в модуль менеджера часто бывает недостаточно для полноценной работы обмена в экосистеме БСП. Чтобы ваш новый план обмена функционировал стабильно, выполните следующие обязательные шаги:
В свойствах вашего плана обмена перейдите на вкладку «Состав». Убедитесь, что в состав включен регистр сведений СоответствияОбъектовИнформационныхБаз. Этот регистр используется БСП для сопоставления ссылок между различными базами данных. Если его не включить, при первой же синхронизации вы получите ошибку записи соответствий.
Для всех объектов, которые вы включаете в состав плана обмена, настоятельно рекомендуется устанавливать свойство «Авторегистрация» в значение «Запретить». Дело в том, что БСП управляет регистрацией изменений программно через подписки на события. Ручная авторегистрация платформы может конфликтовать с механизмами БСП, вызывая избыточную регистрацию документов и справочников, что приведет к замедлению работы системы.
Если ваш обмен будет использовать правила конвертации данных (особенно актуально для интеграций на КД 2.1), БСП требует наличия определенных макетов непосредственно в самом плане обмена. Даже если в будущем вы планируете загружать правила из внешних файлов, создайте в плане обмена три макета с типом «Текстовый документ» со следующими точными именами:
ПравилаОбмена — правила конвертации для текущей информационной базы.ПравилаОбменаКорреспондента — правила конвертации для принимающей стороны.ПравилаРегистрации — правила, определяющие, какие именно объекты должны регистрироваться к отправке при их изменении.Чтобы пользователи могли настраивать синхронизацию через стандартный интерфейс БСП, ваш новый план обмена должен быть включен в типы параметров следующих общих команд конфигурации:
СинхронизацияДанныхСинхронизацияДанныхСПараметрамиДля этого найдите указанные команды в дереве метаданных конфигуратора, откройте их свойства и в поле «Тип параметра команды» отметьте галочкой ваш новый план обмена.
---
Если вы добавляете новый план обмена не напрямую в основную конфигурацию, а через расширение, вам следует учитывать важный нюанс. Стандартный метод регистрации новых планов обмена через переопределяемый модуль ОбменДаннымиПереопределяемый.ПолучитьПланыОбмена может работать некорректно в расширениях при обновлении базы данных (расширения инициализируются позже основных модулей).
В этом случае безопаснее и надежнее осуществлять переопределение списка планов обмена БСП через функцию СписокПлановОбменаБСП в общем модуле ОбменДаннымиПовтИсп, предварительно перенеся его в ваше расширение с вызовом метода &Вместо или &После.
Соблюдение этих простых правил и обязательное наличие процедуры ПриПолученииНастроек в модуле менеджера гарантируют корректную интеграцию вашего нового плана обмена в общую экосистему конфигурации 1С и избавят вас от неприятных системных ошибок на этапе запуска предприятия.