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

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

Как открыть 1С:Предприятие в режиме отладки

Как запустить 1С:Предприятие в режиме отладки: настройка конфигуратора, ключ /Debug, отладка по HTTP и через сервер 1С. Разбор ошибок и FAQ.

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

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

Ниже разобраны все рабочие способы запуска, настройка сервера 1С для отладки, типичные ошибки вида «предмет отладки недоступен» и способы проверить, что сеанс действительно запущен в отладочном режиме.

Что такое режим отладки и когда он нужен

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

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

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

Запуск отладки из конфигуратора

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

Конфигуратор автоматически запустит клиентское приложение (по умолчанию — толстый клиент) и подключит его как предмет отладки. В нижней части окна конфигуратора появится панель отладки, а в меню «Отладка → Предметы отладки» будет виден активный сеанс.

Порядок запуска из конфигуратора
  1. 1
    Откройте конфигуратор нужной базы с правами на отладку
  2. 2
    Убедитесь, что конфигурация базы данных актуальна (F7 при необходимости)
  3. 3
    Нажмите F5 или «Отладка → Начать отладку»
  4. 4
    Дождитесь запуска клиентского приложения
  5. 5
    Проверьте в «Отладка → Предметы отладки», что сеанс подключён

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

Какой клиент запускается

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

Запуск через параметр командной строки /Debug

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

text
"C:\Program Files\1cv8\8.3.22.1750\bin\1cv8.exe" ENTERPRISE /F"C:\Bases\Trade" /N"Иванов" /Debug /TComp-1C

Ключ /Debug переводит приложение в режим отладки, а /TComp-1C указывает использовать протокол отладки TCP/IP (актуально для современных версий платформы). После запуска приложение ждёт подключения отладчика: откройте конфигуратор и выполните «Отладка → Подключение», выберите нужный предмет отладки из списка доступных.

Для автоматического подключения без диалога можно добавить ключ /DebuggerURL с адресом отладчика, но на практике чаще используют ручное подключение через меню — оно нагляднее и позволяет убедиться, что конфигуратор видит сеанс.

Настройка отладки в клиент-серверном режиме

В клиент-серверном варианте серверный код выполняется в рабочих процессах сервера 1С, и по умолчанию отладка на сервере запрещена. Признак проблемы — конфигуратор показывает сообщение «Предмет отладки недоступен» при попытке остановиться в серверной процедуре.

Чтобы разрешить отладку, агент сервера 1С нужно запустить с параметром -debug. На Windows это делается через реестр: в ветке службы агента сервера (путь вида HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent) в параметре ImagePath добавляется -debug в строку запуска, после чего служба перезапускается. На Linux параметр добавляется в скрипт или unit-файл запуска агента.

Дополнительно можно указать протокол отладки: -debug -http для отладки по HTTP (требуется для тонкого и веб-клиента через сервер) или оставить TCP/IP. После перезапуска службы проверьте, что серверные процедуры стали доступны: поставьте точку останова в серверном модуле и убедитесь, что выполнение на ней останавливается.

Отладка по HTTP для тонкого и веб-клиента

Тонкий клиент и веб-клиент в современных версиях платформы отлаживаются по протоколу HTTP через сервер отладки. Для этого в конфигураторе откройте «Отладка → Подключение → Настройки» (или «Сервис → Параметры → Отладка») и установите переключатель «Использовать протокол HTTP» с указанием сервера отладки — обычно это локальный компьютер или сервер 1С.

На стороне клиента в параметрах запуска тонкого клиента укажите ключ /Debug и адрес отладчика, для веб-клиента параметр отладки добавляется в URL публикации. После запуска сеанс появится в списке предметов отладки конфигуратора.

Способы запуска отладки

F5 из конфигуратора

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

Ключ /Debug в командной строке

Подходит для отладки ярлыков, скриптов и нестандартных запусков. Требует ручного подключения через «Отладка → Подключение».

Отладка на сервере с -debug

Единственный способ отлаживать серверный код в клиент-серверном режиме. Требует перезапуска службы агента и прав администратора сервера.

Отладка по HTTP

Необходима для тонкого и веб-клиента. Требует настройки сервера отладки и корректной публикации базы.

Подключение к уже запущенному сеансу

Частая задача — отладить сеанс, который уже работает: например, ошибку воспроизводит пользователь, или код выполняется в фоновом задании. Для этого сеанс должен быть запущен с признаком отладки, а в конфигураторе нужно открыть «Отладка → Подключение».

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

Если нужный сеанс не появляется в списке, проверьте: запущен ли он с ключом /Debug, совпадает ли версия платформы клиента и конфигуратора, не блокирует ли брандмауэр порты отладки, и включён ли нужный протокол (TCP/IP или HTTP) с обеих сторон.

Проверка результата и типичные ошибки

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

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

Как проверить, что отладка работает

Точка останова в модуле
Норма

Сплошной красный маркер, выполнение останавливается

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

Пустой маркер с «!» — предмет отладки недоступен

Список предметов отладки
Норма

Сеанс присутствует и активен

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

Список пуст — отладчик не подключён

Серверный код в клиент-сервере
Норма

Останов в серверной процедуре работает

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

Останавливается только клиентский код — на сервере нет -debug

Панель отладки
Норма

Доступны шаги F10/F11, стек вызовов, табло

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

Кнопки неактивны — нет остановленного выполнения

Типичные ошибки
01
Забыли перезапустить службу сервера после добавления -debug — параметр не применился, серверный код недоступен
02
Конфигуратор и клиент запущены на разных версиях платформы — предмет отладки не находится
03
Отлаживают код, который выполняется в фоновом задании, но автоматическое подключение фоновых заданий не включено
04
Изменили модуль после запуска сеанса — точки останова «съезжают», нужно обновить конфигурацию базы данных и перезапустить сеанс
05
На продуктивном сервере оставили -debug навсегда — лишняя нагрузка и риск безопасности

Ограничения и меры предосторожности

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

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

Итог

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

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

Частые вопросы

Почему конфигуратор пишет «Предмет отладки недоступен»?

Чаще всего сервер 1С запущен без параметра -debug, либо точка останова стоит в коде, который выполняется в сеансе без признака отладки. Проверьте параметры службы агента сервера, перезапустите её и убедитесь, что сеанс запущен с /Debug или через F5 из конфигуратора.

Можно ли отладить фоновое задание?

Да. Включите в конфигураторе «Отладка → Подключение → Автоматическое подключение» и отметьте фоновые задания. При следующем запуске задания конфигуратор подключит его автоматически. В клиент-серверном режиме на сервере должен быть включён -debug.

Нужны ли особые права для отладки?

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

Как отладить код, который выполняется только под конкретным пользователем?

В параметрах запуска отладки конфигуратора укажите имя этого пользователя — клиент запустится под ним. Альтернатива: попросить пользователя запустить сеанс с ключом /Debug и подключиться к его сеансу через «Отладка → Подключение».

Влияет ли режим отладки на производительность?

Да. Запуск сервера с -debug замедляет выполнение кода в рабочих процессах, а остановка на точке внутри транзакции удерживает блокировки. Поэтому отладку включают на тестовых контурах, а на продуктиве — только на время диагностики.

Чем отличается отладка по TCP/IP и по HTTP?

TCP/IP — классический протокол отладки между конфигуратором и клиентом напрямую. HTTP-отладка работает через сервер отладки и нужна для тонкого и веб-клиента, а также когда прямое сетевое соединение невозможно. Протокол выбирается в настройках отладки конфигуратора и должен совпадать на обеих сторонах.