Отладчик 1С: как запустить, настроить и найти ошибку в коде

· 9 мин

Содержание

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

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

1. Подготовка: что нужно до запуска отладки

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

Что проверить заранее:

  • 🔑 База открыта в Конфигураторе, а у пользователя есть право на режим отладки. Для учётной записи с ограниченными ролями уточните это у администратора.
  • 📝 Код, который отлаживаете, находится в загруженной конфигурации. Для типовой конфигурации на поддержке сначала оформите изменения через расширение или разрешите правку: иначе отлаживать придётся только чтение чужого кода.
  • 🧩 Модуль сохранён. Точка останова, поставленная в несохранённом модуле, привяжется к старому тексту и сдвинется.
  • 🖥️ Тип запуска. Тонкий клиент, толстый клиент и веб-клиент отлаживаются по-разному: для тонкого и толстого достаточно F5, для веб-клиента нужно подключаться к уже запущенному сеансу.

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

Режим запуска клиента

В Сервис → Параметры (вкладка запуска 1С:Предприятия) задаётся, какой клиент открывать по F5: тонкий или толстый. Для типовых задач на управляемых формах берите тонкий клиент, он ближе к реальной работе пользователей. Толстый нужен для старых обычных форм и некоторых режимов вроде загрузки данных.

2. Как запустить отладку и убедиться, что она работает

Шаги простой проверки:

  1. Откройте модуль, например модуль объекта документа.
  2. Поставьте курсор на строку внутри процедуры, например на ПередЗаписью.
  3. Нажмите F9: слева появится красный кружок, точка останова.
  4. Нажмите F5. Откроется окно предприятия.
  5. Откройте документ и нажмите «Записать».
  6. Конфигуратор выйдет на передний план, строка подсветится жёлтой стрелкой.

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

Отладка на сервере и в веб-клиенте

Код в серверных процедурах (с директивой &НаСервере) выполняется в процессе сервера, и отладчик цепляется к нему через сеть. Для файловой базы это происходит само. Для клиент-серверной базы сервер должен допускать отладку: у службы запуска сервера 1С указывается ключ отладки, а в параметрах Конфигуратора выбирается протокол подключения. Если сервер удалённый, обычно открывают порт отладчика для вашего компьютера.

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

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

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

Точка останова — отметка, на которой выполнение замирает. Главные клавиши:

ДействиеКлавишаКогда использовать
Поставить/снять точкуF9Любая строка с исполняемым кодом
Шаг с заходомF11Нужно увидеть, что внутри вызываемой процедуры
Шаг в обходF10Вызов вам не интересен, идём к следующей строке
ПродолжитьF5Выполнять до следующей точки

Выход из процедуры и выполнение до курсора есть в меню Отладка вместе с горячими клавишами. Они показаны справа от названия команды.

Условные точки

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

В тех же свойствах можно указать число проходов до остановки. Это удобно, когда ошибка проявляется на каком-то по счёту элементе.

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

В меню Отладка есть режим остановки по ошибке. Включите его, когда не знаете, где падает программа: при первом необработанном исключении отладчик остановится на проблемной строке. А вот ошибки внутри Попытка … Исключение могут быть «проглочены», для них нужна отдельная настройка остановки при перехваченных исключениях.

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

4. Значения переменных, табло и стек вызовов

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

  • 👆 Наведите курсор на имя переменной: появится подсказка со значением. Для таблицы значений покажет число строк.
  • 📊 Окно «Табло» держит выражения, которые вы вычисляете постоянно. Добавьте туда Объект.Дата или СписокСтрок.Количество().
  • 🧮 Команда «Вычислить выражение» выполняет произвольное выражение на текущей строке. Можно вызвать функцию модуля или проверить условие.
  • 📚 Окно «Стек вызовов» показывает цепочку: из какой процедуры вызвана текущая, кто вызвал её и так до события формы или команды.

Что даёт стек вызовов

Стек отвечает на вопрос «кто это вызвал». Найдена ошибка в общей функции, и вызывается она из пяти мест? Смотрите стек, двойной клик по строке стека переносит в нужный модуль с контекстом вызова.

Пример: падение в РасчётСуммы с пустым значением. Стек показывает, что вызов шёл из обработчика ПриИзменении реквизита. Значит, пустое значение пришло из формы, а не из базы, и править нужно проверку в обработчике.

Изменение значения на лету

В окне табло можно присвоить переменной новое значение и проверить сценарий без правки кода. Хорошо для «а что будет, если здесь придёт ноль». Но помните: изменение живёт до конца сеанса отладки, в модуль оно не записывается.

