Первый запуск отладчика 1С 8.3: настройки, режимы, клавиши и подводные камни

· 10 мин

Содержание

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

Правильно начать отладку — значит заранее проверить три вещи: какой клиент запускается, выполняется ли код на сервере и разрешена ли там отладка. Если одна из них не выполнена, начинаются типичные ошибки новичков: точка останова не срабатывает, отладчик «не видит» сервер, фоновое задание проходит мимо.

Зачем нужна отладка и чем она лучше «Сообщить()»

Отладчик позволяет остановить выполнение кода на любой строке и посмотреть, что лежит в переменных именно в этот момент. Без него разработчик вставляет Сообщить() в десять мест, перезапускает программу и гадает по выводу.

Что даёт отладка в конфигураторе:

  • 🔍 значения переменных, реквизитов объекта, строк таблиц значений и результатов запросов в момент остановки;
  • 🧭 стек вызовов — кто вызвал текущую процедуру и с какими параметрами;
  • ⏭️ пошаговое выполнение: зайти внутрь процедуры, пройти её целиком, выйти наверх;
  • 🧪 вычисление любого выражения «на лету», без правки кода;
  • ⏱️ замер производительности — какие строки съедают время.

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

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

Подготовка: что проверить в конфигураторе до первого запуска

Сохранённая и обновлённая конфигурация

Отладчик работает с конфигурацией базы данных. Если вы поменяли модуль и не нажали F7 (обновить конфигурацию базы данных), при запуске по F5 конфигуратор спросит, обновить ли её. Ответите «Нет» — в программе выполнится старый код, а точки останова в новых строках не сработают или встанут не туда.

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

Какой клиент запускает конфигуратор

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

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

Выбранный здесь клиент запускается по F5. Если ошибка воспроизводится только у пользователя в тонком клиенте, а вы отлаживаете в толстом, вы можете её просто не увидеть.

Права пользователя и учётная запись

Под каким пользователем откроется программа, зависит от параметров запуска. Если в базе есть пользователи с паролем, конфигуратор при F5 подставит текущего пользователя конфигуратора. Ошибку, которая возникает только у бухгалтера с ограниченными правами, ловите под его учётной записью: запустите клиент вручную под ним и подключите отладчик (об этом в разделе про способы запуска).

Способы запуска отладки в конфигураторе 1С

Способ 1. Клавиша F5 — самый частый

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

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

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

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

  1. Запустите клиент с разрешённой отладкой. Надёжный путь — ключ командной строки /DEBUG в параметрах запуска базы (в окне запуска: Изменить → Дополнительные параметры запуска).
  2. В конфигураторе откройте Отладка → Подключение.
  3. В списке предметов отладки выберите нужный сеанс и нажмите «Подключить».

После подключения точки останова работают так же, как при F5.

Способ 3. Запуск через командную строку

Удобно для ярлыка на рабочем столе тестировщика. Пример для HTTP-отладки, когда сервер отладки слушает порт по умолчанию 1550 на этом же компьютере:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\TestBase" /DEBUG -http -attach /DEBUGGERURL "http://localhost:1550"

Путь к базе и к исполняемому файлу подставьте свои. Если ключи не сработали в вашей версии платформы, используйте способ 2 — он не зависит от командной строки.

Какой способ выбрать

СпособКогдаМинус
F5 из конфигуратораобычная разработка и проверкаклиент открывается под текущим пользователем конфигуратора
Подключение к сеансуошибка у конкретного пользователя, редкая ситуацияклиент нужно заранее запустить с разрешённой отладкой
Командная строкаповторяемые тесты, ярлыки для тестировщиковнадо помнить ключи и адрес сервера отладки

Отладка в разных режимах: файловая база, сервер, тонкий и толстый клиент

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

В файловом варианте и клиентский, и «серверный» код выполняются в процессе клиента. Ничего дополнительно включать не нужно: F5 — и отлаживаются все модули, включая процедуры с директивой &НаСервере.

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

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

На Windows ключи прописывают в строку запуска службы агента сервера 1С (параметр ImagePath службы в реестре в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services). Фрагмент строки выглядит так:

"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"

Номер версии и пути возьмите из своей текущей строки — меняйте только ключи отладки, остальное не трогайте.

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

Если серверная отладка не включена, клиентский код отлаживается как обычно, а точки останова в серверных процедурах молча пропускаются. Это самая частая жалоба новичков.

Тонкий и толстый клиент

В тонком клиенте на клиенте выполняется только код с &НаКлиенте. Всё остальное — на сервере, и в клиент-серверной базе требует серверной отладки.

