Разработка и Конфигурация · 11 мин
Как открыть 1С:Предприятие в режиме отладки
Как запустить 1С:Предприятие в режиме отладки: настройка конфигуратора, ключ /Debug, отладка по HTTP и через сервер 1С. Разбор ошибок и FAQ.
Режим отладки в 1С:Предприятие позволяет пошагово выполнять код, просматривать значения переменных, ставить точки останова и находить ошибки в прикладном решении. Без него разработка и доработка конфигураций превращается в угадывание: программист не видит, какие данные реально обрабатываются в момент выполнения процедуры.
Запустить отладку можно несколькими способами: прямо из конфигуратора, через параметр командной строки, через настройки информационной базы или через отладку по протоколу HTTP для тонкого и веб-клиента. Выбор зависит от режима работы базы — файлового или клиент-серверного — и от того, какой клиент используется.
Ниже разобраны все рабочие способы запуска, настройка сервера 1С для отладки, типичные ошибки вида «предмет отладки недоступен» и способы проверить, что сеанс действительно запущен в отладочном режиме.
Что такое режим отладки и когда он нужен
Режим отладки — это специальный режим работы клиентского приложения, при котором конфигуратор подключается к исполняемому коду и получает управление над его выполнением. Разработчик может остановить программу в любой точке, посмотреть стек вызовов, значения локальных переменных и результат выражений.
Отладка необходима при доработке конфигураций, поиске причин ошибок в проведении документов, анализе обменов данными, проверке обработчиков подписок на события и фоновых заданий. Без неё приходится выводить сообщения через Сообщить(), что замедляет диагностику и засоряет код.
Важно понимать: отладка работает только если код выполняется на стороне, доступной отладчику. Серверный код в клиент-серверном режиме выполняется в рабочем процессе сервера 1С, поэтому для его отладки сервер должен быть запущен с соответствующим разрешением.
Запуск отладки из конфигуратора
Стандартный и самый частый способ — запуск отладки непосредственно из конфигуратора. Откройте конфигуратор нужной информационной базы и выполните одно из действий: меню «Отладка → Начать отладку», клавиша F5 или кнопка с «зелёным треугольником» на панели инструментов.
Конфигуратор автоматически запустит клиентское приложение (по умолчанию — толстый клиент) и подключит его как предмет отладки. В нижней части окна конфигуратора появится панель отладки, а в меню «Отладка → Предметы отладки» будет виден активный сеанс.
- 1Откройте конфигуратор нужной базы с правами на отладку
- 2Убедитесь, что конфигурация базы данных актуальна (F7 при необходимости)
- 3Нажмите F5 или «Отладка → Начать отладку»
- 4Дождитесь запуска клиентского приложения
- 5Проверьте в «Отладка → Предметы отладки», что сеанс подключён
Если нужно запустить отладку под конкретным пользователем или с особыми параметрами, используйте «Отладка → Параметры запуска» (или «Сервис → Параметры» в старых версиях): там задаётся пользователь, толщина клиента, параметры командной строки и каталог базы.
Какой клиент запускается
По умолчанию конфигуратор запускает толстый клиент. Чтобы отлаживать тонкий клиент, в параметрах запуска укажите вид клиента явно. Для веб-клиента предварительно база должна быть опубликована на веб-сервере, а запуск выполняется через браузер с последующим подключением предмета отладки.
Запуск через параметр командной строки /Debug
Второй способ — запустить клиентское приложение с ключом /Debug. Это полезно, когда нужно отладить уже настроенный ярлык, стартовый сценарий или поведение программы с конкретными параметрами запуска.
"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 публикации. После запуска сеанс появится в списке предметов отладки конфигуратора.
Способы запуска отладки
Самый быстрый вариант для файловой базы и разработки. Ограничение: запускает новый сеанс, не подходит для отладки уже работающего сеанса пользователя.
Подходит для отладки ярлыков, скриптов и нестандартных запусков. Требует ручного подключения через «Отладка → Подключение».
Единственный способ отлаживать серверный код в клиент-серверном режиме. Требует перезапуска службы агента и прав администратора сервера.
Необходима для тонкого и веб-клиента. Требует настройки сервера отладки и корректной публикации базы.
Подключение к уже запущенному сеансу
Частая задача — отладить сеанс, который уже работает: например, ошибку воспроизводит пользователь, или код выполняется в фоновом задании. Для этого сеанс должен быть запущен с признаком отладки, а в конфигураторе нужно открыть «Отладка → Подключение».
В диалоге подключения включите поиск доступных предметов отладки — конфигуратор покажет сеансы, фоновые задания и внешние соединения, доступные для отладки. Отметьте нужные и нажмите «Подключить». Для фоновых заданий удобно заранее включить автоматическое подключение: «Отладка → Подключение → Автоматическое подключение» и отметить типы предметов отладки.
Если нужный сеанс не появляется в списке, проверьте: запущен ли он с ключом /Debug, совпадает ли версия платформы клиента и конфигуратора, не блокирует ли брандмауэр порты отладки, и включён ли нужный протокол (TCP/IP или HTTP) с обеих сторон.
Проверка результата и типичные ошибки
Признак успешного запуска: в конфигураторе в меню «Отладка → Предметы отладки» виден активный сеанс, точки останова отображаются как сплошные красные кружки (а не пустые с восклицательным знаком), и выполнение останавливается на установленной точке.
Как проверить, что отладка работает
Сплошной красный маркер, выполнение останавливается
Пустой маркер с «!» — предмет отладки недоступен
Сеанс присутствует и активен
Список пуст — отладчик не подключён
Останов в серверной процедуре работает
Останавливается только клиентский код — на сервере нет -debug
Доступны шаги F10/F11, стек вызовов, табло
Кнопки неактивны — нет остановленного выполнения
Ограничения и меры предосторожности
Отладка останавливает выполнение кода, а в клиент-серверном режиме остановка внутри транзакции может держать блокировки в СУБД и мешать работе других пользователей. Поэтому отладку на продуктивной базе выполняют только в крайнем случае, коротко и вне пиковой нагрузки.
Не все предметы отлаживаются одинаково: код внешних компонент, некоторые системные вызовы и код, выполняемый на веб-сервере вне платформы, отладчику недоступны. Для COM-соединений и внешних источников данных отладка возможна только при запуске соответствующего процесса с признаком отладки.
Что важно запомнить
Для файловой базы достаточно F5 в конфигураторе. Для клиент-серверной — добавьте -debug в запуск агента сервера и перезапустите службу. Для тонкого и веб-клиента настройте отладку по HTTP. Проверяйте результат по сплошным точкам останова и списку предметов отладки, а после диагностики отключайте отладку на сервере.
Частые вопросы
Почему конфигуратор пишет «Предмет отладки недоступен»?
Чаще всего сервер 1С запущен без параметра -debug, либо точка останова стоит в коде, который выполняется в сеансе без признака отладки. Проверьте параметры службы агента сервера, перезапустите её и убедитесь, что сеанс запущен с /Debug или через F5 из конфигуратора.
Можно ли отладить фоновое задание?
Да. Включите в конфигураторе «Отладка → Подключение → Автоматическое подключение» и отметьте фоновые задания. При следующем запуске задания конфигуратор подключит его автоматически. В клиент-серверном режиме на сервере должен быть включён -debug.
Нужны ли особые права для отладки?
Да, у пользователя конфигуратора должно быть право «Отладка». Для подключения к сеансам других пользователей в клиент-серверном режиме дополнительно потребуются административные права на кластер серверов.
Как отладить код, который выполняется только под конкретным пользователем?
В параметрах запуска отладки конфигуратора укажите имя этого пользователя — клиент запустится под ним. Альтернатива: попросить пользователя запустить сеанс с ключом /Debug и подключиться к его сеансу через «Отладка → Подключение».
Влияет ли режим отладки на производительность?
Да. Запуск сервера с -debug замедляет выполнение кода в рабочих процессах, а остановка на точке внутри транзакции удерживает блокировки. Поэтому отладку включают на тестовых контурах, а на продуктиве — только на время диагностики.
Чем отличается отладка по TCP/IP и по HTTP?
TCP/IP — классический протокол отладки между конфигуратором и клиентом напрямую. HTTP-отладка работает через сервер отладки и нужна для тонкого и веб-клиента, а также когда прямое сетевое соединение невозможно. Протокол выбирается в настройках отладки конфигуратора и должен совпадать на обеих сторонах.