Отладка в 1C:EDT: от конфигурации запуска до серверного кода
Содержание
Чтобы запустить отладку в 1C:EDT, откройте проект, свяжите его с информационной базой и нажмите кнопку с жуком на панели инструментов (или F11 для повтора последнего запуска). EDT обновит конфигурацию в базе, поднимет сервер отладки и откроет клиент 1С:Предприятия уже подключённым к отладчику. Для файловой базы этого достаточно.
С клиент-серверной базой нужен ещё один шаг: кластер 1С должен работать в режиме отладки по HTTP (ключ -debug -http). EDT не умеет отлаживать по старому протоколу TCP, который по привычке включают в Конфигураторе. Большинство жалоб «точка останова не срабатывает» упираются именно в это.
Что проверить перед первым запуском отладки
Отладчик EDT ломается чаще всего не на самой отладке, а на окружении. Пять минут проверки экономят час поиска.
- ☕ Java. EDT работает на JDK. Нужна та сборка и версия, которую требует ваша версия EDT (у современных версий — Liberica JDK 17, у старых — 11). Если EDT ставили через лаунчер 1C:EDT Start, нужная Java обычно ставится вместе с ним.
- 🧩 Платформа 1С. На компьютере должна стоять платформа той версии, под которую собирается проект. В настройках EDT (
Окно → Параметры, далее ветка с установленными платформами 1С:Предприятия) она должна быть видна. - 🏷️ Режим совместимости проекта. Он не может быть выше версии установленной платформы. Иначе база просто не обновится.
- 🗄️ Информационная база. Она добавлена на панель «Информационные базы» и связана с проектом. Без этой связи EDT не знает, куда выкладывать изменения.
- 📂 Пути без сюрпризов. Рабочая область и каталог проекта — на локальном диске, без сетевых путей и без кириллицы в пути к рабочей области. С сетевыми папками EDT работает медленно, а индексация может падать.
Если проект только что импортирован из конфигурации, дождитесь окончания сборки (индикатор в правом нижнем углу). Отладка до завершения сборки запустится, но EDT может выложить в базу неполную конфигурацию.
Конфигурация запуска: создаём и настраиваем
Конфигурация запуска (Run Configuration) — это сохранённый набор «какой проект, в какую базу, каким клиентом, с какими параметрами». EDT создаёт её сам при первом запуске, но её стоит открыть и проверить.
Создание вручную
- Откройте меню
Запуск → Конфигурации отладки…(в английском интерфейсеRun → Debug Configurations…). - В левом списке выберите тип для клиента 1С:Предприятия и нажмите кнопку создания новой конфигурации.
- Задайте понятное имя, например
ERP_dev — тонкий клиент. - На основной вкладке выберите проект и информационную базу.
- Укажите тип клиента: тонкий, толстый (управляемое приложение) или веб-клиент.
- Нажмите «Применить», затем «Отладка».
Что настроить сразу
| Параметр | Что выбрать | Зачем |
|---|---|---|
| Тип клиента | Тонкий клиент | Ближе всего к работе пользователя |
| Пользователь и пароль | Тестовый пользователь | Запуск без окна авторизации |
| Дополнительные параметры | /C с нужной строкой | Передать параметр запуска в код |
| Версия платформы | Конкретная, не «последняя» | Исключить расхождение с сервером |
Перед каждым запуском EDT сам обновляет конфигурацию базы из проекта. Если обновление завершилось ошибкой, отладка всё равно может стартовать, но уже на старом коде. Следите за сообщениями в консоли.
Конфигурации разных баз держите отдельно. Удобно иметь две на один проект: одну с тонким клиентом, другую с веб-клиентом.
Обновление базы перед запуском меняет конфигурацию этой базы. Никогда не связывайте проект с рабочей базой пользователей — только с копией для разработки.
Отладка по HTTP, параметры отладчика и память JVM
Протокол отладки
EDT использует отладку по HTTP через отдельный сервер отладки (dbgs). Для файловой базы EDT запускает его сам. Порт по умолчанию — 1550. Если он занят, сервер выбирает другой, и адрес нужно смотреть в EDT.
Если нужно подключить к отладке клиент, запущенный не из EDT, используйте параметры командной строки:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8c.exe" ENTERPRISE /F"D:\Bases\Dev" /DEBUG -http /DEBUGGERURL "http://localhost:1550"
Путь к платформе и её номер подставьте свои. Ключ /DEBUG -http включает отладку по HTTP, /DEBUGGERURL говорит клиенту, к какому серверу отладки подключиться.
Память для EDT
EDT — тяжёлое Java-приложение. На типовой конфигурации уровня ERP или КА ему тесно в настройках по умолчанию: сборка тормозит, отладчик подвисает на шаге.
Объём памяти задаётся в файле 1cedt.ini в каталоге установки EDT, строкой -Xmx:
-Xms1g
-Xmx8g
Ориентиры по памяти:
- 🟢 небольшая самописная конфигурация —
-Xmx4g; - 🟡 Бухгалтерия, ЗУП, УТ —
-Xmx6g; - 🔴 ERP, КА, большие отраслевые —
-Xmx8gи больше.
Оставьте системе и клиенту 1С хотя бы 4 ГБ. Если на машине 16 ГБ, ставить EDT -Xmx14g бессмысленно: начнётся своп. После правки 1cedt.ini перезапустите EDT.
Перед правкой сохраните копию 1cedt.ini. Опечатка в этом файле — и EDT просто не стартует, без внятной ошибки.
Точки останова, переменные и пошаговое выполнение
Ставим и настраиваем точки
- Двойной щелчок по левому полю редактора модуля ставит и снимает точку останова. То же делает
Ctrl+Shift+B. - Правый щелчок по точке → свойства: там задаётся условие (например,
Номенклатура.Код = "00-000123") и счётчик срабатываний. - Все точки видны на панели «Точки останова». Там их можно временно выключить флажком, не удаляя.
Условная точка — главный инструмент в цикле на 10 000 строк. Не нажимайте «продолжить» сто раз: поставьте условие на нужную строку табличной части.
Перспектива «Отладка»
При остановке EDT предлагает переключиться в перспективу «Отладка». Соглашайтесь и отметьте «запомнить». В ней собраны:
- 🧵 стек вызовов — по нему видно, как код дошёл до этой строки, и можно перейти в любой кадр стека;
- 📊 переменные — локальные переменные и параметры текущей процедуры, с раскрытием структур и коллекций;
- 🔍 выражения — сюда добавляйте то, что хотите видеть постоянно, например
Объект.Товары.Количество(); - 🧭 предметы отладки — какие клиенты и серверные процессы сейчас подключены.
Наведение курсора на переменную в редакторе показывает её значение во всплывающем окне.
Горячие клавиши
| Клавиша | Действие |
|---|---|
F5 | Шаг с заходом в процедуру |
F6 | Шаг через строку |
F7 | Выйти из текущей процедуры |
F8 | Продолжить до следующей точки |
Ctrl+R | Выполнить до строки под курсором |
Ctrl+F2 | Остановить отладку |
Это стандартные клавиши Eclipse. Если вы пришли из Конфигуратора, где шаги на F10/F11, их можно переназначить в Окно → Параметры → Общие → Клавиши.
Как отлаживать серверный код в клиент-серверной базе
Клиентская часть (&НаКлиенте) выполняется в процессе тонкого клиента
. Серверная (&НаСервере, общие модули с флагом «Сервер», обработчики записи объектов) — в рабочем процессе кластера. Чтобы отладчик останавливался в серверном коде, кластер должен быть запущен с отладкой.
Включаем отладку на сервере 1С
На Windows сервер 1С работает службой. В строке запуска ragent.exe нужно добавить ключи -debug -http:
"C:\Program Files\1cv8\8.3.24.1586\bin\ragent.exe" -debug -http -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Строку запуска удобно поменять через реестр (параметр ImagePath в разделе службы) или пересоздать службу. На Linux ключи добавляют в строку запуска ragent в unit-файле службы systemd.
Перезапуск службы сервера 1С обрывает все сеансы пользователей на этом кластере. Делайте это на тестовом сервере или в согласованное окно, предупредив пользователей.
Обратите внимание на ключ -http. Ключ -debug без него включает отладку по TCP: Конфигуратор с ней работает, EDT — нет.
Подключаемся из EDT
- Создайте конфигурацию отладки типа «подключение к серверу отладки» и укажите адрес, например
http://srv1c:1550. - Запустите её. EDT подключится к серверу отладки кластера.
- На панели «Отладка» откройте настройку автоподключения и отметьте нужные предметы: сервер, тонкий клиент, фоновые задания.
- Запустите клиент — из EDT или через ярлык с
/DEBUG -http /DEBUGGERURL.
Без автоподключения серверного предмета отладчик будет останавливаться только в клиентском коде. Это вторая по частоте причина «не срабатывающих» точек.
Мини-кейс: точка в модуле объекта не срабатывает
Разработчик ставит точку в ПередЗаписью() модуля документа, проводит документ из тонкого клиента — отладчик молчит. Клиент запущен из EDT, клиентские точки работают.
Разбор занял три шага:
- В строке запуска службы стоял только
-debug. После добавления-httpи перезапуска службы ночью сервер отладки появился. - EDT подключился, но серверного предмета в списке не было: не было отмечено автоподключение сервера.
- После отметки предмета «Сервер» точка сработала при следующем проведении.
Вывод простой: при отладке серверного кода сначала проверяйте ключи кластера, потом автоподключение, и только потом сам код.
Фоновые задания и HTTP-сервисы
- ⏱️ Регламентные и фоновые задания выполняются в рабочем процессе без клиента. Чтобы поймать их, включите автоподключение предмета «фоновое задание».
- 🌐 HTTP- и веб-сервисы обрабатываются через веб-сервер и рабочий процесс. Нужен предмет отладки для HTTP-сервисов или веб-сервисов, а на публикации — включённая отладка.
- 🔁 Длительные операции в типовых (например, формирование отчёта в фоне) тоже уходят в фоновое задание. Если точка в коде отчёта не срабатывает, проверьте именно это.
Не подключается отладчик: разбор типовых проблем
Когда отладка не нужна
Не всякая ошибка требует отладчика. Иногда быстрее другой инструмент:
- 📝 журнал регистрации — когда ошибка уже произошла у пользователя и известно время;
- 📈 замер производительности — когда код не падает, а тормозит;
- 🧪 временная запись в журнал через
ЗаписьЖурналаРегистрации()— когда ошибка плавает и воспроизводится только у пользователей в рабочей базе, куда отладчик подключать нельзя.
Отладку на рабочем кластере не включайте. Остановка на точке в серверном коде держит транзакцию и блокировки — у пользователей встанет работа.