Разработка и Конфигурация · 11 мин
Как открыть локальные переменные в 1С при отладке
Как открыть локальные переменные в 1С через конфигуратор: точки останова, табло, окно выражений, стек вызовов. Пошаговая инструкция, ошибки и ответы на вопросы.
Локальные переменные в 1С существуют только внутри процедуры или функции, в которой они объявлены, и увидеть их «снаружи» кода нельзя — для этого используется встроенный отладчик. Основной способ посмотреть значения локальных переменных — запустить отладку в конфигураторе, остановить выполнение на точке останова и открыть окно «Локальные переменные» (табло).
Такая задача возникает постоянно: нужно понять, почему расчет дает неверный результат, какое значение пришло в параметр, на каком шаге цикла ломается логика. Отладчик 1С позволяет не только читать значения, но и менять их на лету, проверяя гипотезы без изменения кода и перезапуска базы.
Ниже разобраны все рабочие способы: классическое табло, окно «Вычислить выражение», всплывающие подсказки, стек вызовов и особенности отладки серверного кода в клиент-серверном варианте. Отдельно описаны типичные проблемы — когда переменные «не видны» или отладка не останавливается.
Что такое локальные переменные и где они «живут»
Локальная переменная — это переменная, объявленная внутри процедуры или функции (явно через «Перем» или неявно при первом присваивании). Она существует только во время выполнения этой процедуры и недоступна из других процедур, модулей и тем более из режима предприятия в обычной работе.
Параметры процедуры и функции тоже считаются локальными: они отображаются в табло вместе с остальными переменными. Это удобно — при входе в функцию сразу видно, какие аргументы фактически передал вызывающий код, а не те, что «должны были» прийти по замыслу.
Область видимости важна при отладке: табло показывает переменные только той процедуры, в которой выполнение остановлено сейчас. Если нужно посмотреть переменные вызывающей процедуры, придется переключиться по стеку вызовов — об этом ниже.
Подготовка: как включить и запустить отладку
Откройте конфигуратор и проверьте, что отладка разрешена: меню «Сервис → Параметры», вкладка «Запуск 1С:Предприятия», раздел «Отладка» — должен быть выбран протокол отладки (обычно TCP/IP или HTTP, в современных версиях чаще HTTP). Также убедитесь, что в меню «Отладка» включен пункт «Отладка» (галочка «Разрешить отладку»).
Для файловой базы достаточно нажать F5 или выбрать «Отладка → Начать отладку» — конфигуратор сам запустит сеанс предприятия под отладкой. Если сеанс уже запущен, подключите его через «Отладка → Подключение», выбрав нужный сеанс из списка.
В клиент-серверном варианте отладку должен разрешить администратор: в свойствах сервера 1С или в консоли кластера должна быть включена отладка (для HTTP-протокола — соответствующая настройка srv1cv8 или параметр запуска агента). Без этого серверные процедуры останавливаться не будут.
Основной способ: табло локальных переменных
Поставьте точку останова: откройте нужный модуль, найдите строку внутри процедуры и нажмите F9 или кликните по левому полю редактора — появится красный маркер. Запустите отладку (F5) и выполните в предприятии действие, которое вызывает этот код, — например, проведите документ.
Когда выполнение остановится на точке, откройте меню «Отладка → Локальные переменные». Появится табло: слева имена переменных, справа значения и типы. Коллекции (массивы, структуры, таблицы значений) раскрываются крестиком — можно «провалиться» внутрь и посмотреть каждый элемент.
Табло обновляется автоматически при пошаговом выполнении: F11 (шаг с заходом в процедуры), F10 (шаг без захода), Shift+F11 (выход из текущей процедуры). Так можно наблюдать, как переменная меняется на каждой итерации цикла.
- 1Откройте модуль в конфигураторе и поставьте точку останова (F9) внутри процедуры
- 2Запустите отладку клавишей F5 и выполните в предприятии действие, вызывающее код
- 3При остановке откройте «Отладка → Локальные переменные» — появится табло
- 4Раскройте коллекции крестиком, чтобы увидеть элементы массивов и структур
- 5Шагайте по коду (F10/F11) и наблюдайте изменение значений
- 6Снимите точки останова и завершите отладку (Shift+F5)
Альтернативные способы посмотреть значения
Окно «Вычислить выражение»
Сочетание Shift+F9 или «Отладка → Вычислить выражение» открывает окно, где можно ввести любое выражение: имя переменной, обращение к свойству, вызов функции, арифметику. Это удобно, когда нужно не просто значение переменной, а производное от него — например, «ТаблицаТоваров.Количество()» или «СтруктураПараметров.Свойство("Склад")».
Всплывающая подсказка
Во время остановки наведите курсор мыши на переменную прямо в тексте модуля — появится всплывающее значение. Это самый быстрый способ для разовой проверки, но подсказка не раскрывает глубоко вложенные коллекции и исчезает при уходе курсора.
Окно «Наблюдать» (Watches)
Через «Отладка → Наблюдать» можно составить постоянный список выражений, которые будут пересчитываться на каждом шаге. Полезно, когда отслеживаете 3–5 ключевых переменных в длинном цикле и не хотите каждый раз искать их в общем табло.
В табло можно изменить значение переменной прямо во время остановки: встаньте на строку, нажмите F2 или введите новое значение. Это позволяет проверить гипотезу «а что, если бы здесь было другое значение» без правки кода и перезапуска. Изменение действует только в текущем выполнении.
Переменные вызывающих процедур: стек вызовов
Табло показывает только текущую процедуру. Если нужно увидеть локальные переменные той процедуры, которая вызвала текущую, откройте «Отладка → Стек вызовов». В списке отобразится цепочка вызовов от внешнего события до текущей строки.
Двойной клик по строке стека переключает контекст отладчика: табло и «Вычислить выражение» начнут работать с переменными выбранной процедуры, а редактор покажет строку, откуда был сделан вызов. Это незаменимо при расследовании, откуда в функцию пришло «неправильное» значение параметра.
Возврат к текущей точке выполнения — двойной клик по верхней строке стека. Помните, что переключение контекста меняет только просмотр: пошаговое выполнение продолжится с фактической текущей строки.
Особенности клиент-серверного режима и внешних соединений
В клиент-серверной базе код делится на клиентский и серверный. Для отладки серверных процедур нужно, чтобы отладка была разрешена на сервере, а в настройках подключения конфигуратора выбраны предметы отладки — «Сервер» (и при необходимости «Клиент»). Иначе точка останова в серверной процедуре просто не сработает.
Фоновые задания, веб-сервисы и HTTP-сервисы отлаживаются через подключение: «Отладка → Подключение» → выбор нужного сеанса. Предметы отладки настраиваются в том же диалоге через «Предметы отладки». Для фонового задания часто применяют прием: в коде временно добавляют ожидание или используют автоматическое подключение отладчика к новым сеансам.
Как выбрать действие
Типичные ошибки и ограничения
Частая ошибка — попытка посмотреть локальную переменную после выхода из процедуры. Как только выполнение вышло из функции, её переменные уничтожены, и табло покажет уже контекст вызывающего кода. Если значение нужно «вынести наружу», используйте возвращаемое значение, параметр по ссылке (Знач) или временно добавьте вывод через Сообщить().
Вторая ошибка — отладка оптимизированного кода клиентского приложения не является проблемой в 1С (в отличие от компилируемых языков), но переменные могут быть «не видны», если остановка произошла на строке объявления до присваивания: переменная еще не инициализирована и покажет «Неопределено».
Ограничение табло — объемные объекты. Таблица значений на тысячи строк раскрывается медленно, а содержимое COM-объектов и некоторых системных типов может быть недоступно. В таких случаях используйте «Вычислить выражение» с обращением к конкретным строкам и колонкам.
Как проверить результат
Видны имена, типы и значения всех локальных переменных процедуры
Окно пустое или показывает переменные другой процедуры — проверьте контекст в стеке вызовов
Значения в табло меняются после каждого шага F10/F11
Значения не меняются — возможно, смотрите не ту переменную или шагаете по другой ветке кода
Массивы и структуры раскрываются крестиком, видны элементы
Вместо значения — описание типа; раскройте узел или используйте «Вычислить выражение»
Частые вопросы
Можно ли посмотреть локальные переменные без конфигуратора?
Нет, штатного способа нет: локальные переменные доступны только отладчику конфигуратора в момент остановки выполнения. В режиме предприятия остаются косвенные приемы — временный вывод значений через Сообщить(), запись в журнал регистрации или в текстовый файл, но это требует изменения кода.
Почему в табло переменная показывает «Неопределено»?
Либо она объявлена, но ей еще не присвоено значение (остановка произошла раньше строки присваивания), либо присваивание в этой ветке кода не выполнялось. Сделайте несколько шагов F10 и проверьте логику условий выше по коду.
Как посмотреть переменные в тонком клиенте, если отладка запущена из конфигуратора файловой базы?
При запуске отладки через F5 конфигуратор сам стартует сеанс того клиента, который указан в параметрах («Сервис → Параметры → Запуск 1С:Предприятия»). Выберите там тонкий клиент — и отладка будет работать в нем, табло функционирует одинаково.
Можно ли сохранить значения переменных для анализа после завершения отладки?
Штатного экспорта табло нет. Практичные варианты: скопировать значение через буфер обмена из табло или окна выражений, либо временно добавить в код выгрузку коллекции (например, таблицы значений) в файл через встроенные средства сериализации.
Точка останова есть, но отладчик не останавливается. Что проверить в первую очередь?
Убедитесь, что код вообще выполняется (добавьте временное Сообщить()), что отлаживаемый сеанс подключен к конфигуратору, что в клиент-серверной базе включен нужный предмет отладки и что конфигурация базы данных обновлена — иначе вы можете смотреть не ту версию модуля.
Безопасно ли менять значения переменных в табло в рабочей базе?
Рискованно: измененное значение пойдет дальше по алгоритму и может попасть в данные — например, в проводки документа. Для экспериментов используйте копию базы, а в рабочей ограничивайтесь просмотром.
Что важно запомнить
Локальные переменные в 1С смотрят только через отладчик: точка останова (F9), запуск (F5), окно «Локальные переменные» из меню «Отладка». Для произвольных выражений — Shift+F9, для переменных вызывающих процедур — стек вызовов. В клиент-серверной базе не забудьте включить серверный предмет отладки, а эксперименты с изменением значений проводите на копии базы.