Отладчик 1С 8.3: от первой точки останова до серверного кода

· 10 мин

Содержание

Чтобы запустить 1С в режиме отладки, откройте базу в Конфигураторе и нажмите F5 (меню Отладка → Начать отладку). Платформа сама запустит 1С:Предприятие, подключит к нему отладчик и остановится на первой точке останова, которую вы поставили клавишей F9.

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

Всё ниже относится к платформе 8.3 и не зависит от конфигурации: отладчик одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и самописных базах. Различается только место, где выполняется код, — файловая база или клиент-серверная.

1. Как запустить отладку 1С из Конфигуратора

Это основной и самый простой способ. Отладчик встроен в Конфигуратор, отдельно ничего ставить не нужно.

Запуск по F5

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

Откроется окно 1С:Предприятия. Конфигуратор в это время остаётся открытым и становится отладчиком: как только выполнение дойдёт до точки останова, окно Конфигуратора выйдет на передний план, а нужная строка подсветится.

Каким клиентом запускать

У пункта Отладка → Начать отладку есть подменю: тонкий клиент, толстый клиент, веб-клиент (в зависимости от свойств конфигурации и настроек). Это важно:

  • 🖥️ Тонкий клиент — для управляемых форм, его используют почти все современные типовые.
  • 🧱 Толстый клиент (обычное приложение) — для старых конфигураций на обычных формах.
  • 🌐 Веб-клиент — когда ошибка воспроизводится только в браузере.

Какой клиент запускается по F5 без выбора, задают в Сервис → Параметры, вкладка Запуск 1С:Предприятия.

Запуск без отладки

Сочетание Ctrl+F5 (Сервис → 1С:Предприятие) открывает пользовательский режим без подключения отладчика. Точки останова при этом не срабатывают. Это удобно, когда нужно просто проверить результат, не отвлекаясь на остановки.

Завершить отладку можно из Конфигуратора: Отладка → Завершить отладку (Shift+F5). Окно 1С:Предприятия при этом закроется.

2. Запуск 1С:Предприятия с ключом /DEBUG и подключение к сеансу

Не всегда удобно стартовать из Конфигуратора. Например, ошибка возникает у пользователя после получаса работы, и воспроизвести её с нуля сложно. Тогда запускают Предприятие так, чтобы к нему можно было подключиться позже.

Ключ /DEBUG в настройках базы

  1. В окне запуска выделите базу и нажмите Изменить.
  2. Пройдите до последней страницы мастера.
  3. В поле Дополнительные параметры запуска впишите /DEBUG.
  4. Нажмите Готово и запустите базу в режиме 1С:Предприятие.

Тот же ключ работает из командной строки или ярлыка:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\Buh" /DEBUG

Для клиент-серверной базы вместо /F указывают /S "server\base".

Окно «Предметы отладки»

Теперь подключите отладчик к уже работающему клиенту:

  1. В Конфигураторе той же базы выберите Отладка → Подключение.
  2. Откроется окно предметов отладки. В нём видны запущенные клиентские сеансы и, для клиент-серверной базы, серверные предметы.
  3. Выделите нужный сеанс и нажмите Подключить.

После подключения точки останова начнут срабатывать в этом сеансе. Отключиться можно там же, не закрывая Предприятие: пользователь продолжит работу.

Автоматическое подключение

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

3. Точки останова: обычные, с условием, остановка по ошибке

Точка останова — строка, на которой выполнение замрёт. Без неё отладка превращается в обычный запуск.

Как поставить и убрать

  • Поставьте курсор на строку и нажмите F9 или дважды щёлкните по левому полю модуля. Появится красный кружок.
  • Повторное F9 убирает точку.
  • Все точки проекта собраны в Отладка → Список точек останова. Там их отключают без удаления и удаляют разом.

Ставьте точку на строку с исполняемым кодом. На пустой строке, комментарии или строке Процедура … остановки не будет.

Точка останова с условием

