К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как отладить дополнительную обработку в 1С

Как отладить дополнительную (внешнюю) обработку в 1С: настройка конфигуратора, точки останова, отладка фоновых заданий и типичные ошибки разработчиков.

Дополнительные обработки в 1С подключаются через механизм БСП «Дополнительные отчеты и обработки» и выполняются в контексте информационной базы, а не конфигуратора. Из-за этого стандартный приём «поставил точку останова и запустил» часто не срабатывает: код обработки загружается динамически, и отладчик его просто не видит. Проблема решается, но требует правильной настройки.

Есть несколько рабочих способов отладки: открытие обработки напрямую из конфигуратора, подключение отладчика к сеансу, отладка фоновых заданий и временное встраивание обработки в конфигурацию. Выбор зависит от того, как именно запускается обработка — интерактивно пользователем, по расписанию или через команду в форме объекта.

Почему стандартная отладка не срабатывает

Когда дополнительная обработка подключена к базе через справочник «Дополнительные отчеты и обработки», её двоичные данные хранятся в базе, а модуль исполняется в безопасном или обычном режиме в зависимости от настроек. Конфигуратор при этом не знает, какому файлу на диске соответствует исполняемый код, поэтому точки останова, расставленные в исходном файле .epf, игнорируются.

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

Способ 1: открытие обработки напрямую из конфигуратора

Самый простой и предсказуемый метод. Откройте конфигуратор, через меню «Файл — Открыть» загрузите файл обработки .epf. Затем запустите отладку: «Отладка — Начать отладку» или клавиша F5. Конфигуратор запустит клиентское приложение, и уже в нём откройте обработку через «Файл — Открыть» в режиме предприятия.

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

Ограничение метода: обработка запускается вне механизма БСП, поэтому параметры, которые БСП передаёт при подключении (например, идентификатор команды, объекты назначения), придётся эмулировать вручную — например, временно прописать тестовые значения в коде.

Порядок действий
  1. 1
    Откройте файл .epf в конфигураторе через меню «Файл — Открыть»
  2. 2
    Расставьте точки останова в нужных процедурах модуля
  3. 3
    Нажмите F5 — запустится клиентское приложение под отладкой
  4. 4
    В режиме предприятия откройте ту же обработку через «Файл — Открыть»
  5. 5
    Выполните действие, которое должно привести к точке останова
  6. 6
    Проверьте значения переменных через табло или вычисление выражений

Способ 2: подключение отладчика к работающему сеансу

Если обработку нужно отладить именно в том виде, в каком её запускают пользователи (через подключение в БСП), используйте подключение отладчика к активному сеансу. Запустите клиентское приложение обычным способом, затем в конфигураторе откройте «Отладка — Подключение» и выберите нужный сеанс из списка.

Предварительно проверьте, что в свойствах информационной базы (или в параметрах запуска клиента) разрешена отладка. Для тонкого клиента в параметрах запуска должен быть указан режим отладки, а для серверной базы — отладка должна быть включена на сервере 1С (флаг -debug при запуске агента сервера).

После подключения откройте в конфигураторе файл обработки и расставьте точки останова. Учтите: если исполняемый в базе код отличается от версии файла на диске, точки могут «уехать» или не сработать. Всегда синхронизируйте версию файла с версией, загруженной в справочник дополнительных обработок.

Настройка отладки серверных вызовов и фоновых заданий

Многие команды дополнительных обработок БСП выполняет в фоновом задании — это стандартное поведение для длительных операций. Чтобы отладчик останавливался внутри такого кода, откройте в конфигураторе «Отладка — Подключение» и в настройках отметьте автоматическое подключение к фоновым заданиям.

Также проверьте общие настройки: «Сервис — Параметры — Отладка». Там должны быть включены нужные типы соединений — клиентские, серверные, фоновые задания. Если какой-то тип не отмечен, отладчик просто не увидит соответствующий контекст выполнения.

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

Способ 3: временное встраивание в конфигурацию

Когда логика обработки сложная и её нужно прогонять многократно, удобно временно добавить обработку в конфигурацию как обычный объект: «Конфигурация — Открыть конфигурацию», затем добавить внешнюю обработку через контекстное меню ветки «Обработки». Код при этом становится частью метаданных, и отладка работает без каких-либо ограничений.

После завершения отладки объект удаляется из конфигурации, а изменения переносятся обратно во внешний файл. Этот способ требует возможности изменения конфигурации, поэтому на типовых конфигурациях на поддержке используйте копию базы.

Практические приёмы, ускоряющие отладку

Если точка останова недостижима или код выполняется в неудобном контексте, используйте вспомогательные приёмы. Команда «Сообщить()» с выводом ключевых переменных позволяет отследить логику без остановки выполнения — полезно на рабочей базе, где останавливать сеанс нельзя.

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

Полезно также логировать выполнение в журнал регистрации через «ЗаписьЖурналаРегистрации» — так вы получите историю выполнения обработки у пользователей и сможете воспроизвести проблему локально.

Типичные ошибки
01
Точки останова расставлены в файле, который отличается от загруженного в базу — отладчик не останавливается
02
Не включено автоподключение к фоновым заданиям — серверный код выполняется мимо отладчика
03
Отладка ведётся на рабочей базе — остановка сеанса блокирует работу пользователей
04
Не эмулированы параметры БСП при запуске файла напрямую — обработка падает до нужного места
05
На сервере не включён режим -debug — серверные вызовы недоступны для отладки

Проверка результата после исправления

После правки кода обновите файл обработки в справочнике дополнительных обработок: откройте карточку элемента, загрузите новую версию файла и проверьте, что версия в карточке изменилась. Затем выполните команду обработки в том же сценарии, где возникала ошибка.

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

Контрольные точки

Как проверить результат

Срабатывание точки останова
Норма

Отладчик останавливается в нужной строке модуля обработки

Тревожный признак

Выполнение проходит мимо — версии файла и базы не совпадают или код в другом контексте

Выполнение под пользователем
Норма

Обработка завершается без ошибок прав доступа

Тревожный признак

Ошибка «Нарушение прав доступа» — нужно доработать права или привилегированный режим

Фоновое выполнение
Норма

Задание завершается, результат виден пользователю

Тревожный признак

Задание зависает или падает — смотрите журнал регистрации

Частые вопросы по отладке обработок

Почему точка останова не срабатывает, хотя код точно выполняется?

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

Можно ли отладить обработку на рабочей базе без риска?

Можно, но с осторожностью. Остановка выполнения в точке останова блокирует сеанс, а если это фоновое задание — может задержать регламентные операции. Безопасный вариант — отладка через «Сообщить()» и запись в журнал регистрации, либо работа на копии базы. Никогда не отлаживайте код, изменяющий данные, на продуктивной базе без резервной копии.

Как отладить обработку заполнения табличной части документа?

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

Что делать, если обработка работает в безопасном режиме?

В безопасном режиме ограничены операции с файловой системой, COM-объектами и внешними компонентами, но отладка сама по себе не блокируется. Если обработка падает именно из-за безопасного режима, проверьте в карточке дополнительной обработки настройки разрешений и профиля безопасности — для отладки можно временно отключить безопасный режим на тестовой базе.

Как отладить регламентную обработку, запускаемую по расписанию?

Включите автоматическое подключение отладчика к фоновым заданиям и либо дождитесь запуска по расписанию, либо инициируйте выполнение вручную через консоль заданий. Альтернатива — временно вызвать экспортную процедуру обработки из обычного интерактивного сеанса, передав тестовые параметры.

Итог

Что важно запомнить

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