Разработка и Конфигурация · 11 мин
Как запустить отладку в 1C:EDT
Как запустить отладку в 1C:EDT: настройка отладочной конфигурации, подключение к серверу 1С, точки останова, просмотр переменных и решение типичных проблем.
1C:Enterprise Development Tools (EDT) — это среда разработки на базе Eclipse, и отладка в ней устроена иначе, чем в классическом Конфигураторе. Здесь нет привычной кнопки «Начать отладку» из меню «Отладка» в том же виде: вместо этого используются конфигурации запуска, а сам отладчик подключается к информационной базе через отдельный механизм.
Главное отличие: EDT не запускает отладку «внутри себя», а взаимодействует с отладочным агентом — сервером отладки (dbgs), который работает рядом с сервером 1С:Предприятия или с файловой базой. Поэтому большинство проблем с запуском отладки сводятся не к среде, а к тому, что агент не запущен, недоступен по сети или работает на другом порту.
Ниже разобран полный цикл: подготовка базы, создание конфигурации запуска, постановка точек останова, работа с переменными и разбор типичных ошибок, из-за которых отладка «не останавливается».
Подготовка: что должно быть настроено до запуска
Отладка в EDT возможна только если информационная база запущена с разрешением отладки. Для файловой базы это параметр командной строки /debug (или -debug) при запуске клиентского приложения, либо соответствующая настройка в свойствах базы. Для клиент-серверного варианта отладка включается в свойствах кластера серверов 1С:Предприятия — флаг «Разрешена отладка» и указание диапазона портов отладки.
Второй обязательный компонент — сервер отладки dbgs. В современных версиях платформы он стартует автоматически вместе с агентом сервера или клиентом, но при нестандартных установках его нужно запустить вручную из каталога bin платформы. Если dbgs не работает, EDT не сможет подключиться, и вы увидите ошибку о недоступности отладчика.
Третье условие — совместимость версий. Версия платформы 1С:Предприятия, на которой работает база, должна поддерживаться вашей версией EDT. Расхождение версий — частая причина того, что отладка формально запускается, но точки останова не срабатывают или модуль показывается устаревшим.
Создание конфигурации запуска
В EDT запуск и отладка выполняются через конфигурации — сохранённые наборы параметров: какую базу запускать, каким клиентом, с какими параметрами. Откройте меню Run → Debug Configurations (в русской локализации — «Запуск → Конфигурации отладки»). В левой части окна найдите раздел «Клиент 1С:Предприятия» (1C:Enterprise client) и создайте новую конфигурацию двойным щелчком или кнопкой New.
В параметрах конфигурации укажите проект (конфигурацию), информационную базу для запуска, тип клиента (толстый, тонкий, веб-клиент) и при необходимости дополнительные параметры командной строки. Если база добавлена в список информационных баз EDT, она подставится автоматически; иначе путь к базе или строку подключения нужно указать вручную.
После сохранения конфигурации нажмите кнопку Debug. EDT запустит клиентское приложение выбранной базы и автоматически подключит к нему отладчик. Признак успеха — в перспективе Debug появилось дерево отлаживаемых предметов (сеансов), а в редакторе кода активны элементы управления пошаговым выполнением.
- 1Включите отладку на информационной базе: параметр -debug для клиента или флаг в свойствах кластера сервера
- 2Убедитесь, что сервер отладки dbgs запущен и доступен
- 3Откройте Run → Debug Configurations и создайте конфигурацию типа «Клиент 1С:Предприятия»
- 4Укажите проект, базу и тип клиента, сохраните конфигурацию
- 5Расставьте точки останова в нужных модулях
- 6Нажмите Debug и выполните в клиенте действие, которое вызывает отлаживаемый код
Точки останова и управление выполнением
Точка останова ставится двойным щелчком по серой полосе слева от строки кода либо через контекстное меню — Toggle Breakpoint. Активная точка отображается синим кружком. Точки можно делать условными: в свойствах точки останова задаётся выражение на встроенном языке, и останов произойдёт только когда оно истинно — это удобно в циклах с большим числом итераций.
Когда выполнение доходит до точки останова, клиентское приложение «замирает», а управление переходит в EDT. Стандартные команды пошагового выполнения: Step Into (F5) — войти внутрь вызываемой процедуры, Step Over (F6) — выполнить строку без захода внутрь, Step Return (F7) — выполнить до выхода из текущей процедуры, Resume (F8) — продолжить выполнение до следующей точки останова.
Учтите важную особенность: точка останова сработает только если код реально выполняется в том сеансе, который подключён к отладчику. Если обработчик выполняется в фоновом задании или на сервере в другом сеансе, нужно убедиться, что этот сеанс виден в списке отлаживаемых предметов — иногда его приходится подключать отдельно.
Если точка останова стоит, но выполнение её игнорирует, чаще всего причина в том, что код выполняется в фоновом задании или регламентном задании — отдельном сеансе. Откройте в перспективе Debug список доступных предметов отладки и подключите нужный сеанс вручную через контекстное меню.
Просмотр переменных и вычисление выражений
Во время остановки панель Variables показывает локальные переменные текущей процедуры и их значения. Объекты сложных типов — структуры, таблицы значений, ссылки на объекты базы — раскрываются деревом, можно дойти до отдельных полей и строк таблиц. Значения многих переменных можно изменить прямо во время отладки, что позволяет проверить гипотезу без перезапуска сеанса.
Панель Expressions (выражения) служит для вычисления произвольных выражений на встроенном языке в текущем контексте. Добавьте туда, например, Запрос.Выполнить().Выгрузить().Количество() или обращение к реквизиту объекта — выражение будет пересчитываться на каждом шаге. Это заменяет привычное «Табло» из Конфигуратора.
Для быстрого просмотра значения достаточно навести курсор на переменную в редакторе кода во время остановки — EDT покажет всплывающую подсказку со значением. Это самый быстрый способ проверить одну-две переменные, не открывая панели.
Отладка серверного кода и фоновых заданий
В клиент-серверном режиме серверный код выполняется в рабочих процессах кластера, и его отладка требует, чтобы на сервере была включена отладка и работал dbgs. EDT подключается к серверу отладки и показывает все доступные сеансы: и клиентские, и серверные, и фоновые задания.
Фоновые задания — отдельный случай. Они стартуют в новых сеансах, которые могут завершиться до того, как вы их подключите. Практический приём: поставить точку останова в самом начале метода фонового задания и в настройках EDT включить автоматическое подключение новых сеансов к отладчику. Тогда сеанс задания подхватится сразу при старте, и выполнение остановится на первой строке.
Для отладки HTTP-сервисов и веб-сервисов логика та же: запрос обрабатывается в сеансе на сервере, и этот сеанс должен быть подключён к отладчику. Отправьте тестовый запрос после того, как точка останова уже установлена и автоматическое подключение включено.
Типичные проблемы и их решение
Самая частая жалоба — «отладка запускается, но не останавливается». Причины почти всегда одни и те же: база запущена без параметра отладки, dbgs не работает или недоступен по сети (файрвол блокирует порты отладки), либо код выполняется в сеансе, который не подключён к отладчику. Проверяйте эти три пункта в первую очередь.
Вторая группа проблем — рассинхронизация конфигураций. Если конфигурация в проекте EDT отличается от конфигурации базы (вы изменили модуль, но не обновили базу), отладчик может показывать не те строки или не останавливаться вовсе. Перед отладкой выполните полное обновление конфигурации базы данных из EDT.
Третья причина — точки останова в «не том» модуле. Например, точка стоит в модуле объекта, а выполняется код модуля менеджера, или обработчик переопределён в расширении. Проверьте стек вызовов после остановки в ближайшей сработавшей точке — он покажет, какой модуль реально исполняется.
Как проверить, что отладка работает
В дереве есть подключённый сеанс, активны кнопки шагов
Дерево пустое или ошибка подключения к dbgs
Синий кружок с галочкой — точка подтверждена отладчиком
Кружок без галочки или перечёркнут — точка не установлена в исполняемый модуль
Клиент замирает, EDT подсвечивает строку останова
Действие выполняется до конца без остановки
FAQ
Можно ли в EDT отлаживать файловую базу без сервера 1С?
Да. Запустите толстый или тонкий клиент файловой базы с параметром -debug, при этом сервер отладки dbgs стартует локально вместе с платформой. В конфигурации запуска EDT укажите эту базу — отладчик подключится к локальному dbgs автоматически.
Почему кнопка Debug неактивна или конфигурация не создаётся?
Обычно причина в том, что в рабочей области нет импортированного проекта конфигурации или проект не связан с информационной базой. Импортируйте конфигурацию в EDT, привяжите проект к базе в свойствах проекта, после чего конфигурация запуска создастся корректно.
Как отладить код, который выполняется при входе пользователя в систему?
Поставьте точку останова в обработчике, выполняемом при старте (например, в модуле сеанса или в ПриНачалеРаботыСистемы), и запускайте клиент именно через Debug из EDT, а не отдельно. Тогда отладчик подключится до начала выполнения прикладного кода и остановится на ранней точке.
Можно ли изменить значение переменной во время отладки?
Да, на панели Variables значение большинства переменных редактируется по двойному щелчку или через контекстное меню Change Value. Изменение действует с текущего шага выполнения. Учитывайте, что сложные объекты (ссылки, таблицы значений) целиком так заменить нельзя — править можно их доступные свойства и элементы.
Отладка работает в Конфигураторе, но не работает в EDT. В чём разница?
Конфигуратор и EDT используют один и тот же механизм отладки платформы, но EDT подключается через свой список предметов отладки и требует корректной конфигурации запуска. Проверьте, что в EDT выбрана та же база, включено автоматическое подключение сеансов и версия EDT поддерживает вашу версию платформы.
Как отладить расширение конфигурации?
Расширение отлаживается так же, как основная конфигурация: проект расширения импортируется в EDT, обновляется в базе, точки останова ставятся в модулях расширения. Важно, чтобы расширение было активно в базе и именно его обработчики исполнялись — проверить это можно по стеку вызовов во время остановки.
Что важно запомнить
Отладка в 1C:EDT строится на трёх условиях: база запущена с разрешённой отладкой, сервер отладки dbgs доступен, конфигурация запуска корректно настроена. Точки останова ставятся двойным щелчком, серверный код и фоновые задания требуют подключения их сеансов к отладчику. Если остановки нет — проверяйте параметр -debug, dbgs, обновление конфигурации базы и то, в каком сеансе реально исполняется код.