Если выражение не вычисляется и пишет «не удалось», проверьте, что остановка произошла в нужном контексте: клиентские переменные недоступны, пока вы стоите в серверном коде, и наоборот.

5. Профилирование: замер производительности

Отладчик показывает, где и почему код ломается. Профилировщик отвечает на другой вопрос: где он тормозит. В Конфигураторе это команда замера производительности в меню Отладка.

Порядок работы:

  1. Включите замер перед сценарием.
  2. Выполните операцию, например проведите документ или сформируйте отчёт.
  3. Остановите замер и откройте результат.
  4. Отсортируйте по времени выполнения или по числу вызовов.

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

  • 🐌 Запрос в цикле. Одна строка с вызовом запроса выполняется тысячи раз, и именно она съедает время.
  • 🔁 Повторное обращение к реквизиту через точку к ссылке: каждое обращение читает объект из базы.
  • 📦 Лишнее чтение данных: «Получить объект» ради одного поля, когда хватило бы ЗначениеРеквизитаОбъекта.

Для сравнения «до» и «после» сохраните результаты замера в файл и откройте оба. Цифры скажут, помогла ли правка.

Замер заметно замедляет выполнение, поэтому абсолютные цифры на замере выше обычных. Смотрите на доли и на лидеров списка, а не на секунды.

Для медленных запросов к СУБД часто лучше работает технологический журнал платформы: он показывает длительность операций на уровне сервера. Но это отдельный инструмент со своим файлом настроек, и для первичной проверки хватает замера из Конфигуратора.

6. Журнал регистрации и системные логи

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

Открыть его можно из Конфигуратора командой Администрирование → Журнал регистрации. В режиме 1С:Предприятие журнал находится в служебных функциях программы, обычно через Все функции.

Как искать:

  1. Задайте период, в который произошёл сбой.
  2. Отфильтруйте по уровню «Ошибка».
  3. Добавьте пользователя или компьютер, если известен.
  4. Откройте запись и прочитайте комментарий: там текст исключения, а иногда и имя модуля.

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

Когда журнала мало

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

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

7. Отладчик не подключается: частые причины

Если до этого шаг за шагом было «просто работает», здесь собраны сбои, на которые уходит больше всего времени.

СимптомВероятная причинаЧто проверить
Окно предприятия открывается, остановок нетТочка стоит не в том модуле или код не вызываетсяПоставьте точку на первой строке процедуры, проверьте, что сценарий действительно её вызывает
Точка серая или с крестикомМодуль изменён после запуска, привязка к старому текстуСохраните модуль, перезапустите отладку
Серверный код не останавливаетсяСервер не принимает отладку или закрыт портПроверьте ключ отладки службы сервера, протокол и доступность порта с вашей машины
Веб-клиент не подключаетсяСеанс запущен без отладкиПодключитесь через Отладка → Подключение, перезапустите сеанс
Остановка в чужом сеансеВключено автоподключение к любым сеансамОтключите автоподключение или ограничьте список сеансов

Диагностика по порядку

  • ✅ Сначала убедитесь, что тонкий клиент вообще запускается по F5 на файловой тестовой базе. Если там работает, проблема в сервере или сети.
  • ✅ Затем проверьте, что версии платформы у Конфигуратора и сервера совпадают: разные релизы дают странные отключения отладчика.
  • ✅ Потом сравните протоколы: если Конфигуратор ждёт одно подключение, а сервер использует другое, связи не будет.
  • ✅ Напоследок проверьте брандмауэр и антивирус. Они любят резать порты отладки.

Меняя настройки службы сервера 1С, помните: перезапуск службы оборвёт сеансы всех пользователей. Делайте это вне рабочих часов или на тестовом сервере.

Проверка отладчика за пять минут
Выполнено: 0 / 6

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

Чем отладка отличается от профилирования?
Отладка останавливает код и показывает значения, чтобы найти логическую ошибку. Профилирование измеряет время и число вызовов, чтобы найти медленные места.
Можно ли отлаживать без Конфигуратора?
Для обычной работы с кодом нужен Конфигуратор. Он запускает клиент в режиме отладки или подключается к уже работающему сеансу.
Почему точка останова не срабатывает на сервере?
Чаще всего сервер запущен без разрешения на отладку, закрыт порт, или модуль после запуска изменили. Сохраните модуль, проверьте настройки службы сервера и порт.
Влияет ли отладка на данные в базе?
Сама остановка данные не меняет. Но если вы выполняете запись или проведение документа в отладке, изменения попадают в базу, как в обычной работе. Для экспериментов берите копию.
Как отладить код, который запускается по расписанию?
Включите автоподключение к новым сеансам и поставьте точку в процедуре задания. Когда расписание запустит задание, отладчик подключится к нему.