Отладка в 1С 8.3: запуск из Конфигуратора, ключ /DEBUG и сервер с -debug

· 9 мин

Содержание

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

Частое заблуждение: «запустил с F5 — значит, отлаживается весь код». В файловой базе это почти так. В клиент-серверной серверный код остановится на точке останова, только если сам сервер 1С запущен с ключом -debug. Без этого клиентские процедуры ловятся, а серверные проскакивают мимо. Всё ниже относится к платформе 8.3 и одинаково для Бухгалтерии, ЗУП, УТ и любой другой конфигурации.

Что проверить до запуска отладки

Отладчик живёт внутри Конфигуратора. Поэтому сначала убедитесь, что в него вообще можно попасть.

  • 👤 Пользователь. Нужна роль с правом Администрирование. Без него Конфигуратор не откроется, а значит, и отладчик.
  • 💾 Совпадение конфигураций. Отлаживается конфигурация базы данных, а не та, что открыта в редакторе. Если вы поменяли модуль и не нажали F7 (обновить конфигурацию БД), точка останова встанет на строку, которой в базе ещё нет.
  • 🖥️ Вариант базы. Файловая база отлаживается «из коробки». Клиент-серверная требует настройки сервера (раздел про командную строку).
  • 🧩 Внешние обработки. Чтобы открыть .epf в пользовательском режиме, у пользователя должно быть право на интерактивное открытие внешних обработок.

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

Какой клиент выбрать

Отладка → Начать отладку раскрывается в список клиентов. От выбора зависит, какой код вы увидите.

КлиентКогда выбиратьЧто учесть
Тонкий клиентТиповые конфигурации на управляемых формахОсновной вариант для БП 3.0, ЗУП 3.1, УТ 11
Толстый клиент (обычное приложение)Старые конфигурации на обычных формахМодули обычных форм работают только здесь
Толстый клиент (управляемое приложение)Нужно отладить код, недоступный тонкому клиентуПоведение может отличаться от реальной работы пользователей
Веб-клиентПроверка работы через браузерТребуется опубликованная база и веб-сервер

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

Три способа запустить 1С в режиме отладки

Способ 1. Из Конфигуратора клавишей F5

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

Пользователь в клиенте тот же, под которым вы вошли в Конфигуратор. Нужно проверить код под другим пользователем с урезанными правами — используйте способ 2.

Способ 2. Подключиться к уже запущенному клиенту

Так ловят ошибку, которая воспроизводится только у конкретного сотрудника.

  1. Запустите клиент под нужным пользователем с ключом /DEBUG (пример ниже).
  2. В Конфигураторе откройте Отладка → Подключение.
  3. В окне «Предметы отладки» выделите нужный сеанс и нажмите «Подключить».

Способ 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

  1. Откройте «Службы» (services.msc) и найдите службу «Агент сервера 1С:Предприятия 8.3».
  2. В свойствах службы посмотрите её точное имя — оно понадобится в реестре.
  3. Откройте regedit и перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<имя службы>.
  4. В параметре ImagePath допишите -debug в конец строки после остальных ключей.
  5. Перезапустите службу.

Строка 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 сервер не отдаёт отладчику всё подряд. Что подключать, вы решаете сами.

  1. Откройте Отладка → Подключение.
  2. Нажмите «Автоматическое подключение».
  3. Отметьте нужные предметы отладки: серверные сеансы, фоновые задания, внешние соединения, HTTP-сервисы и веб-сервисы.

Для регламентного задания этого мало: его нужно дождаться или запустить вручную из консоли заданий. Как только фоновое задание стартует, отладчик подхватит его и остановится на точке останова.

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

Точки останова и пошаговое выполнение

Точку останова ставят клавишей F9 на нужной строке модуля или двойным щелчком по левому полю. Строка подсвечивается красным кружком. Когда выполнение дойдёт до неё, клиент «замрёт», а в Конфигураторе откроется модуль с жёлтой стрелкой на текущей строке.

Горячие клавиши отладчика

ДействиеКлавиша
Начать / продолжить выполнениеF5
Поставить или снять точку остановаF9
Шагнуть в процедуруF11
Шагнуть через (выполнить вызов целиком)F10
Шагнуть из процедурыShift+F11
Идти до курсораShift+F10
Вычислить выражениеShift+F9
Завершить отладкуShift+F5

