Отладка 1С выполняется встроенным отладчиком конфигуратора: вы ставите точку останова (F9), запускаете отладку (F5), а когда выполнение остановилось — смотрите значения переменных через «Вычислить выражение» (Shift+F9) и идёте по коду шагами F10 и F11. Если место ошибки неизвестно, включите «Остановку по ошибке»: отладчик сам остановится на строке, где возникло исключение.
Ниже — набор приёмов, которыми я пользуюсь каждый день на сопровождении: от базовых команд до отладки серверных вызовов и фоновых заданий. Это шпаргалка для программиста 1С, а не пересказ справки.
С чего начинать поиск ошибки
Порядок, который экономит больше всего времени:
- Посмотреть журнал регистрации. Большинство ошибок там уже есть: текст, пользователь, время, иногда объект. В типовых конфигурациях журнал открывается и в режиме предприятия: «Администрирование → Обслуживание → Журнал регистрации». Отбор по уровню «Ошибка» и периоду быстро сужает поиск.
- Воспроизвести ошибку под отладкой с включённой остановкой по ошибке.
- Разобрать состояние в точке остановки: переменные, стек вызовов, параметры.
- Только потом править код.
Ещё один быстрый путь: если ошибка возникает в сеансе, запущенном из конфигуратора, в окне сообщения об ошибке есть кнопка «Конфигуратор». Она сразу открывает модуль на строке, где произошло исключение. В обычном пользовательском сеансе этой кнопки нет.
Остановка по ошибке
Меню «Отладка → Остановка по ошибке». Варианты:
- останавливаться на любой ошибке;
- останавливаться только на ошибках, текст которых содержит заданную подстроку.
Второй вариант полезен в больших конфигурациях: часть ошибок перехватывается в Попытка … Исключение и считается штатной, и без фильтра отладчик будет останавливаться на каждой. Задайте фрагмент текста вашей ошибки — и попадёте точно в нужное место.
Точки останова и точки с условием
F9 ставит и снимает точку останова на текущей строке. Когда точек много, пригодится окно «Отладка → Список точек останова»: в нём точки можно отключать без удаления, переходить к строке двойным щелчком, сохранять список и загружать обратно. Я сохраняю наборы точек под конкретную задачу, чтобы вернуться к ней через неделю.
Точка останова с условием задаётся там же, в меню «Отладка». Условие пишется на встроенном языке и вычисляется в контексте строки:
// Остановиться только на нужной строке табличной части
СтрокаТовары.Номенклатура.Код = "00-00001234"// Остановиться на проблемной итерации большого цикла
НомерИтерации > 15000 И Сумма = 0Условные точки спасают при отладке обработок, которые крутят десятки тысяч записей: без условия пришлось бы нажимать F5 до бесконечности.

Трассировка: команды и горячие клавиши
| Действие | Клавиша | Что делает |
|---|---|---|
| Начать или продолжить отладку | F5 | Выполняет код до следующей точки останова |
| Точка останова | F9 | Ставит или снимает точку на строке |
| Шагнуть через | F10 | Выполняет строку целиком, не заходя в вызываемые процедуры |
| Шагнуть в | F11 | Заходит внутрь вызываемой процедуры или функции |
| Шагнуть из | Shift+F11 | Досрочно выходит из текущей процедуры к вызывающему коду |
| Вычислить выражение | Shift+F9 | Открывает окно вычисления для выделенного фрагмента |
Разница между F10 и F11 — главное, что нужно запомнить. Если строка вызывает тяжёлую функцию, в которой вы уверены, используйте F10. Если подозреваете проблему внутри — F11.
Вычислить выражение и табло
Окно «Вычислить выражение» работает только когда выполнение остановлено: на точке останова или при остановке по ошибке. Его возможности шире, чем кажется:
- Просмотр значения. Выделите переменную или выражение и нажмите Shift+F9. Для коллекций доступно раскрытие по уровням, для таблиц значений — просмотр строк.
- Произвольное выражение. В поле ввода можно написать код и сразу получить результат. Например, проверить запрос, не меняя модуль:
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Документ, "Организация")- Подмена значения. Выделите переменную и задайте новое значение выражением. Удобно, чтобы пройти другую ветку кода, не создавая тестовые данные. Изменение живёт только до конца сеанса отладки.
- Табло. Выражение можно отправить в табло — окно, где значения обновляются на каждом шаге трассировки. Туда я выношу 3–5 ключевых переменных цикла и смотрю, на каком шаге что-то идёт не так.
Осторожно с выражениями, у которых есть побочные эффекты. Вызов функции, которая пишет в базу, из окна вычисления действительно запишет данные.
Стек вызовов
«Отладка → Стек вызовов» показывает цепочку процедур, которая привела к текущей строке. По стеку можно подняться к вызывающему коду и посмотреть его локальные переменные. Это первое, что я открываю при остановке по ошибке в общем модуле: ошибка проявилась здесь, а причина — неверный параметр, переданный тремя уровнями выше.
Отладка серверного кода и фоновых заданий
В клиент-серверном варианте серверный код выполняется в рабочих процессах кластера, и отладчик должен к ним подключиться.
- Отладка на сервере должна быть разрешена. Сервер 1С запускается с параметром, включающим отладку; на рабочих серверах её держат выключенной из соображений производительности и безопасности.
- Протокол отладки. В современных версиях платформы используется отладка по HTTP через сервер отладки; режим выбирается в параметрах конфигуратора. Режим конфигуратора должен совпадать с режимом сервера.
- Предметы отладки. Окно «Отладка → Подключение» показывает доступные сеансы. В настройке автоматического подключения отметьте нужные типы: клиент, сервер, фоновое задание, HTTP-сервис, веб-сервис. Без этого точки останова в фоновом задании или обработчике HTTP-сервиса просто не сработают.
Если отладка «отвалилась» — команды трассировки серые, точки не срабатывают — помогает переподключение через «Отладка → Подключение» или перезапуск отладки.
Для длинных фоновых операций я дополнительно пишу диагностику в журнал регистрации, чтобы не зависеть от отладчика:
Попытка
ВыполнитьРасчет(ПараметрыРасчета);
Исключение
ИнформацияОшибки = ИнформацияОбОшибке();
ЗаписьЖурналаРегистрации("Расчет.ФоновоеЗадание", УровеньЖурналаРегистрации.Ошибка, , ,
ПодробноеПредставлениеОшибки(ИнформацияОшибки));
ВызватьИсключение;
КонецПопытки;ВызватьИсключение без параметров пробрасывает исходную ошибку дальше — она не теряется, а в журнале остаётся подробный текст со стеком.
Отладка под другим пользователем
Ошибка «у меня работает, а у бухгалтера нет» обычно связана с ролями или ограничениями доступа. В конфигураторе: «Сервис → Параметры → Запуск 1С:Предприятия», в разделе пользователя укажите нужное имя и запустите отладку. Сеанс откроется с правами этого пользователя, и вы увидите ту же ошибку. Пароль пользователя для этого не нужен, если вы входите в конфигуратор с административными правами.
Замер производительности
Когда проблема не в ошибке, а в скорости, вместо пошаговой отладки включите «Отладка → Замер производительности». Он покажет, сколько раз выполнялась каждая строка и сколько времени она заняла. Так за минуту находится запрос в цикле или лишнее обращение к реквизиту через точку. Если замедление системное, это уже задача аудита производительности.
Типичные ошибки при отладке
- Отладка рабочей базы с остановкой по любой ошибке: пользователи висят, пока вы разбираетесь. Отлаживайте на копии.
- Забытые точки останова в общих модулях, которые потом срабатывают у коллег при совместной отладке.
- Вызов функций с записью данных из окна «Вычислить выражение».
- Попытка поймать серверную ошибку без подключения к предмету отладки «Сервер» или «Фоновое задание».
- Пустой
Исключение … КонецПопыткив коде: ошибка проглатывается, и остановка по ошибке ничего не покажет.
Если ошибки в доработках повторяются регулярно, полезно взглянуть шире — на качество кода и процесс разработки. Это можно сделать в рамках аудита 1С или при сопровождении 1С.
Коротко
- Начинайте с журнала регистрации, затем включайте остановку по ошибке.
- Условные точки останова экономят время на больших циклах.
- Shift+F9 и табло показывают и меняют значения прямо во время выполнения.
- Для серверного кода и фоновых заданий нужна разрешённая отладка на сервере и подключение к нужным предметам отладки.
- Ошибки, связанные с правами, воспроизводите запуском отладки под нужным пользователем.