Если процедура вызывается в цикле на 5 000 строк, а ошибка только в одной, обычная точка замучает остановками. Выберите Отладка → Точка останова с условием и впишите выражение на встроенном языке:

СтрокаТЧ.Номенклатура.Код = "00-00001234"

Отладчик остановится только тогда, когда условие истинно. Вариант проще — НомерСтроки = 317.

Остановка по ошибке

Пункт Отладка → Остановка по ошибке заставляет отладчик замирать на строке, где возникло исключение. Это самый быстрый способ найти источник сообщения вида Поле объекта не обнаружено или Значение не является значением объектного типа: вы попадаете ровно туда, где оно родилось, а не туда, где его перехватили.

В типовых конфигурациях много кода в блоках Попытка … Исключение, где ошибки ожидаемы. С включённой остановкой на всех ошибках отладчик будет замирать постоянно. В настройках остановки можно задать текст ошибки, на которой останавливаться, и не трогать остальные.

4. Пошаговое выполнение кода в отладчике 1С

Когда выполнение встало на точке, вы управляете им клавишами:

ДействиеКлавишаЧто делает
ПродолжитьF5Идёт до следующей точки останова
Шагнуть вF11Заходит внутрь вызываемой процедуры или функции
Шагнуть черезF10Выполняет строку целиком, не заходя в вызовы
Шагнуть изShift+F11Дорабатывает текущую процедуру и возвращается в вызывающую
Идти до курсораShift+F10Выполняет код до строки, где стоит курсор

Рабочая тактика такая: доходите до проблемного места через F10, а в подозрительную функцию ныряйте через F11. Если зашли в общий модуль и поняли, что ошибка не там, Shift+F11 вернёт вас наверх.

Стек вызовов

Окно Отладка → Стек вызовов показывает цепочку: какая процедура вызвала текущую, а её — какая. Двойной щелчок по строке стека открывает модуль на месте вызова. Это спасает в типовых, где путь от кнопки до расчёта проходит через 5–7 общих модулей.

Если отладчик остановился «непонятно где», первым делом откройте стек. По нему видно, из какой формы или обработчика пришёл вызов.

5. Просмотр переменных и выражений во время отладки

Остановка ценна тем, что можно посмотреть данные в эту секунду.

Всплывающая подсказка

Наведите мышь на переменную в модуле — появится её значение. Для простых типов (число, строка, дата) этого хватает.

Вычисление выражения

Выделите переменную или выражение и нажмите Shift+F9. Окно Вычислить выражение показывает значение в виде дерева: можно раскрыть реквизиты объекта, строки табличной части, поля структуры. В поле выражения пишут любой код, который вычисляется в текущем контексте:

Объект.Товары.Итог("Сумма")
Запрос.Выполнить().Выгрузить()

Второй пример — один из самых полезных приёмов. Он выполняет запрос прямо на точке останова и показывает результат таблицей. Так проверяют, что запрос вернул нужные строки, без вывода в отчёт. Для таблицы значений нажмите кнопку просмотра в отдельном окне — она откроется как обычная таблица с колонками.

Выражения в окне вычисления выполняются по-настоящему. Если вписать вызов, который записывает объект или меняет данные, запись произойдёт. Используйте только чтение.

Табло и локальные переменные

  • 📋 Табло (Отладка → Табло) — список выражений, которые пересчитываются на каждом шаге. Перетащите туда 3–4 ключевые переменные и шагайте F10: изменения видно сразу.
  • 🔎 Локальные — окно со всеми локальными переменными текущей процедуры, заполняется автоматически.

Замер производительности

Не совсем отладка, но запускается из того же меню: Отладка → Замер производительности. Он показывает, сколько раз выполнилась каждая строка и сколько времени заняла. Если документ проводится минуту, замер укажет строку с запросом в цикле быстрее любого чтения кода.

6. Отладка серверного кода и фоновых заданий

