Как поставить точку остановки и отладить внешнюю обработку в форме списка документов 1С

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

Разработка внешних обработок в среде 1С:Предприятие 8.3 — это стандартная задача для расширения функционала типовых конфигураций, таких как «Бухгалтерия предприятия 3.0». Однако программисты часто сталкиваются с проблемой: точка остановки, поставленная в модуле внешней обработки, не срабатывает при запуске через механизм «Дополнительные отчеты и обработки». Это происходит потому, что система динамически сохраняет файл обработки во временное хранилище, и конфигуратор «теряет» связь между открытым у вас файлом .epf и тем кодом, который фактически исполняется в сеансе.

В этой статье мы разберем несколько эффективных способов, которые позволят вам проанализировать содержимое переменных (например, массив выделенных документов ПараметрыКоманды) и успешно выполнить отладку кода.

Способ 1: Использование «прокладки» в виде общего модуля

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

Выберем какой-нибудь общий модуль, который редко меняется или просто поставляется в типовой конфигурации. Например, для «Бухгалтерии 3.0» можно использовать модули подсистемы зарплаты или любые другие доступные. В коде вашей внешней обработки (например, в процедуре ВыполнитьКоманду) добавим временную строку:


// Временный вызов для входа в режим отладки
ЗарплатаИКадры.ИспользоватьСтатьиФинансированияЗарплата(); 

Пошаговый алгоритм действий:

  1. Откроем конфигуратор и найдем общий модуль ЗарплатаИКадры.
  2. Найдем в нем функцию ИспользоватьСтатьиФинансированияЗарплата и поставим внутри нее точку остановки.
  3. Запустим 1С:Предприятие и вызовем нашу внешнюю обработку из формы списка документов.
  4. Когда выполнение дойдет до указанной строки, система переключит нас в конфигуратор на точку остановки в общем модуле.
  5. Теперь самое важное: нажмем клавишу F11 (Шагнуть в) или Shift+F11 (Шагнуть из), чтобы вернуться в стек вызовов вашей внешней обработки. Теперь мы можем просматривать значения переменных через табло (Shift+F9).

Способ 2: Создание отладочной формы внутри обработки

Разберем еще один надежный метод. Часто обработка пишется для работы с параметрами, которые передает БСП (Библиотека стандартных подсистем) — это структура ПараметрыВыполненияКоманды. При открытии через «Файл — Открыть» эти параметры не заполняются, что вызывает ошибки. Чтобы обойти это, создадим в обработке вспомогательную форму.

Рассмотрим процесс реализации:

  1. Добавим в нашу внешнюю обработку новую форму (назовем ее ФормаОтладки).
  2. Назначим эту форму основной формой обработки.
  3. Добавим на форму реквизит ДокументСсылка (или список значений, если нужно имитировать выбор нескольких документов).
  4. Разместим кнопку, при нажатии на которую будет вызываться та же экспортная процедура из модуля объекта, которую вызывает система при работе из списка.

Пример кода в модуле формы отладки:


&НаКлиенте
Процедура ЗапуститьОтладку(Команда)
    ПараметрыКоманды = Новый Массив;
    ПараметрыКоманды.Добавить(Объект.ДокументСсылка);
    
    // Эмулируем структуру, которую передает БСП
    ПараметрыВыполнения = Новый Структура;
    ПараметрыВыполнения.Вставить("ДополнительнаяОбработкаСсылка", ПредопределенноеЗначение("Справочник.ДополнительныеОтчетыИОбработки.ПустаяСсылка"));
    
    // Вызываем серверный метод обработки
    ВыполнитьДействиеНаСервере(ПараметрыКоманды);
КонецПроцедуры

Теперь мы можем просто открывать обработку через меню Файл — Открыть, выбирать нужный документ прямо на форме и спокойно отлаживать код — в этом режиме точки остановки в модуле формы и модуле объекта будут срабатывать стандартным образом.

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

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

Посмотрим на шаги:

Способ 4: Программная остановка через исключение

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

Вставьте в нужном месте кода следующую строку:

ВызватьИсключение "Стоп: проверка параметров!";

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

Способ 5: Проверка параметров отладки сервера

Часто проблема кроется не в коде, а в настройках окружения. Если ваша обработка выполняет действия на стороне сервера (а в управляемых формах &НаСервере — это стандарт), точки остановки не будут работать, если сервер 1С запущен без режима отладки.

Проверим настройки:

  1. Убедимся, что служба сервера приложений 1С запущена с ключом -debug.
  2. В конфигураторе зайдем в меню Сервис — Параметры — Запуск 1С:Предприятия — Отладка.
  3. Проверим, что выбран правильный протокол (TCP/IP или HTTP) и установлена галочка «Использовать отладку при запуске».
  4. Зайдем в меню Отладка — Подключение и убедимся, что в списке доступных предметов есть ваш сеанс и для него включены типы «Клиент» и «Сервер».

Резюме

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

← На главную