Три приёма, которые экономят время

  • 🎯 Точка останова с условием. Щёлкните по точке правой кнопкой и задайте условие, например Документ.Номер = "0000-000123". Цикл по тысяче строк остановится только на нужной.
  • 🚨 Остановка по ошибке. В меню Отладка включите остановку по ошибке. Выполнение встанет на строке, где возникло исключение, ещё до того, как его перехватит Попытка … Исключение. Можно задать фильтр по тексту ошибки.
  • 📋 Список точек останова. Он открывается из меню Отладка. Перед уходом с отладки снимите все точки разом: забытая точка в общем модуле остановит следующий запуск в неожиданном месте.

Как смотреть значения переменных во время отладки

Остановиться — половина дела. Дальше нужно понять, что лежит в переменных.

  • Подсказка над переменной. Наведите курсор на имя — появится текущее значение.
  • Вычислить выражение (Shift+F9). Окно, где можно посчитать любое выражение на встроенном языке: ТаблицаТоваров.Итог("Сумма"), Объект.Контрагент.ИНН, ТипЗнч(Результат). Таблицы и структуры раскрываются деревом.
  • Табло. Окно из меню Отладка. Перетащите туда переменные, за которыми следите — значения обновляются на каждом шаге.
  • Локальные переменные. Показывают все переменные текущей процедуры, ничего добавлять не нужно.
  • Стек вызовов. Показывает цепочку процедур, которая привела к текущей строке. Двойной щелчок по уровню открывает вызывающий модуль.

Пример. Документ реализации проводится с неверной суммой НДС. Ставим точку останова в обработке проведения, доходим до формирования движений и вычисляем Объект.Товары.Итог("СуммаНДС"). Сравниваем с тем, что пишется в набор записей. Расхождение сразу показывает, в какой строке теряются копейки.

Результат запроса удобно смотреть так: в окне вычисления выражения выполните Запрос.Выполнить().Выгрузить(). Получите таблицу значений, которую видно целиком.

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

Если задача — не ошибка, а медленная работа, включите Отладка → Замер производительности перед действием и выключите после. Конфигуратор покажет, сколько раз выполнялась каждая строка и какую долю времени она заняла. Тормозящий запрос в цикле виден с первого взгляда.

Отладка внешней обработки или отчёта

Внешние .epf и .erf отлаживаются без встраивания в конфигурацию.

  1. В Конфигураторе откройте файл обработки через Файл → Открыть.
  2. Поставьте точки останова в модуле объекта или формы.
  3. Запустите отладку (F5) или подключитесь к клиенту с /DEBUG.
  4. В клиенте откройте ту же обработку через Файл → Открыть.

Отладчик сопоставляет код по содержимому файла. Поэтому открывайте в клиенте ровно тот же файл, что в Конфигураторе. Если вы правили модуль, сохраните .epf и откройте его в клиенте заново — старая копия уже загружена в сеанс.

Почему отладка не останавливается и как это исправить

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

Ещё одна ловушка — отладка на копии базы с другим сервером. Ключ -debug нужен именно на том сервере, где опубликована отлаживаемая база. Включённая отладка на тестовом сервере не поможет, если ярлык смотрит на рабочий.

Не оставляйте -debug на рабочем сервере после окончания работы. Отладчик сможет подключиться к сеансам бухгалтеров и остановить их на точке останова. Уберите ключ и перезапустите службу в следующее окно обслуживания.

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

Можно ли отлаживать без Конфигуратора?
Да, в 1С:Enterprise Development Tools (EDT) есть свой отладчик. Он работает по HTTP и подключается к тем же серверам и клиентам с ключом /DEBUG.
Нужна ли отдельная лицензия для режима отладки?
Отдельной лицензии нет. Клиент, запущенный для отладки, занимает лицензию как обычный сеанс.
Можно ли изменить код, не останавливая отладку?
Изменения в модуле вступят в силу только после завершения отладки и обновления конфигурации базы данных. Поэтому правьте код, нажимайте F7 и запускайте отладку заново.
Как отладить код, который выполняется при запуске программы?
Поставьте точку останова в модуле управляемого приложения или в процедуре ПриНачалеРаботыСистемы и запустите F5. Отладчик подключается до выполнения этого кода.
Почему отладка тормозит?
Много точек останова с условиями и включённое автоподключение всех фоновых заданий нагружают сервер. Оставьте только нужные предметы отладки и снимите лишние точки.