Как отладить внешнюю обработку в Конфигураторе 1С
Содержание
Чтобы отладить внешнюю обработку
1С 8.3, запустите 1С:Предприятие в режиме разрешения отладки, откройте файл .epf в Конфигураторе и поставьте точки останова в его модуле. Режим включается в Конфигураторе: Сервис → Параметры → Запуск 1С:Предприятия, флажок «Устанавливать режим разрешения отладки при запуске».
Внешняя обработка отлаживается тем же встроенным отладчиком, что и модули конфигурации. Отличие одно: файл обработки не входит в конфигурацию, поэтому его открывают отдельно, а код начинает выполняться, когда вы запускаете обработку в сеансе 1С:Предприятия.
Какой способ выбрать — зависит от того, где выполняется код. Простую обработку удобнее гонять из файла. Обработку, подключённую через подсистему, отлаживают прямо в рабочем сеансе. А серверные вызовы требуют отдельной настройки на стороне сервера.
Включаем режим отладки и выдаём права
Отладчик не подключится к сеансу, который запущен без разрешения отладки. Поэтому начинаем с настроек запуска.
В Конфигураторе откройте Сервис → Параметры → Запуск 1С:Предприятия и включите флажок «Устанавливать режим разрешения отладки при запуске» (на основной вкладке запуска). После этого сеанс, стартовавший по команде Отладка → Начать отладку (F5), будет виден отладчику. Там же, в параметрах запуска, выбирается тип клиента — толстый, тонкий или веб; запускайте обработку в том же клиенте, в котором её потом будут использовать пользователи, чтобы отлаживать реальное поведение, а не абстрактное.
Для прав действует простое правило:
- 🔑 отлаживать может пользователь с административными правами на информационную базу;
- 🖥️ в клиент-серверном варианте отладка серверного кода должна быть отдельно разрешена на сервере (об этом ниже);
- 🧩 версии платформы Конфигуратора и запускаемого клиента должны совпадать — иначе сеанс не появится в списке.
Если обработку вы пишете и правите часто, держите Конфигуратор и клиент открытыми одновременно. Пересохранили .epf — заново откройте его в сеансе, и новый код подхватится.
Классическая отладка через Конфигуратор: точки останова
Самый частый сценарий — файл обработки лежит на диске, и вы отлаживаете его целиком.
- В Конфигураторе:
Файл → Открыть(Ctrl+O), выберите свой файл.epf. Обработка откроется деревом объектов. - Раскройте нужный модуль — модуль объекта или модуль формы — и поставьте точку останова на строке клавишей
F9. Строка пометится красным кружком. - Запустите клиент командой
Отладка → Начать отладку(F5). Он стартует в режиме разрешения отладки. - В открывшемся
1С:ПредприятиивыполнитеФайл → Открытьи укажите тот же.epf. Запустите нужную команду обработки. - Выполнение остановится на точке останова. Дальше смотрите значения переменных и идите по коду.
Управление в точке останова — стандартное для платформы:
| Клавиша | Действие |
|---|---|
F9 | поставить/снять точку останова |
F5 | продолжить выполнение |
F10 | шагнуть через (не заходя в процедуру) |
F11 | шагнуть внутрь процедуры |
Shift+F11 | выйти из текущей процедуры |
Shift+F9 | вычислить выражение |
Код обработки лежит в разных модулях, и точку останова ставят там, где он реально выполняется:
- 🧱 модуль объекта — логика самой обработки, процедуры, которые вызывают извне;
- 📋 модуль формы — обработчики событий формы и её элементов (нажатия кнопок, изменения полей);
- ⚙️ модуль команды — если у обработки есть команды, запускаемые из интерфейса.
Если непонятно, по какому модулю пойдёт выполнение, поставьте точки сразу в нескольких местах и запустите команду — сработает та, через которую проходит код.
Значение переменной можно посмотреть, наведя на неё курсор, либо добавив её в окно «Табло». Порядок вызовов показывает окно «Стек вызовов» — удобно, когда ошибка всплывает глубоко внутри вложенных процедур. Через Shift+F9 («Вычислить выражение») значение не только смотрят, но и подменяют на лету: это помогает проверить, как поведёт себя код при другом входном параметре, не перезапуская сеанс.
Если нужная ветка срабатывает только при определённом условии, не стойте на каждой итерации цикла: щёлкните по точке останова правой кнопкой и задайте условие (например, останавливаться, только когда переменная приняла нужное значение). Так отладчик пропустит сотни лишних проходов и замрёт ровно на интересном.
Точка останова на рабочей базе замораживает сеанс целиком. Пока отладчик стоит на строке, открытые транзакции держат блокировки, и другие пользователи могут упереться в них. Отлаживайте на копии базы, а не на «боевой».
Подключение к работающему сеансу без открытия файла
Иногда обработку не запускаешь заново, а она уже крутится в пользовательском сеансе — например, встроена в типовой процесс. Тогда отладчик подключают к живому сеансу.
Выполните Отладка → Подключение. Откроется список предметов отладки — это запущенные сеансы базы, стартовавшие в режиме разрешения отладки. Каждый предмет подписан типом клиента и пользователем, так что найти нужный сеанс среди нескольких несложно. Выберите его и подключитесь — после этого точки останова начнут срабатывать в его коде.
Этот способ незаменим, когда обработка вызывается не напрямую, а из другого объекта: из обработчика проведения документа, из регламентного задания, из команды типовой конфигурации. Перезапускать весь сценарий ради отладки не нужно — вы цепляетесь к уже идущему процессу.
Отдельный приём — остановка по ошибке. В настройках отладки включается реакция на исключение: выполнение само замирает в момент, когда возникает ошибка, даже если точка останова не стояла. Это выручает, когда непонятно, где именно падает код: не нужно расставлять точки наугад.
Подключение к сеансу работает и для фоновых заданий. Если обработка запускает длительную операцию в фоне, в списке предметов отладки появится отдельный сеанс фонового задания — подключайтесь к нему.
Отладка обработки из «Дополнительных отчётов и обработок»
Обработку, зарегистрированную в справочнике «Дополнительные отчёты и обработки», отладить сложнее. Платформа хранит её копию внутри базы, запускает на сервере и по умолчанию — в безопасном режиме, который ограничивает привилегированные операции.
Отсюда два рабочих подхода:
- 🧪 Отладьте файл до публикации. Пока обработка лежит на диске, гоняйте её через
Файл → Открытьв сеансе, как описано выше. Это самый чистый путь: вы отлаживаете ровно тот код, который потом загрузите. - 🔌 Подключитесь к сеансу уже загруженной обработки. Откройте её исходный
.epfв Конфигураторе, поставьте точки останова и подключитесь к сеансу, в котором обработка вызывается. Код и выполнение совпадут только если версия файла и версия в базе одинаковы.
Если отлаживаемый код требует привилегий, безопасный режим можно временно снять в карточке обработки (нужны права администратора). В «1С:Бухгалтерии 3.0» список лежит в разделе Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки; сам механизм там же включается флажком.
Снятый безопасный режим снимает защиту с чужого кода. Делайте это только для обработки, которой доверяете, и возвращайте флажок после отладки.
Отладка серверного кода и выбор протокола
В клиент-серверной базе часть кода выполняется не на клиенте, а в рабочем процессе сервера (rphost): процедуры с директивой &НаСервере, вызовы серверных общих модулей. Клиентский отладчик их не увидит, пока отладка не разрешена на самом сервере.
Включается она на стороне агента сервера (ragent) — при регистрации службы добавляют параметр отладки, а отладчик подключается к серверу по сети. Порт сервера отладки по умолчанию — 1550. Точные ключи запуска службы смотрите в документации по параметрам запуска агента сервера, чтобы не промахнуться с конкретной сборкой.
Понять, какой код уйдёт на сервер, помогают директивы компиляции в начале процедуры. &НаКлиенте выполняется у пользователя, &НаСервере и &НаСервереБезКонтекста — в рабочем процессе. Серверные процедуры поймаются отладчиком только при включённой серверной отладке; клиентские — всегда, если сеанс запущен в режиме отладки.
Протокол отладки бывает двух видов: TCP/IP и HTTP. Для отладки серверного кода и для веб-клиента используют HTTP — он устойчивее проходит через сеть и прокси. Протокол клиента и Конфигуратора должен быть одинаковым, иначе сеанс просто не появится в списке предметов отладки.
Чтобы применить разрешение отладки на сервере, службу агента придётся перезапустить. Это оборвёт все активные сеансы пользователей, поэтому делайте это в технологическое окно, а не среди рабочего дня.
Особенности отладки в тонком и веб-клиенте
Тонкий клиент отлаживается так же, как толстый: предметом отладки будет сеанс тонкого клиента , точки останова и шаги работают идентично. Разницы в приёмах нет.
С веб-клиентом два условия:
- протокол отладки должен быть HTTP;
- в публикации базы на веб-сервере должна быть разрешена отладка. Флажок задаётся при публикации из Конфигуратора и записывается в файл публикации
default.vrd.
Клиентский код веб-клиента исполняется в браузере, но отладчик встроенного языка всё равно ловит его через протокол отладки — отдельный отладчик браузера для этого не нужен. Если сеанс веб-клиента не появляется в предметах отладки, в девяти случаях из десяти дело в протоколе (не HTTP) или в запрете отладки в default.vrd.
Когда отладчик не помогает: журналы и трассировка
Не каждую ошибку поймаешь точкой останова. Если проблема плавающая или воспроизводится только у пользователя, подключают журналы.
Журнал регистрации. Платформенные ошибки с текстом и контекстом пишутся в журнал регистрации базы. В «1С:Бухгалтерии 3.0» он открывается из раздела Администрирование → Обслуживание, а полностью — из Конфигуратора. По нему видно, в какой момент и с каким сообщением упала обработка.
Технологический журнал. Для низкоуровневого разбора настраивают технологический журнал через файл logcfg.xml в каталоге conf платформы. Он фиксирует исключения (EXCP), длительность вызовов и обращения к СУБД — это инструмент для сложных случаев, когда нужен точный след выполнения. Минимальная конфигурация, которая собирает только ошибки:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\logs\1c" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
После правок logcfg.xml платформа подхватывает их без перезапуска службы, с небольшой задержкой. Разбирать такой журнал стоит, когда ошибка не ловится отладчиком и не пишется внятно в журнал регистрации.
Ручная трассировка. Самый простой способ понять, доходит ли выполнение до нужной строки, — вывести значение. В клиентском коде работает Сообщить(), в серверном удобнее писать метки в журнал методом ЗаписьЖурналаРегистрации(). Главное — убрать отладочный вывод перед публикацией обработки.
Ошибки подключения отладчика
Большинство проблем при отладке внешних обработок — не в коде, а в том, что отладчик не видит сеанс или точка останова не срабатывает. Разбор по симптомам:
.epf или из копии в базе. Откройте и запустите ровно тот же файл, пересохраните его после правок.1550, либо мешает межсетевой экран. Проверьте параметры запуска агента сервера и доступность порта.default.vrd).Отладка → Подключение.Частые вопросы
Нужны ли права администратора, чтобы отлаживать обработку?
Можно ли отлаживать внешнюю обработку в 1С:EDT, а не в Конфигураторе?
.epf чаще держат и правят в Конфигураторе — там цикл «открыл файл — поставил точку — запустил» короче.Почему точки останова перестали срабатывать после правки кода?
.epf и заново откройте его в сеансе 1С:Предприятия — тогда отладчик свяжет точки с актуальным кодом.Чем отличается отладка внешнего отчёта от внешней обработки?
.erf) открывается и отлаживается тем же способом: точки останова в его модулях, запуск в сеансе, подключение к предмету отладки.