В толстом клиенте (обычное приложение) модули объектов и общие модули с флагом «Клиент (обычное приложение)» могут выполняться прямо на клиенте. Поэтому одна и та же процедура в толстом клиенте может остановиться на точке, а в тонком — нет. Отлаживайте в том клиенте, в котором работает пользователь.

Веб-клиент

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

Горячие клавиши и приёмы, которые экономят время

Основные клавиши отладчика

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

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

Цикл по 5 000 строкам, а ошибка на одной? Не жмите F5 5 000 раз. Поставьте точку, откройте её свойства (через список точек останова или контекстное меню на точке) и задайте условие, например:

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

Выполнение остановится только на нужной строке.

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

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

Табло и вычисление выражения

  • 📌 Табло — закрепите в нём переменные, которые хотите видеть на каждом шаге. Таблицы значений и результаты запросов раскрываются прямо там.
  • 🧮 Вычислить выражение (Shift+F9) — проверьте выражение без правки кода: ТаблицаТоваров.Итог("Сумма"), Запрос.Выполнить().Выгрузить().

💡 Подсказка: выделите переменную в модуле и нажмите Shift+F9 — она подставится в поле выражения автоматически.

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

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

Сложные сценарии: фоновые задания, расширения, интеграции

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

Фоновое задание выполняется в отдельном сеансе, поэтому точка останова в его процедуре не сработает, если отладчик не подключён к этому сеансу. Решение — автоматическое подключение:

  1. Откройте Отладка → Подключение.
  2. Нажмите кнопку автоматического подключения.
  3. Отметьте тип предметов отладки «Фоновое задание».
  4. Запустите задание (из программы или дождитесь расписания регламентного) — отладчик подключится сам.

В клиент-серверной базе фоновые задания выполняются на сервере, значит, нужна включённая серверная отладка.

💡 Чтобы не ждать расписания, временно вызовите процедуру задания напрямую из обработки на сервере. Логика та же, а отлаживать проще.

Расширения конфигурации

Модули расширения отлаживаются так же, как основная конфигурация: откройте расширение в конфигураторе (Конфигурация → Расширения конфигурации), поставьте точку в его модуле, F5.

Подводные камни:

  • 🔄 расширение должно быть применено к базе: после правки его тоже нужно обновить в базе данных, иначе выполнится старая версия;
  • 🧩 если метод расширения помечен &Вместо и не вызывает ПродолжитьВызов(), точка в исходной процедуре типовой конфигурации не сработает — её код просто не выполняется;
  • ✅ проверьте, что расширение активно и у него не стоит запрет на работу в безопасном режиме, если код обращается к файлам или внешним ресурсам.

HTTP-сервисы, веб-сервисы и внешние соединения

Вызов HTTP-сервиса или веб-сервиса приходит извне и выполняется в отдельном сеансе на стороне веб-сервера или сервера 1С. Ловить его вручную бессмысленно — используйте то же автоматическое подключение, отметив нужный тип: HTTP-сервис, веб-сервис или COM-соединение.

Порядок:

  1. Включите автоматическое подключение для нужного типа предметов отладки.
  2. Поставьте точку в модуле сервиса.
  3. Отправьте запрос из внешней системы или из Postman.

Если сервис опубликован на веб-сервере, в настройках публикации должна быть разрешена отладка — без этого сеанс к отладчику не подключится.

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

Если отладка не запускается или точка не срабатывает

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

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

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

Можно ли отлаживать без конфигуратора?
Да, есть среда разработки 1С:EDT с собственным отладчиком. Но для типовых конфигураций и небольших доработок конфигуратора достаточно.
Нужна ли отдельная лицензия для отладки?
Отдельной лицензии на отладку нет. Клиент, который запускается по F5, занимает обычную клиентскую лицензию, как любой другой сеанс.
Почему значения в табло показываются как «<Неопределено>»?
Переменная ещё не получила значение на этой строке или находится вне видимости текущей процедуры. Шагните дальше (F10) или поднимитесь по стеку вызовов к нужной процедуре.
Можно ли отладить внешнюю обработку?
Да. Откройте файл обработки в конфигураторе, поставьте точку в её модуле и откройте эту же обработку в запущенном клиенте через «Файл → Открыть». Файл должен быть тем же, что открыт в конфигураторе.
Как отладить код, который выполняется при запуске программы?
Поставьте точку в модуле приложения или в обработчике «ПриНачалеРаботыСистемы» и запустите по F5 — отладчик подключается до выполнения этих обработчиков.