Почему не срабатывает точка останова при отладке синхронизации данных в 1С:КА 2 и как ее поймать?

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

При разработке и сопровождении механизмов обмена данными между конфигурациями 1С, в частности 1С:Комплексная автоматизация 2, разработчики часто сталкиваются с ситуацией, когда точка останова в типовом модуле менеджера обмена не срабатывает. При этом в настройках подключения конфигуратора включены фоновые задания, сервер 1С запущен с ключом отладки -debug, а сам процесс синхронизации на стороне базы запускается. Разберем подробно, почему это происходит и какие шаги необходимо предпринять для успешного перехвата выполнения кода.

1. Использование замера производительности для локализации кода

Когда точка останова упорно игнорируется, первым и наиболее эффективным диагностическим инструментом выступает Замер производительности. Он позволяет точно зафиксировать, какие именно процедуры и общие модули фактически выполнялись сервером в рамках процесса обмена.

Проанализируем порядок действий при диагностике:

  1. Открываем конфигуратор базы-источника или базы-приемника.
  2. Запускаем замер производительности через главное меню Отладка → Замер производительности.
  3. В режиме 1С:Предприятие запускаем синхронизацию данных (или выполнение сопоставления/выгрузки).
  4. После завершения процесса останавливаем замер производительности и сортируем строки по количеству вызовов или времени выполнения.

Посмотрим на результат: в замере мы увидим стек вызовов и реальный общий модуль, который обрабатывал данные. Очень часто оказывается, что выполнение пошло совершенно по другой ветке логики или в другом модуле, отличном от ожидаемого.

2. Проверка параметра «РежимОтладки» и отключение фонового выполнения

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

Выясним, как работает этот механизм:

  1. В дополнительных параметрах подключения узла обмена или в коде инициализации структуры параметров синхронизации передается свойство РежимОтладки со значением Истина.
  2. При включенном режиме отладки подсистема БСП не создает отдельное фоновое задание, а выполняет выгрузку или загрузку прямо в текущем сеансе 1С:Предприятие.
  3. В этом случае отладчику не требуется перехватывать сторонние серверные потоки — остановка произойдет в основном клиент-серверном контексте запущенного сеанса.

Рассмотрим пример установки параметров отладки при программном вызове процедур обмена:


ПараметрыОбмена = Новый Структура;
ПараметрыОбмена.Вставить("РежимОтладки", Истина);
ПараметрыОбмена.Вставить("ВыгрузкаВФайл", Истина);
ПараметрыОбмена.Вставить("УзелИнформационнойБазы", УзелОбмена);

ОбменДаннымиСервер.ВыполнитьВыгрузкуДанных(ПараметрыОбмена);

3. Версионирование модулей формата EnterpriseData

При обмене через универсальный формат (EnterpriseData) логика конвертации объектов распределена по нескольким общим модулям в зависимости от используемой версии формата. Разработчик часто устанавливает точку останова в базовом модуле МенеджерОбменаЧерезУниверсальныйФормат, однако реальный вызов туда не доходит.

Разберем структуру версионных модулей:

  1. В конфигурации присутствуют специализированные модули под конкретные версии схемы обмена, например, МенеджерОбменаЧерезУниверсальныйФормат_1_6, МенеджерОбменаЧерезУниверсальныйФормат_1_10, МенеджерОбменаЧерезУниверсальныйФормат_1_13.
  2. Переопределяемая логика и алгоритмы постобработки выносятся в модуль МенеджерОбменаЧерезУниверсальныйФорматПереопределяемый.
  3. Если для узла обмена в режиме пользователя загружены внешние правила (из файла или регистра сведений), алгоритмы конвертации компилируются динамически через выполнение строковых алгоритмов, минуя типовые общие модули.

Для гарантированного попадания в точку останова необходимо проверить версию формата, выбранную в настройках узла плана обмена, и установить точку останова внутри соответствующего версионного модуля.

4. Проверка контекста подключения и типа транспорта

Если синхронизация между базами 1С:КА 2 настроена через прямое подключение (веб-сервис или COM-соединение), контекст выполнения кода в базе-приемнике меняется:

  1. Сеансы веб-сервисов и HTTP-сервисов: Вызовы базы-приемника обрабатываются веб-сервисом. В окне конфигуратора Отладка → Подключение → Настройка автоматического подключения обязательно должны быть установлены флажки Веб-сервисы и HTTP-сервисы. Обычного флага Фоновые задания в этом случае недостаточно.
  2. Пользовательские фильтры: Если в конфигураторе настроен фильтр по имени конкретного пользователя, сеансы системных пользователей или регламентных заданий веб-сервиса будут отсечены. На время отладки рекомендуется очистить фильтр по пользователям.
  3. Кластер серверов с несколькими рабочими процессами (rphost): Если на сервере 1С запущено несколько процессов rphost, сеанс обмена может стартовать в процессе, к которому конфигуратор еще не подключен. Рекомендуется использовать отладку по протоколу HTTP (через единый сервис dbgs) либо временно оставить в кластере один рабочий процесс.

5. Альтернативные способы отладки обмена EnterpriseData

Если сетевой транспорт или фоновые процессы создают сложности при локализации ошибки, рассмотрим надежные альтернативные методики:

  1. Типовая обработка «Выгрузка и загрузка данных EnterpriseData»: Позволяет вручную выгрузить данные узла в XML-файл или загрузить готовое сообщение напрямую из интерактивного клиентского сеанса. Это полностью исключает влияние фоновых заданий и сервисов транспорта, позволяя пошагово отладить обработку каждого реквизита.
  2. Подключение внешней обработки с модулем менеджера: Для ускорения разработки логику менеджера выгрузки можно перенести в модуль объекта внешней обработки и подключить её через типовые настройки БСП (отладка правил обмена). Это избавляет от необходимости постоянно обновлять конфигурацию базы данных при корректировке правил конвертации.

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

← На главную