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