Отладка в 1С 8.3: запуск из Конфигуратора, ключ /DEBUG и сервер с -debug
Содержание
Чтобы открыть 1С в режиме отладки, зайдите в базу через Конфигуратор и нажмите F5 (меню Отладка → Начать отладку). Платформа сама запустит клиент 1С:Предприятия и подключит его к отладчику. Для отдельного ярлыка добавьте к команде запуска ключ /DEBUG.
Частое заблуждение: «запустил с F5 — значит, отлаживается весь код». В файловой базе это почти так. В клиент-серверной серверный код остановится на точке останова, только если сам сервер 1С запущен с ключом -debug. Без этого клиентские процедуры ловятся, а серверные проскакивают мимо. Всё ниже относится к платформе 8.3 и одинаково для Бухгалтерии, ЗУП, УТ и любой другой конфигурации.
Что проверить до запуска отладки
Отладчик живёт внутри Конфигуратора. Поэтому сначала убедитесь, что в него вообще можно попасть.
- 👤 Пользователь. Нужна роль с правом
Администрирование. Без него Конфигуратор не откроется, а значит, и отладчик. - 💾 Совпадение конфигураций. Отлаживается конфигурация базы данных, а не та, что открыта в редакторе. Если вы поменяли модуль и не нажали
F7(обновить конфигурацию БД), точка останова встанет на строку, которой в базе ещё нет. - 🖥️ Вариант базы. Файловая база отлаживается «из коробки». Клиент-серверная требует настройки сервера (раздел про командную строку).
- 🧩 Внешние обработки. Чтобы открыть
.epfв пользовательском режиме, у пользователя должно быть право на интерактивное открытие внешних обработок.
Не отлаживайте на рабочей базе в часы работы бухгалтерии. Пока выполнение стоит на точке останова, транзакция открыта, и другие пользователи могут упираться в блокировки. Возьмите копию базы.
Какой клиент выбрать
Отладка → Начать отладку раскрывается в список клиентов. От выбора зависит, какой код вы увидите.
| Клиент | Когда выбирать | Что учесть |
|---|---|---|
| Тонкий клиент | Типовые конфигурации на управляемых формах | Основной вариант для БП 3.0, ЗУП 3.1, УТ 11 |
| Толстый клиент (обычное приложение) | Старые конфигурации на обычных формах | Модули обычных форм работают только здесь |
| Толстый клиент (управляемое приложение) | Нужно отладить код, недоступный тонкому клиенту | Поведение может отличаться от реальной работы пользователей |
| Веб-клиент | Проверка работы через браузер | Требуется опубликованная база и веб-сервер |
Клиент по умолчанию для F5 задаётся в Сервис → Параметры, закладка «Запуск 1С:Предприятия». Там же выбирают, запускать ли тонкий клиент или толстый.
Три способа запустить 1С в режиме отладки
Способ 1. Из Конфигуратора клавишей F5
- Откройте базу в режиме Конфигуратор.
- Если в дереве есть изменения — нажмите
F7, чтобы обновить конфигурацию базы данных. - Нажмите
F5или выберите клиент вОтладка → Начать отладку. - Откроется 1С:Предприятие. Отладчик уже подключён — ставьте точки останова и воспроизводите сценарий.
Пользователь в клиенте тот же, под которым вы вошли в Конфигуратор. Нужно проверить код под другим пользователем с урезанными правами — используйте способ 2.
Способ 2. Подключиться к уже запущенному клиенту
Так ловят ошибку, которая воспроизводится только у конкретного сотрудника.
- Запустите клиент под нужным пользователем с ключом
/DEBUG(пример ниже). - В Конфигураторе откройте
Отладка → Подключение. - В окне «Предметы отладки» выделите нужный сеанс и нажмите «Подключить».
Способ 3. Ярлык или командная строка
Ключ /DEBUG включает в клиенте готовность к отладке. Полная команда для файловой базы:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Иванов" /P"пароль" /DEBUG
Для клиент-серверной базы вместо /F указывают сервер и имя базы:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /N"Иванов" /DEBUG
Номер версии в пути подставьте свой: папка с версией лежит рядом с common.
Пароль в ярлыке виден любому, кто откроет свойства. Для отладки на чужом компьютере лучше не указывать /P — клиент сам спросит пароль.
Отладка серверного кода: ключ -debug у агента сервера
Это главный шаг, который пропускают. В клиент-серверной базе процедуры с директивой &НаСервере, модули менеджеров, общие модули и фоновые задания выполняются в рабочих процессах сервера 1С. Чтобы отладчик их видел, агент сервера ragent.exe должен стартовать с ключом -debug.
Как понять, где выполняется код
Смотрите на директиву компиляции над процедурой в модуле формы:
&НаКлиенте— код клиента, ловится всегда, даже без настройки сервера;&НаСервереи&НаСервереБезКонтекста— код рабочего процесса, нужен-debug;- модули объектов, менеджеров и общие серверные модули — тоже сервер.
Если точка в клиентской процедуре срабатывает, а в серверной, которую она вызывает, — нет, причина почти наверняка в агенте сервера.
Как включить на Windows
- Откройте «Службы» (
services.msc) и найдите службу «Агент сервера 1С:Предприятия 8.3». - В свойствах службы посмотрите её точное имя — оно понадобится в реестре.
- Откройте
regeditи перейдите вHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя службы>. - В параметре
ImagePathдопишите-debugв конец строки после остальных ключей. - Перезапустите службу.
Строка ImagePath после правки выглядит примерно так:
"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -debug -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Перезапуск службы агента обрывает все сеансы пользователей на этом сервере. Делайте это вне рабочего времени и предупредите людей. Порты и путь к srvinfo в вашей строке могут отличаться — не меняйте ничего, кроме добавления -debug.
Отладка по HTTP
Помимо старого протокола TCP, в платформе 8.3 есть отладка по HTTP. Она нужна, когда отладчик и сервер в разных сетях или между ними файрвол. Тогда к ключу агента добавляют -http, а сам обмен идёт через сервер отладки dbgs.exe (порт по умолчанию — 1550).
Протокол отладки выбирают в параметрах Конфигуратора (Сервис → Параметры). Клиент под HTTP запускают так:
1cv8.exe ENTERPRISE /S"srv1c\buh" /DEBUG -http -attach /DEBUGGERURL "http://192.168.0.15:1550"
Здесь 192.168.0.15 — адрес компьютера, где открыт Конфигуратор. Порт 1550 должен быть открыт на нём для входящих соединений.
Автоподключение: фоновые задания и серверные сеансы
Даже с -debug сервер не отдаёт отладчику всё подряд. Что подключать, вы решаете сами.
- Откройте
Отладка → Подключение. - Нажмите «Автоматическое подключение».
- Отметьте нужные предметы отладки: серверные сеансы, фоновые задания, внешние соединения, HTTP-сервисы и веб-сервисы.
Для регламентного задания этого мало: его нужно дождаться или запустить вручную из консоли заданий. Как только фоновое задание стартует, отладчик подхватит его и остановится на точке останова.
Автоподключение фоновых заданий на загруженной базе быстро превращается в кашу: отладчик ловит чужие задания обмена и обновления. Ставьте точку останова с условием, о ней — ниже.
Точки останова и пошаговое выполнение
Точку останова ставят клавишей F9 на нужной строке модуля или двойным щелчком по левому полю. Строка подсвечивается красным кружком. Когда выполнение дойдёт до неё, клиент «замрёт», а в Конфигураторе откроется модуль с жёлтой стрелкой на текущей строке.
Горячие клавиши отладчика
| Действие | Клавиша |
|---|---|
| Начать / продолжить выполнение | F5 |
| Поставить или снять точку останова | F9 |
| Шагнуть в процедуру | F11 |
| Шагнуть через (выполнить вызов целиком) | F10 |
| Шагнуть из процедуры | Shift+F11 |
| Идти до курсора | Shift+F10 |
| Вычислить выражение | Shift+F9 |
| Завершить отладку | Shift+F5 |
Три приёма, которые экономят время
- 🎯 Точка останова с условием. Щёлкните по точке правой кнопкой и задайте условие, например
Документ.Номер = "0000-000123". Цикл по тысяче строк остановится только на нужной. - 🚨 Остановка по ошибке. В меню
Отладкавключите остановку по ошибке. Выполнение встанет на строке, где возникло исключение, ещё до того, как его перехватитПопытка … Исключение. Можно задать фильтр по тексту ошибки. - 📋 Список точек останова. Он открывается из меню
Отладка. Перед уходом с отладки снимите все точки разом: забытая точка в общем модуле остановит следующий запуск в неожиданном месте.
Как смотреть значения переменных во время отладки
Остановиться — половина дела. Дальше нужно понять, что лежит в переменных.
- Подсказка над переменной. Наведите курсор на имя — появится текущее значение.
- Вычислить выражение (
Shift+F9). Окно, где можно посчитать любое выражение на встроенном языке:ТаблицаТоваров.Итог("Сумма"),Объект.Контрагент.ИНН,ТипЗнч(Результат). Таблицы и структуры раскрываются деревом. - Табло. Окно из меню
Отладка. Перетащите туда переменные, за которыми следите — значения обновляются на каждом шаге. - Локальные переменные. Показывают все переменные текущей процедуры, ничего добавлять не нужно.
- Стек вызовов. Показывает цепочку процедур, которая привела к текущей строке. Двойной щелчок по уровню открывает вызывающий модуль.
Пример. Документ реализации проводится с неверной суммой НДС. Ставим точку останова в обработке проведения, доходим до формирования движений и вычисляем Объект.Товары.Итог("СуммаНДС"). Сравниваем с тем, что пишется в набор записей. Расхождение сразу показывает, в какой строке теряются копейки.
Результат запроса удобно смотреть так: в окне вычисления выражения выполните Запрос.Выполнить().Выгрузить(). Получите таблицу значений, которую видно целиком.
Замер производительности
Если задача — не ошибка, а медленная работа, включите Отладка → Замер производительности перед действием и выключите после. Конфигуратор покажет, сколько раз выполнялась каждая строка и какую долю времени она заняла. Тормозящий запрос в цикле виден с первого взгляда.
Отладка внешней обработки или отчёта
Внешние .epf и .erf отлаживаются без встраивания в конфигурацию.
- В Конфигураторе откройте файл обработки через
Файл → Открыть. - Поставьте точки останова в модуле объекта или формы.
- Запустите отладку (
F5) или подключитесь к клиенту с/DEBUG. - В клиенте откройте ту же обработку через
Файл → Открыть.
Отладчик сопоставляет код по содержимому файла. Поэтому открывайте в клиенте ровно тот же файл, что в Конфигураторе. Если вы правили модуль, сохраните .epf и откройте его в клиенте заново — старая копия уже загружена в сеанс.
Почему отладка не останавливается и как это исправить
-debug. Проверьте ImagePath службы и перезапустите её вне рабочего времени.F7 и перезапустите отладку./DEBUG или не включено автоподключение нужного типа (фоновые задания, серверные сеансы).1550 закрыт файрволом на компьютере с Конфигуратором или в /DEBUGGERURL указан не тот адрес..epf заново.Администрирование. Войдите под администратором базы или добавьте роль в списке пользователей.Ещё одна ловушка — отладка на копии базы с другим сервером. Ключ -debug нужен именно на том сервере, где опубликована отлаживаемая база. Включённая отладка на тестовом сервере не поможет, если ярлык смотрит на рабочий.
Не оставляйте -debug на рабочем сервере после окончания работы. Отладчик сможет подключиться к сеансам бухгалтеров и остановить их на точке останова. Уберите ключ и перезапустите службу в следующее окно обслуживания.
Частые вопросы
Можно ли отлаживать без Конфигуратора?
/DEBUG.Нужна ли отдельная лицензия для режима отладки?
Можно ли изменить код, не останавливая отладку?
F7 и запускайте отладку заново.Как отладить код, который выполняется при запуске программы?
ПриНачалеРаботыСистемы и запустите F5. Отладчик подключается до выполнения этого кода.