Отладчик позволяет без изменения кода конфигурации отлаживать программный код Дополнительных обработчиков бизнес-событий. Основан на процедурах из общего модуля БизнесСобытияВызовСервера, перенесенных в форму внешней обработки.
Расскажу коротко о принципе работы отладчика. В 1С:Документооборот имеется РегистрСведений.ПроизошедшиеБизнесСобытия. Туда 1С:Документооборот пишет все произошедшие бизнес-события в виде очереди. Эта очередь обрабатывается предопределенным регламентным заданием ОбработкаПроизошедшихБизнесСобытий, которое 1 раз в минуту делает вызов процедуры общего модуля БизнесСобытияВызовСервера.ОбработкаПроизошедшихБизнесСобытий().
В этой процедуре для не обработанных бизнес-событий оператором Выполнить() запускается код включенных Дополнительных обработчиков бизнес-событий из Справочник.ПользовательскиеОбработчикиБизнесСобытий.ВыпоняемыйКод.
В модуле формы данной внешней обработки имеется продедура ОбработкаПроизошедшихБизнесСобытий, скопированная из общего модуля БизнесСобытияВызовСервера. В ней вызов оператора Выполнить() заменен на вызов процедуры ОтлаживаемыйОбработчик(Событие). Здесь и ставится точка останова в режиме отладчика 1С.
Итак, скачиваем демонстрационную конфигурацию demo.dt и внешнюю обработку ОтладчикПользовательскихОбработчиковБизнесСобытий.epf. Создаем демо-базу открываем в конфигураторе и в клиенте в режиме отладки.
Краткая инструкция
1. Отключаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий (снимаем флаг в форме обработки). Открываем РегистрСведений.ПроизошедшиеБизнесСобытия
2. После отладки копируем содержимое процедуры ОтлаживаемыйОбработчик через буфер обмена в Справочник.ПользовательскиеОбработчикиБизнесСобытий.ВыпоняемыйКод и включаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий
2.1 Если в базе много обработчиков, то для отладки можем создать ниже отдельные процедуры для каждого обработчика и по мере необходимости подставлять их вызов в тело процедуры ОтлаживаемыйОбработчик(Событие), в этом случае после отладки копируем содержимое вызываемой процедуры, к примеру, содержимое процедуры: ОтлаживаемыйОбработчикОзнакомлениеПослеУтверждения(Событие)
3. Важно: обработчик в рабочем режиме запускается оператором Выполнить(), поэтому не пытайтесь в его коде делать вызов других процедур данной обработки!!!
Можно использовать методы объектов, процедуры и функции общих модулей.
Пример: Требуется автоматическое создание процесса Ознакомление для указанного пользователем списка подразделений текущим руководителям этих подразделений, если произошло Утверждение внутреннего документа "Приказ финансового блока".
1. Заходим в конфигуратор 1С:Предприятие в режиме Администратора, открываем для редактирования эту обработку, устанавливаем точку останова на первую строку процедуры ОтлаживаемыйОбработчикОзнакомлениеПослеУтверждения:
* БП_Утверждение = Событие.Источник;
2. Запускаем из Конфигуратора 1С:Предприятие в режиме отладки.
3. Отключаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий
4. Создаем интерактивно внутренний документ Тест (ВидДокумента="Приказ финансового блока")
5. Создаем интерактивно Бизнес-процесс Утверждение по приказу Тест, запускаем
6. Утверждаем под пользователем, указанным для утверждения.
7. Создаем интерактивно пустой пользовательский обработчик события "Запуск процесса Ознакомление после Утверждения"
8. Создаем для этого обработчика Подписку на событие Завершение процесса
9. Запускаем обработку ОтладчикПользовательскихОбработчиковБизнесСобытий
10. Наслаждаемся процессом отладки и написания кода
10.1 Для повторения отладки после изменения кода снимаем флажки Обработано и НеУдалосьОбработать (ЧислоПопытокОбработки=0) с нашего события в Регистре сведений ПроизошедшиеБизнесСобытия,
Перезапускаем обработку ОтладчикПользовательскихОбработчиковБизнесСобытий
11. После завершения отладки Копируем отлаженный код в ВыполняемыйКод обработчика "Запуск процесса Ознакомление после Утверждения"
12. Включаем РегламентноеЗадание.ОбработкаПроизошедшихБизнесСобытий
Всё в итоге работает