Рассмотрим ситуацию, когда необходимо исправить ошибки во внешней обработке, доставшейся "по наследству", или разобраться, почему код перестает работать после обновления конфигурации. Часто бывает так, что стандартные действия не приводят к остановке на точках прерывания. Разберем подробно основные методы отладки, нюансы клиент-серверной архитектуры и альтернативные подходы.
В самом простом случае, когда мы работаем с файловой базой или когда код выполняется на клиенте, алгоритм действий выглядит следующим образом:
Если код выполняется на клиенте, программа остановится. Однако, если обработка выполняет действия с документами (например, перевыставляет счета), основной код скорее всего находится в модуле объекта и выполняется на сервере. Здесь возникают нюансы.
Если мы ставим точку останова, а программа её "проскакивает", в первую очередь проанализируем настройки сервера. В клиент-серверном варианте работы (SQL) служба сервера 1С должна быть запущена со специальным ключом.
Проверим следующие моменты:
-debug. Если этого ключа нет, серверный код (модули объектов, общие модули, модуль менеджера) отлаживаться не будет.-debug не активен или используются нестандартные порты.Часто длительные операции (как массовое перевыставление счетов) выносятся в фоновые задания, чтобы не блокировать интерфейс пользователя. Стандартная отладка их не перехватывает.
Чтобы "поймать" выполнение кода в фоне, выполним настройку:
Теперь при запуске обработки отладчик сможет остановиться внутри фонового процесса.
Если обработка подключена через подсистему "Дополнительные отчеты и обработки" (БСП), она по умолчанию запускается в Безопасном режиме. В этом режиме отладка часто недоступна, а некоторые серверные вызовы блокируются.
Рекомендуем действовать так:
Современный и более удобный подход к отладке и доработке — это использование расширений конфигурации. Вместо того чтобы постоянно сохранять и открывать внешний файл, добавим обработку в расширение.
Преимущества этого метода:
Если нет возможности перезагрузить сервер с ключом отладки или мы не "сильны в программировании" для сложной настройки среды, используем логирование. Внедрим в код команду записи в журнал регистрации, чтобы отследить ход выполнения и значения переменных.
Пример кода, который можно вставить в проблемные места:
// Записываем в журнал текущий этап и значение переменной
ЗаписьЖурналаРегистрации("ОтладкаОбработки",
УровеньЖурналаРегистрации.Информация, , ,
"Обрабатываем счет: " + Строка(СсылкаНаСчет) + ". Сумма: " + Строка(СуммаДокумента));
После выполнения обработки проанализируем Журнал регистрации в режиме Предприятия. Это позволит увидеть, на каком документе происходит сбой или где логика программы сворачивает "не туда".
Также упомянем, что существуют готовые инструменты для разработчиков (например, подсистемы "Инструменты разработчика" или специальные обработки с Инфостарта), которые позволяют отлаживать код "на лету", выполняя произвольные алгоритмы в контексте приложения. Это может быть полезно для быстрой проверки гипотез без изменения кода основной обработки.
Если обработка не работает: