Разработка и Конфигурация · 9 мин
Как проверить значение переменной в 1С
Как проверить значение переменной в 1С: точки останова, табло, вычисление выражений, Сообщить() и журнал регистрации. Пошаговые инструкции и типичные ошибки.
Проверка значения переменной — базовая операция при отладке кода в 1С. Быстрее всего это делается через встроенный отладчик конфигуратора: ставится точка останова, программа приостанавливается, и вы видите текущее значение переменной в окне «Табло» или через «Вычислить выражение». Для серверного кода, где отладчик недоступен, используются вывод сообщений и запись в журнал регистрации.
Выбор способа зависит от контекста: где выполняется код (клиент или сервер), есть ли у вас права на запуск отладки и возможность остановить работу пользователей. Ниже разобраны все основные методы с точными шагами, их ограничения и типичные ошибки.
Как запустить отладку в 1С
Отладчик встроен в конфигуратор и не требует дополнительной установки. Перед началом убедитесь, что у вашего пользователя есть роль или право «Отладка», а в сервисе сеансов информационной базы (для клиент-серверного варианта) не запрещена отладка.
Порядок запуска: откройте конфигуратор, откройте нужный модуль, установите точку останова на строке, где хотите проверить переменную (клавиша F9 или двойной клик по полю слева от строки). Затем запустите отладку через меню «Отладка → Начать отладку» или клавишей F5. Конфигуратор откроет сеанс предприятия, и при выполнении кода программа остановится на вашей точке.
Для файловой базы отладка работает сразу. Для клиент-серверной базы нужно, чтобы сервер 1С был запущен в режиме отладки (параметр -debug для службы агента сервера), иначе серверные процедуры не остановятся, и вы увидите только клиентский код.
- 1Откройте конфигуратор и нужный модуль, поставьте точку останова (F9) на строке после присвоения переменной
- 2Запустите отладку (F5) и выполните в сеансе действие, которое вызывает код
- 3Когда выполнение остановится, выделите имя переменной и нажмите Shift+F9 — значение появится в окне «Табло»
- 4Для сложных выражений используйте «Вычислить выражение» (Ctrl+F9) и введите, например, ТипЗнч(Переменная)
- 5Продолжите выполнение (F5) или пошагово пройдите код клавишами F10/F11, наблюдая изменение значения
Способы посмотреть значение в момент остановки
Табло (Shift+F9)
Табло — основное окно просмотра значений. Выделите переменную в коде и нажмите Shift+F9: она добавится в табло вместе с типом и значением. Табло сохраняет список выражений между остановками, поэтому удобно следить, как значение меняется при движении по коду. Для объектов (справочников, документов, таблиц значений) в табло отображается представление, а структуру можно развернуть кнопкой «Показать значение в отдельном окне» (F2).
Вычислить выражение (Ctrl+F9)
Окно «Вычислить выражение» позволяет не только посмотреть переменную, но и выполнить произвольный код в текущем контексте: ТипЗнч(Сумма), ТаблицаТоваров.Количество(), ЗначениеЗаполнено(Контрагент). Это основной инструмент, когда нужно проверить не само значение, а его свойства или результат функции от него.
Локальные переменные
Окно «Локальные переменные» (меню «Отладка») показывает все переменные текущей процедуры автоматически, без ручного добавления. Удобно, когда нужно сразу увидеть картину целиком: какие значения приняли параметры процедуры и промежуточные переменные.
Остановка по условию и по ошибке
Если код выполняется в цикле сотни раз, останавливаться на каждой итерации неудобно. Кликните правой кнопкой по точке останова, выберите «Точка останова с условием» и задайте выражение, например Контрагент = Неопределено или Счетчик > 100. Программа остановится только когда условие станет истинным — это самый быстрый способ поймать момент, когда переменная принимает «плохое» значение.
Отдельный полезный режим — «Остановка по ошибке» (меню «Отладка»). Когда включён, программа прерывается в момент возникновения исключения, и вы можете посмотреть значения всех переменных в точке сбоя, а не гадать по тексту ошибки. Проверьте, что флаг активен, если ошибка «проскакивает» и вы не успеваете увидеть контекст.
Как выбрать способ проверки
Проверка без отладчика: Сообщить и журнал регистрации
Когда отладчик недоступен (рабочая база, фоновые задания, веб-клиент без настройки), значение выводят программно. Простейший вариант — оператор Сообщить():
Сообщить("Сумма документа = " + СуммаДокумента + ", тип: " + ТипЗнч(СуммаДокумента));
Для серверного кода и фоновых заданий, где сообщения пользователю не доходят, используйте запись в журнал регистрации:
ЗаписьЖурналаРегистрации("Отладка.ПроверкаПеременной",
УровеньЖурналаРегистрации.Информация,,,
"СуммаДокумента = " + СуммаДокумента);
После выполнения откройте журнал регистрации (в конфигураторе: «Администрирование → Журнал регистрации») и отфильтруйте по событию. Не забудьте удалить или закомментировать отладочные строки после проверки — лишние записи замедляют работу и засоряют журнал, а Сообщить() на сервере может вообще не отображаться у пользователя.
Как проверить тип и содержимое сложных значений
Частая ситуация: переменная выглядит «пустой», но проверка Если Переменная = "" Тогда не срабатывает. Причина — несовпадение типов: в переменной может быть Неопределено, NULL (из запроса), пустая ссылка или число 0. Всегда проверяйте тип через ТипЗнч() в окне «Вычислить выражение», а для универсальной проверки пустоты используйте ЗначениеЗаполнено(Переменная) — она корректно обрабатывает все варианты.
Для коллекций простое значение в табло малоинформативно. Таблицу значений удобно смотреть через F2 (откроется окно с содержимым), массив — через Массив.Количество() и обращение к элементам по индексу, структуру — разворачивая её в табло. Для ссылочных объектов проверяйте Ссылка.Пустая() и реквизиты через точку, помня, что обращение к реквизитам ссылки на сервере вызывает запрос к базе.
Частые вопросы
Почему точка останова не срабатывает?
Чаще всего код просто не выполняется в вашем сценарии — проверьте, что вызывается именно эта процедура. Другие причины: отлаживается не та база, сервер не запущен в режиме отладки (для серверного кода), модуль скомпилирован в другой версии — помогает обновление конфигурации базы данных и перезапуск отладки.
Как посмотреть переменную в фоновом задании?
Отладчик к уже запущенному фоновому заданию подключить сложно, поэтому практичный способ — ЗаписьЖурналаРегистрации() внутри кода задания. Альтернатива: временно вызвать ту же процедуру синхронно из тестового сеанса и отладить её обычным способом.
Чем отличается Табло от «Вычислить выражение»?
Табло — постоянный список выражений, значения которых обновляются при каждой остановке. «Вычислить выражение» — разовое выполнение произвольного кода в текущем контексте. Табло удобно для наблюдения, «Вычислить выражение» — для проверки свойств и вызова функций.
Как проверить значение, которое приходит из запроса?
Проверьте результат через РезультатЗапроса.Пустой, затем выгрузите выборку и в отладчике посмотрите поля через табло. Учитывайте, что отсутствующие значения в запросе возвращаются как NULL, а не Неопределено — проверяйте через Значение ЕСТЬ NULL в тексте запроса или функцию ЕстьNull() в коде.
Можно ли изменить значение переменной прямо в отладчике?
Да: в окне «Вычислить выражение» или табло для многих значений доступно редактирование (кнопка изменения значения или F2 в поле значения). Это позволяет проверить поведение кода при другом значении без перезапуска сеанса, но изменение действует только в текущем выполнении.
Что делать, если переменной нет в табло после остановки?
Проверьте, что выполнение остановилось внутри области видимости переменной (в той же процедуре) и что она объявлена. Если переменная объявлена через Перем в другом модуле, обращайтесь к ней с учётом контекста модуля. Также убедитесь, что в табло добавлено именно то имя — опечатка даст ошибку вычисления.
Что важно запомнить
Главный инструмент проверки переменных в 1С — отладчик: точка останова (F9), табло (Shift+F9) и вычисление выражений (Ctrl+F9). Для циклов используйте условные точки останова, для серверного и фонового кода — журнал регистрации. Всегда проверяйте тип через ТипЗнч() и пустоту через ЗначениеЗаполнено(), отлаживайтесь на копии базы и удаляйте отладочный код после проверки.