Здесь начинается главное различие между файловой и клиент-серверной базой.

Файловая база

В файловом варианте серверный код (&НаСервере, модули менеджеров, модули объектов при записи) выполняется в том же процессе, что и клиент. Точки в таких процедурах срабатывают после обычного F5 без дополнительных настроек.

Клиент-серверная база

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

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -debug -http -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Номер версии и пути подставьте свои. Строка запуска службы хранится в параметре ImagePath раздела реестра службы:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя службы агента 1С>

После правки службу нужно перезапустить.

Перезапуск службы агента разорвёт сеансы всех пользователей всех баз этого сервера. Делайте это вечером или в согласованное окно и предупредите людей.

TCP или HTTP

Отладка в 8.3 работает по двум протоколам.

ПротоколКлюч сервераКогда выбирать
TCP-debugСтарые платформы, простая сеть без ограничений
HTTP-debug -httpСовременный вариант: нужен для отладки веб-клиента, мобильного приложения, удобен через брандмауэр

В Конфигураторе протокол отладки выбирают в Сервис → Параметры, на вкладке настроек запуска 1С:Предприятия. Он должен совпадать с тем, что разрешён на сервере. При HTTP-протоколе сервер отладки по умолчанию слушает порт 1550, его надо открыть в брандмауэре, если Конфигуратор работает с другого компьютера.

Фоновые и регламентные задания

Фоновое задание запускается в отдельном сеансе на сервере, клиента у него нет. Порядок такой:

  1. Убедитесь, что серверная отладка разрешена (см. выше).
  2. В Конфигураторе откройте Отладка → Подключение и включите автоматическое подключение к предмету «Фоновое задание».
  3. Поставьте точку в процедуре задания.
  4. Запустите задание вручную, не дожидаясь расписания. В БП 3.0 и ЗУП 3.1 это делается из Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания: выделите задание и выполните его сейчас.

Если задание запускается из кода через ФоновыеЗадания.Выполнить, отладчик подключится в момент его старта.

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

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

7. Почему отладка 1С не запускается и не останавливается

Большинство проблем сводится к тому, что отладчик и код живут в разных местах. Найдите свой симптом:

Диагностика: выберите симптом

Если не помогло

  • 🔁 Проверьте, что версии платформы у Конфигуратора и сервера совпадают полностью, до последней цифры номера. При расхождении подключение к серверу часто не устанавливается вовсе.
  • 🧩 Если код лежит в расширении, точку ставят в модуле расширения, а не в основной конфигурации. Само расширение должно быть активно в базе.
  • 📝 Когда отладчиком не дотянуться (например, ошибка у удалённого пользователя раз в день), добавьте временную запись в журнал регистрации через ЗаписьЖурналаРегистрации с нужными значениями. Потом удалите её.

8. Частые вопросы об отладке в 1С

Нужна ли отдельная лицензия для отладки?
Нет. Отладчик входит в Конфигуратор. Запуск Предприятия из отладчика занимает обычную клиентскую лицензию, как любой другой сеанс.
Можно ли отлаживать базу, с которой работают пользователи?
Технически да, монопольный режим для отладки не нужен. Но остановленный на точке сеанс может держать блокировки и задерживать коллег, поэтому разбор безопаснее вести на копии.
Как отладить внешнюю обработку или отчёт?
Откройте файл .epf или .erf в Конфигураторе через Файл → Открыть, поставьте точки и откройте этот же файл в Предприятии, запущенном в режиме отладки. Точки сработают, если путь к файлу совпадает.
Почему в окне вычисления пишет, что переменная не определена?
Переменная объявлена в другом контексте. На клиенте не видны серверные локальные переменные, и наоборот. Шагните в ту процедуру, где переменная существует, и вычислите её там.
Можно ли изменить код во время остановки и продолжить?
Нет. Правка модуля требует сохранения и обновления конфигурации базы данных. Завершите отладку, внесите изменения, нажмите F7 и запустите заново.