Отладчик 1С: как запустить, настроить и найти ошибку в коде
Содержание
Отладка в 1С запускается из Конфигуратора командой Отладка → Начать отладку (клавиша F5). Платформа открывает клиент в режиме 1С:Предприятия, и выполнение кода останавливается на точках останова. Если точек нет, программа просто отработает до конца, и у новичка создаётся впечатление, что «отладчик не работает
». На самом деле он включён, ему не сказали, где остановиться.
Проверить Debug в 1С можно за пять минут: поставьте точку останова на первой строке нужной процедуры, запустите отладку и повторите действие в программе. Если окно кода открылось на подсвеченной строке, связка Конфигуратор — клиент — сервер исправна. Ниже подробно: как подготовить среду, чем ходить по коду, как смотреть значения, как найти медленные места и что делать, когда отладка не подключается.
1. Подготовка: что нужно до запуска отладки
Отладчик живёт в Конфигураторе. Открыть базу для отладки можно только в нём, из обычного окна запуска (режим 1С:Предприятие) точки останова не сработают.
Что проверить заранее:
- 🔑 База открыта в Конфигураторе, а у пользователя есть право на режим отладки. Для учётной записи с ограниченными ролями уточните это у администратора.
- 📝 Код, который отлаживаете, находится в загруженной конфигурации. Для типовой конфигурации на поддержке сначала оформите изменения через расширение или разрешите правку: иначе отлаживать придётся только чтение чужого кода.
- 🧩 Модуль сохранён. Точка останова, поставленная в несохранённом модуле, привяжется к старому тексту и сдвинется.
- 🖥️ Тип запуска. Тонкий клиент, толстый клиент и веб-клиент отлаживаются по-разному: для тонкого и толстого достаточно
F5, для веб-клиента нужно подключаться к уже запущенному сеансу.
Не отлаживайте рабочую базу в часы работы бухгалтеров. Остановка на точке замораживает ваш сеанс, а при серверных блокировках может подвесить чужие операции. Берите копию базы или тестовую.
Режим запуска клиента
В Сервис → Параметры (вкладка запуска 1С:Предприятия) задаётся, какой клиент открывать по F5: тонкий или толстый. Для типовых задач на управляемых формах берите тонкий клиент, он ближе к реальной работе пользователей. Толстый нужен для старых обычных форм и некоторых режимов вроде загрузки данных.
2. Как запустить отладку и убедиться, что она работает
Шаги простой проверки:
- Откройте модуль, например модуль объекта документа.
- Поставьте курсор на строку внутри процедуры, например на
ПередЗаписью. - Нажмите
F9: слева появится красный кружок, точка останова. - Нажмите
F5. Откроется окно предприятия. - Откройте документ и нажмите «Записать».
- Конфигуратор выйдет на передний план, строка подсветится жёлтой стрелкой.
Если стрелка появилась, отладчик работает. Если окно предприятия открылось, а остановки нет, переходите в раздел с ошибками ниже.
Отладка на сервере и в веб-клиенте
Код в серверных процедурах (с директивой &НаСервере) выполняется в процессе сервера, и отладчик цепляется к нему через сеть. Для файловой базы это происходит само. Для клиент-серверной базы сервер должен допускать отладку: у службы запуска сервера 1С указывается ключ отладки, а в параметрах Конфигуратора выбирается протокол подключения. Если сервер удалённый, обычно открывают порт отладчика для вашего компьютера.
Для веб-клиента или сеанса, который уже запущен, используйте Отладка → Подключение: Конфигуратор покажет список доступных сеансов отладки, и вы подключитесь к нужному.
Если нужно отлаживать фоновое задание или код, который стартует не от кнопки, настройте автоподключение: Конфигуратор сам цепляется к новым сеансам в этой базе.
3. Точки останова и пошаговое выполнение
Точка останова — отметка, на которой выполнение замирает. Главные клавиши:
| Действие | Клавиша | Когда использовать |
|---|---|---|
| Поставить/снять точку | F9 | Любая строка с исполняемым кодом |
| Шаг с заходом | F11 | Нужно увидеть, что внутри вызываемой процедуры |
| Шаг в обход | F10 | Вызов вам не интересен, идём к следующей строке |
| Продолжить | F5 | Выполнять до следующей точки |
Выход из процедуры и выполнение до курсора есть в меню Отладка вместе с горячими клавишами. Они показаны справа от названия команды.
Условные точки
Остановка на каждой итерации цикла по 5000 строк убивает время. Откройте свойства точки (контекстное меню на красном кружке) и задайте условие, например Строка.Номенклатура = Неопределено. Выполнение остановится только на подходящей итерации.
В тех же свойствах можно указать число проходов до остановки. Это удобно, когда ошибка проявляется на каком-то по счёту элементе.
Остановка по ошибке
В меню Отладка есть режим остановки по ошибке. Включите его, когда не знаете, где падает программа: при первом необработанном исключении отладчик остановится на проблемной строке. А вот ошибки внутри Попытка … Исключение могут быть «проглочены», для них нужна отдельная настройка остановки при перехваченных исключениях.
Не оставляйте точки останова в рабочей конфигурации. Точка живёт в вашем Конфигураторе, а не в базе, но привычка ставить отметки в общем хранилище создаёт путаницу.
4. Значения переменных, табло и стек вызовов
Остановились на строке — теперь надо понять, что в переменных.
- 👆 Наведите курсор на имя переменной: появится подсказка со значением. Для таблицы значений покажет число строк.
- 📊 Окно «Табло» держит выражения, которые вы вычисляете постоянно. Добавьте туда
Объект.ДатаилиСписокСтрок.Количество(). - 🧮 Команда «Вычислить выражение» выполняет произвольное выражение на текущей строке. Можно вызвать функцию модуля или проверить условие.
- 📚 Окно «Стек вызовов» показывает цепочку: из какой процедуры вызвана текущая, кто вызвал её и так до события формы или команды.
Что даёт стек вызовов
Стек отвечает на вопрос «кто это вызвал». Найдена ошибка в общей функции, и вызывается она из пяти мест? Смотрите стек, двойной клик по строке стека переносит в нужный модуль с контекстом вызова.
Пример: падение в РасчётСуммы с пустым значением. Стек показывает, что вызов шёл из обработчика ПриИзменении реквизита. Значит, пустое значение пришло из формы, а не из базы, и править нужно проверку в обработчике.
Изменение значения на лету
В окне табло можно присвоить переменной новое значение и проверить сценарий без правки кода. Хорошо для «а что будет, если здесь придёт ноль». Но помните: изменение живёт до конца сеанса отладки, в модуль оно не записывается.
Если выражение не вычисляется и пишет «не удалось», проверьте, что остановка произошла в нужном контексте: клиентские переменные недоступны, пока вы стоите в серверном коде, и наоборот.
5. Профилирование: замер производительности
Отладчик показывает, где и почему код ломается. Профилировщик отвечает на другой вопрос: где он тормозит. В Конфигураторе это команда замера производительности в меню Отладка.
Порядок работы:
- Включите замер перед сценарием.
- Выполните операцию, например проведите документ или сформируйте отчёт.
- Остановите замер и откройте результат.
- Отсортируйте по времени выполнения или по числу вызовов.
В таблице результата видно построчно: сколько времени ушло на строку, сколько раз она выполнялась, какая доля общего времени. Типичные находки:
- 🐌 Запрос в цикле. Одна строка с вызовом запроса выполняется тысячи раз, и именно она съедает время.
- 🔁 Повторное обращение к реквизиту через точку к ссылке: каждое обращение читает объект из базы.
- 📦 Лишнее чтение данных: «Получить объект» ради одного поля, когда хватило бы
ЗначениеРеквизитаОбъекта.
Для сравнения «до» и «после» сохраните результаты замера в файл и откройте оба. Цифры скажут, помогла ли правка.
Замер заметно замедляет выполнение, поэтому абсолютные цифры на замере выше обычных. Смотрите на доли и на лидеров списка, а не на секунды.
Для медленных запросов к СУБД часто лучше работает технологический журнал платформы: он показывает длительность операций на уровне сервера. Но это отдельный инструмент со своим файлом настроек, и для первичной проверки хватает замера из Конфигуратора.
6. Журнал регистрации и системные логи
Отладчик нужен, когда вы сидите рядом с базой. Что делать с ошибкой, которая случилась у пользователя вчера? Здесь выручает журнал регистрации.
Открыть его можно из Конфигуратора командой Администрирование → Журнал регистрации. В режиме 1С:Предприятие журнал находится в служебных функциях программы, обычно через Все функции.
Как искать:
- Задайте период, в который произошёл сбой.
- Отфильтруйте по уровню «Ошибка».
- Добавьте пользователя или компьютер, если известен.
- Откройте запись и прочитайте комментарий: там текст исключения, а иногда и имя модуля.
Журнал фиксирует вход пользователей, запись и проведение документов, ошибки при выполнении. Не пишет он только то, что вы не настроили: например, подробности чтения данных, если для них отключено событие.
Когда журнала мало
Журнал хранит записи не вечно, его размер ограничивают настройками, а при переносе или сжатии старые записи могут быть потеряны. Для долгой истории настройте периодическое разделение журнала или ротацию. Для разовых расследований достаточно выгрузки нужного периода в файл.
Для файловых баз дополнительно смотрите окно ошибки, если она показана пользователю: в нём есть кнопка подробного текста. Скопируйте его целиком, в нём указана строка модуля.
7. Отладчик не подключается: частые причины
Если до этого шаг за шагом было «просто работает», здесь собраны сбои, на которые уходит больше всего времени.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Окно предприятия открывается, остановок нет | Точка стоит не в том модуле или код не вызывается | Поставьте точку на первой строке процедуры, проверьте, что сценарий действительно её вызывает |
| Точка серая или с крестиком | Модуль изменён после запуска, привязка к старому тексту | Сохраните модуль, перезапустите отладку |
| Серверный код не останавливается | Сервер не принимает отладку или закрыт порт | Проверьте ключ отладки службы сервера, протокол и доступность порта с вашей машины |
| Веб-клиент не подключается | Сеанс запущен без отладки | Подключитесь через Отладка → Подключение, перезапустите сеанс |
| Остановка в чужом сеансе | Включено автоподключение к любым сеансам | Отключите автоподключение или ограничьте список сеансов |
Диагностика по порядку
- ✅ Сначала убедитесь, что тонкий клиент вообще запускается по
F5на файловой тестовой базе. Если там работает, проблема в сервере или сети. - ✅ Затем проверьте, что версии платформы у Конфигуратора и сервера совпадают: разные релизы дают странные отключения отладчика.
- ✅ Потом сравните протоколы: если Конфигуратор ждёт одно подключение, а сервер использует другое, связи не будет.
- ✅ Напоследок проверьте брандмауэр и антивирус. Они любят резать порты отладки.
Меняя настройки службы сервера 1С, помните: перезапуск службы оборвёт сеансы всех пользователей. Делайте это вне рабочих часов или на тестовом сервере.