Разработка и Конфигурация · 12 мин
1С: как посмотреть таблицу значений
Как посмотреть таблицу значений в 1С: через отладчик, метод Показать(), консоль кода, выгрузку в табличный документ. Практические приёмы для разработчика и консультанта.
Таблица значений — один из самых используемых объектов встроенного языка 1С. В неё выгружаются результаты запросов, в ней собираются данные для обработок и отчётов, через неё передаются наборы строк между процедурами. При этом таблица значений — невизуальный объект: на форме она не отображается сама по себе, и у начинающих разработчиков регулярно возникает вопрос, как посмотреть её содержимое в момент выполнения кода.
Способов несколько, и выбор зависит от задачи: быстро посмотреть данные в процессе отладки, вывести таблицу пользователю на экран, выгрузить содержимое в файл или табличный документ, либо проанализировать структуру колонок и типы значений. Ниже разобраны все рабочие варианты с конкретным кодом, ограничениями и типичными ошибками.
Что такое таблица значений и почему её не видно
Таблица значений (объект ТаблицаЗначений) — это несвязанная с базой данных структура в оперативной памяти: набор строк и колонок с типизированными значениями. Она существует только во время выполнения кода на сервере или клиенте и исчезает после завершения процедуры, если её не сохранить специально.
Именно поэтому «просто открыть» таблицу значений нельзя, как справочник или документ. У неё нет представления в интерфейсе по умолчанию. Чтобы увидеть содержимое, нужно либо воспользоваться инструментами отладки, либо явно вывести данные — методом Показать(), через табличный документ или через элемент формы «ТаблицаФормы».
Важно понимать, где выполняется код: в толстом клиенте и управляемом приложении доступность методов различается. Например, Показать() работает только в толстом клиенте обычного приложения и в некоторых сценариях на клиенте управляемого приложения, а на сервере его вызов бессмыслен — там нет пользовательского интерфейса.
Просмотр через отладчик — основной способ
Отладчик конфигуратора — самый удобный инструмент, когда нужно посмотреть таблицу значений в момент выполнения. Запустите отладку (меню «Отладка» → «Начать отладку» или F5), поставьте точку останова на строке после заполнения таблицы и дождитесь остановки.
Дальше есть три рабочих приёма. Первый — табло: выделите имя переменной, нажмите Shift+F9 («Вычислить выражение») или добавьте переменную в табло. В списке значений появится строка вида «ТаблицаЗначений (N)», где N — количество строк. Двойной щелчок по ней откроет содержимое в виде таблицы с прокруткой.
Второй приём — окно «Локальные переменные» (Отладка → Локальные переменные). Там видны все переменные текущей процедуры, включая таблицы значений; раскрытие переменной покажет коллекцию строк и колонок. Третий — команда «Вычислить выражение», где можно обратиться к отдельным элементам: ТЗ.Количество(), ТЗ[0].Номенклатура, ТЗ.Колонки.Найти("Сумма").
- 1Откройте конфигуратор и запустите отладку (F5)
- 2Поставьте точку останова после заполнения таблицы значений
- 3При остановке нажмите Shift+F9 и введите имя переменной с таблицей
- 4Дважды щёлкните по строке ТаблицаЗначений в табло — откроется содержимое
- 5Проверьте структуру: раскройте узел Колонки, чтобы увидеть имена и типы
Ограничения отладчика
Если таблица заполняется на сервере, а отладка серверных вызовов не включена, точка останова не сработает. Включите отладку на сервере: в конфигураторе — «Сервис» → «Параметры» → вкладка с настройками отладки, а для сервера 1С — запуск агента с ключом -debug. Без этого серверный код выполняется мимо отладчика.
Ещё одно ограничение — очень большие таблицы. Табло отображает содержимое, но при десятках тысяч строк прокрутка и поиск становятся неудобными. В таких случаях лучше выгрузить таблицу в табличный документ или файл и анализировать её там.
Метод Показать() — просмотр прямо из кода
У таблицы значений есть встроенный метод Показать(), который открывает её содержимое в отдельном окне без остановки выполнения кода. Это удобно для быстрой проверки промежуточных данных в процессе разработки:
ТЗ = Запрос.Выполнить().Выгрузить();
ТЗ.Показать("Результат запроса");
Строковый параметр задаёт заголовок окна. Метод работает в толстом клиенте обычного приложения и в управляемом приложении при вызове на клиенте. На сервере вызов не выведет ничего осмысленного, поэтому перед использованием в серверном коде имеет смысл обернуть вызов в проверку или перенести просмотр на клиента.
Важный нюанс: окно, открытое методом Показать(), немодальное — выполнение кода продолжается. Если нужно остановить логику до просмотра, комбинируйте метод с отладчиком или с выводом сообщений.
Выгрузка в табличный документ
Когда таблицу нужно не только посмотреть, но и напечатать, сохранить в Excel или передать коллеге, подходит вывод в табличный документ. Простейший вариант — программный обход строк и колонок:
ТабДок = Новый ТабличныйДокумент;
СтрокаНомер = 1;
Для Каждого Колонка Из ТЗ.Колонки Цикл
ТабДок.Область(1, ТЗ.Колонки.Индекс(Колонка) + 1).Текст = Колонка.Имя;
КонецЦикла;
Для Каждого СтрокаТЗ Из ТЗ Цикл
СтрокаНомер = СтрокаНомер + 1;
Для Кол = 0 По ТЗ.Колонки.Количество() - 1 Цикл
ТабДок.Область(СтрокаНомер, Кол + 1).Текст = Строка(СтрокаТЗ[Кол]);
КонецЦикла;
КонецЦикла;
ТабДок.Показать("Таблица значений");
Такой код универсален и работает на клиенте. Табличный документ дальше можно сохранить в формате MXL, Excel или отправить на печать стандартными средствами платформы. Для больших таблиц построчный вывод может выполняться заметное время — это нормально, но стоит предупредить пользователя индикатором или ограничить число выводимых строк.
Альтернатива ручному обходу — построитель отчёта или СКД: если данные получены запросом, можно не выгружать их в таблицу значений вообще, а сразу сформировать отчёт. Это избавляет от промежуточного объекта и даёт группировки, итоги и отборы «из коробки».
Просмотр через консоль кода и внешние инструменты
Консоль кода (обработка, позволяющая выполнять произвольные фрагменты встроенного языка в пользовательском режиме) — стандартный инструмент администратора и консультанта. В ней можно написать запрос, выгрузить результат в таблицу значений и вызвать Показать() или вывести данные в табличный документ, не изменяя конфигурацию.
Также распространены консоли запросов, где результат выполнения отображается сразу в виде таблицы на форме. Если цель — посмотреть данные, которые попадают в таблицу значений из запроса, часто достаточно выполнить сам запрос в консоли: содержимое таблицы будет идентично результату выгрузки.
Сравнение способов просмотра
Подходит для анализа в момент выполнения кода. Требует запуска отладки и, для серверного кода, включённой отладки на сервере.
Быстрый просмотр из кода без остановки. Работает на клиенте; на сервере бесполезен, вызовы нужно убирать из продуктивного кода.
Когда нужно сохранить, напечатать или передать данные. Требует написания кода обхода строк, медленнее на больших таблицах.
Просмотр без изменения конфигурации, прямо в пользовательском режиме. Требует наличия внешней обработки и прав на её запуск.
Как посмотреть структуру таблицы и типы колонок
Иногда важны не сами данные, а структура: какие колонки есть, какого они типа, есть ли нужная колонка вообще. В отладчике это видно при раскрытии узла Колонки в табло. Программно структуру можно вывести так:
Для Каждого Колонка Из ТЗ.Колонки Цикл
Сообщить(Колонка.Имя + " — " + Строка(Колонка.ТипЗначения));
КонецЦикла;
Эта проверка особенно полезна при работе с таблицами, полученными из внешних источников: загрузки из Excel, обменов, COM-соединений. Типы колонок там могут отличаться от ожидаемых — например, число приходит строкой, и сравнения или итоги начинают работать неправильно. Просмотр типов через ТипЗначения помогает быстро локализовать такую проблему.
Дополнительно полезны методы ТЗ.Количество() (число строк), ТЗ.Итог("Сумма") (итог по числовой колонке) и ТЗ.Найти(Значение, "ИмяКолонки") (поиск конкретной строки). В отладчике их можно вычислять через Shift+F9, не меняя код.
Проверка результата и частые проблемы
После просмотра таблицы убедитесь, что видите именно те данные, которые ожидали. Контрольные точки просты: количество строк совпадает с ожиданиями (или с количеством записей в консоли запроса), типы колонок соответствуют логике дальнейшей обработки, значения ключевых полей заполнены, а не пустые.
Если таблица пустая, хотя по логике должна содержать строки, проверьте: выполняется ли вообще код заполнения (точкой останова), не срабатывает ли отбор в запросе, не очищается ли таблица методом Очистить() дальше по коду до момента просмотра. Типичная ситуация — таблица заполняется в одной процедуре, а просматривается в другой, куда она не передана или передана пустой копией.
Отдельного внимания заслуживает передача таблицы значений между клиентом и сервером в управляемом приложении. Объект ТаблицаЗначений нельзя вернуть с сервера на клиент напрямую — платформа выдаст ошибку. Для передачи используйте массив структур, реквизит формы типа «ТаблицаЗначений» (динамически создаваемый) или ЗначениеВСтрокуВнутр для служебных сценариев.
Как проверить результат
Число в скобках после ТаблицаЗначений совпадает с ожидаемым объёмом данных
Ноль строк при ожидаемых данных — проверяйте запрос, отборы и порядок выполнения кода
Числовые поля имеют тип Число, ссылки — ссылочные типы
Числа и даты пришли строками — типично после загрузки из Excel или обмена
Обязательные колонки заполнены в каждой строке
Пустые значения в полях, по которым дальше идёт поиск или соединение
FAQ
Как посмотреть таблицу значений без конфигуратора и отладки?
Используйте внешнюю обработку «консоль кода» или консоль запросов в пользовательском режиме: выполните фрагмент кода, который формирует таблицу, и вызовите Показать() или выведите данные в табличный документ. Изменять конфигурацию для этого не требуется, но нужны права на запуск внешних обработок.
Почему Показать() не открывает окно?
Чаще всего метод вызывается в серверном коде, где нет пользовательского интерфейса. Перенесите вызов в клиентскую процедуру или используйте отладчик. Также проверьте, что выполнение вообще доходит до этой строки — поставьте перед ней вывод сообщения или точку останова.
Как посмотреть таблицу значений в управляемом приложении?
В отладчике — так же, через табло (Shift+F9). Из кода — методом Показать() на клиенте. Если таблица сформирована на сервере, сначала передайте данные на клиент, например массивом структур, либо отображайте их через реквизит формы типа ТаблицаЗначений.
Можно ли сохранить таблицу значений в файл?
Да. Выведите содержимое в табличный документ и сохраните его в Excel или MXL, либо обойдите строки и запишите данные в текстовый файл, CSV или XML. Для служебной передачи между базами иногда используют ЗначениеВСтрокуВнутр() и обратное восстановление.
Как посмотреть только часть строк большой таблицы?
В отладчике вычислите выражение с обращением к конкретной строке, например ТЗ[5], или используйте ТЗ.Найти() для поиска по значению. Программно можно скопировать часть строк: ТЗ.Скопировать(массивСтрок) или выгрузить колонки методом ВыгрузитьКолонку() и просмотреть их отдельно.
Чем таблица значений отличается от результата запроса?
Результат запроса — это выборка, привязанная к выполненному запросу, с возможностью обхода и обращения к полям. Таблица значений — самостоятельный объект в памяти, получаемый методом Выгрузить() из результата запроса: её можно сортировать, сворачивать, искать строки и передавать между процедурами, но она занимает память целиком.
Что важно запомнить
Таблица значений не отображается сама по себе: для просмотра используйте отладчик (табло, Shift+F9), метод Показать() на клиенте или вывод в табличный документ. Для серверного кода включайте отладку на сервере, а диагностические вызовы убирайте из продуктивного кода. Перед анализом данных проверьте количество строк и типы колонок — половина проблем связана именно с ними.