К статье
Практический материал

Разработка и Конфигурация · 12 мин

1С: как посмотреть таблицу значений

Как посмотреть таблицу значений в 1С: через отладчик, метод Показать(), консоль кода, выгрузку в табличный документ. Практические приёмы для разработчика и консультанта.

Таблица значений — один из самых используемых объектов встроенного языка 1С. В неё выгружаются результаты запросов, в ней собираются данные для обработок и отчётов, через неё передаются наборы строк между процедурами. При этом таблица значений — невизуальный объект: на форме она не отображается сама по себе, и у начинающих разработчиков регулярно возникает вопрос, как посмотреть её содержимое в момент выполнения кода.

Способов несколько, и выбор зависит от задачи: быстро посмотреть данные в процессе отладки, вывести таблицу пользователю на экран, выгрузить содержимое в файл или табличный документ, либо проанализировать структуру колонок и типы значений. Ниже разобраны все рабочие варианты с конкретным кодом, ограничениями и типичными ошибками.

Что такое таблица значений и почему её не видно

Таблица значений (объект ТаблицаЗначений) — это несвязанная с базой данных структура в оперативной памяти: набор строк и колонок с типизированными значениями. Она существует только во время выполнения кода на сервере или клиенте и исчезает после завершения процедуры, если её не сохранить специально.

Именно поэтому «просто открыть» таблицу значений нельзя, как справочник или документ. У неё нет представления в интерфейсе по умолчанию. Чтобы увидеть содержимое, нужно либо воспользоваться инструментами отладки, либо явно вывести данные — методом Показать(), через табличный документ или через элемент формы «ТаблицаФормы».

Важно понимать, где выполняется код: в толстом клиенте и управляемом приложении доступность методов различается. Например, Показать() работает только в толстом клиенте обычного приложения и в некоторых сценариях на клиенте управляемого приложения, а на сервере его вызов бессмыслен — там нет пользовательского интерфейса.

Просмотр через отладчик — основной способ

Отладчик конфигуратора — самый удобный инструмент, когда нужно посмотреть таблицу значений в момент выполнения. Запустите отладку (меню «Отладка» → «Начать отладку» или F5), поставьте точку останова на строке после заполнения таблицы и дождитесь остановки.

Дальше есть три рабочих приёма. Первый — табло: выделите имя переменной, нажмите Shift+F9 («Вычислить выражение») или добавьте переменную в табло. В списке значений появится строка вида «ТаблицаЗначений (N)», где N — количество строк. Двойной щелчок по ней откроет содержимое в виде таблицы с прокруткой.

Второй приём — окно «Локальные переменные» (Отладка → Локальные переменные). Там видны все переменные текущей процедуры, включая таблицы значений; раскрытие переменной покажет коллекцию строк и колонок. Третий — команда «Вычислить выражение», где можно обратиться к отдельным элементам: ТЗ.Количество(), ТЗ[0].Номенклатура, ТЗ.Колонки.Найти("Сумма").

Просмотр таблицы значений в отладчике
  1. 1
    Откройте конфигуратор и запустите отладку (F5)
  2. 2
    Поставьте точку останова после заполнения таблицы значений
  3. 3
    При остановке нажмите Shift+F9 и введите имя переменной с таблицей
  4. 4
    Дважды щёлкните по строке ТаблицаЗначений в табло — откроется содержимое
  5. 5
    Проверьте структуру: раскройте узел Колонки, чтобы увидеть имена и типы

Ограничения отладчика

Если таблица заполняется на сервере, а отладка серверных вызовов не включена, точка останова не сработает. Включите отладку на сервере: в конфигураторе — «Сервис» → «Параметры» → вкладка с настройками отладки, а для сервера 1С — запуск агента с ключом -debug. Без этого серверный код выполняется мимо отладчика.

Ещё одно ограничение — очень большие таблицы. Табло отображает содержимое, но при десятках тысяч строк прокрутка и поиск становятся неудобными. В таких случаях лучше выгрузить таблицу в табличный документ или файл и анализировать её там.

Метод Показать() — просмотр прямо из кода

У таблицы значений есть встроенный метод Показать(), который открывает её содержимое в отдельном окне без остановки выполнения кода. Это удобно для быстрой проверки промежуточных данных в процессе разработки:

ТЗ = Запрос.Выполнить().Выгрузить();

ТЗ.Показать("Результат запроса");

Строковый параметр задаёт заголовок окна. Метод работает в толстом клиенте обычного приложения и в управляемом приложении при вызове на клиенте. На сервере вызов не выведет ничего осмысленного, поэтому перед использованием в серверном коде имеет смысл обернуть вызов в проверку или перенести просмотр на клиента.

Важный нюанс: окно, открытое методом Показать(), немодальное — выполнение кода продолжается. Если нужно остановить логику до просмотра, комбинируйте метод с отладчиком или с выводом сообщений.

Выгрузка в табличный документ

Когда таблицу нужно не только посмотреть, но и напечатать, сохранить в Excel или передать коллеге, подходит вывод в табличный документ. Простейший вариант — программный обход строк и колонок:

ТабДок = Новый ТабличныйДокумент;

СтрокаНомер = 1;

Для Каждого Колонка Из ТЗ.Колонки Цикл

ТабДок.Область(1, ТЗ.Колонки.Индекс(Колонка) + 1).Текст = Колонка.Имя;

КонецЦикла;

Для Каждого СтрокаТЗ Из ТЗ Цикл

СтрокаНомер = СтрокаНомер + 1;

Для Кол = 0 По ТЗ.Колонки.Количество() - 1 Цикл

ТабДок.Область(СтрокаНомер, Кол + 1).Текст = Строка(СтрокаТЗ[Кол]);

КонецЦикла;

КонецЦикла;

ТабДок.Показать("Таблица значений");

Такой код универсален и работает на клиенте. Табличный документ дальше можно сохранить в формате MXL, Excel или отправить на печать стандартными средствами платформы. Для больших таблиц построчный вывод может выполняться заметное время — это нормально, но стоит предупредить пользователя индикатором или ограничить число выводимых строк.

Альтернатива ручному обходу — построитель отчёта или СКД: если данные получены запросом, можно не выгружать их в таблицу значений вообще, а сразу сформировать отчёт. Это избавляет от промежуточного объекта и даёт группировки, итоги и отборы «из коробки».

Просмотр через консоль кода и внешние инструменты

Консоль кода (обработка, позволяющая выполнять произвольные фрагменты встроенного языка в пользовательском режиме) — стандартный инструмент администратора и консультанта. В ней можно написать запрос, выгрузить результат в таблицу значений и вызвать Показать() или вывести данные в табличный документ, не изменяя конфигурацию.

Также распространены консоли запросов, где результат выполнения отображается сразу в виде таблицы на форме. Если цель — посмотреть данные, которые попадают в таблицу значений из запроса, часто достаточно выполнить сам запрос в консоли: содержимое таблицы будет идентично результату выгрузки.

Сравнение способов просмотра

Отладчик (табло, Shift+F9)

Подходит для анализа в момент выполнения кода. Требует запуска отладки и, для серверного кода, включённой отладки на сервере.

Метод Показать()

Быстрый просмотр из кода без остановки. Работает на клиенте; на сервере бесполезен, вызовы нужно убирать из продуктивного кода.

Вывод в табличный документ

Когда нужно сохранить, напечатать или передать данные. Требует написания кода обхода строк, медленнее на больших таблицах.

Консоль кода / консоль запросов

Просмотр без изменения конфигурации, прямо в пользовательском режиме. Требует наличия внешней обработки и прав на её запуск.

Как посмотреть структуру таблицы и типы колонок

Иногда важны не сами данные, а структура: какие колонки есть, какого они типа, есть ли нужная колонка вообще. В отладчике это видно при раскрытии узла Колонки в табло. Программно структуру можно вывести так:

Для Каждого Колонка Из ТЗ.Колонки Цикл

Сообщить(Колонка.Имя + " — " + Строка(Колонка.ТипЗначения));

КонецЦикла;

Эта проверка особенно полезна при работе с таблицами, полученными из внешних источников: загрузки из Excel, обменов, COM-соединений. Типы колонок там могут отличаться от ожидаемых — например, число приходит строкой, и сравнения или итоги начинают работать неправильно. Просмотр типов через ТипЗначения помогает быстро локализовать такую проблему.

Дополнительно полезны методы ТЗ.Количество() (число строк), ТЗ.Итог("Сумма") (итог по числовой колонке) и ТЗ.Найти(Значение, "ИмяКолонки") (поиск конкретной строки). В отладчике их можно вычислять через Shift+F9, не меняя код.

Типичные ошибки
01
Вызов Показать() в серверной процедуре — окно не появится, а разработчик думает, что таблица пустая
02
Проверка содержимого до заполнения таблицы: точка останова стоит раньше строки Выгрузить(), поэтому таблица выглядит пустой
03
Попытка увидеть таблицу значений, переданную на клиент с сервера, — объект не сериализуется, на клиенте его просто нет; передавайте массивы структур или данные формы
04
Ожидание, что Сообщить(ТЗ) покажет содержимое — выводится только служебное представление объекта, а не данные

Проверка результата и частые проблемы

После просмотра таблицы убедитесь, что видите именно те данные, которые ожидали. Контрольные точки просты: количество строк совпадает с ожиданиями (или с количеством записей в консоли запроса), типы колонок соответствуют логике дальнейшей обработки, значения ключевых полей заполнены, а не пустые.

Если таблица пустая, хотя по логике должна содержать строки, проверьте: выполняется ли вообще код заполнения (точкой останова), не срабатывает ли отбор в запросе, не очищается ли таблица методом Очистить() дальше по коду до момента просмотра. Типичная ситуация — таблица заполняется в одной процедуре, а просматривается в другой, куда она не передана или передана пустой копией.

Отдельного внимания заслуживает передача таблицы значений между клиентом и сервером в управляемом приложении. Объект ТаблицаЗначений нельзя вернуть с сервера на клиент напрямую — платформа выдаст ошибку. Для передачи используйте массив структур, реквизит формы типа «ТаблицаЗначений» (динамически создаваемый) или ЗначениеВСтрокуВнутр для служебных сценариев.

Контрольные точки

Как проверить результат

Количество строк в табло отладчика
Норма

Число в скобках после ТаблицаЗначений совпадает с ожидаемым объёмом данных

Тревожный признак

Ноль строк при ожидаемых данных — проверяйте запрос, отборы и порядок выполнения кода

Типы колонок
Норма

Числовые поля имеют тип Число, ссылки — ссылочные типы

Тревожный признак

Числа и даты пришли строками — типично после загрузки из Excel или обмена

Заполненность ключевых полей
Норма

Обязательные колонки заполнены в каждой строке

Тревожный признак

Пустые значения в полях, по которым дальше идёт поиск или соединение

FAQ

Как посмотреть таблицу значений без конфигуратора и отладки?

Используйте внешнюю обработку «консоль кода» или консоль запросов в пользовательском режиме: выполните фрагмент кода, который формирует таблицу, и вызовите Показать() или выведите данные в табличный документ. Изменять конфигурацию для этого не требуется, но нужны права на запуск внешних обработок.

Почему Показать() не открывает окно?

Чаще всего метод вызывается в серверном коде, где нет пользовательского интерфейса. Перенесите вызов в клиентскую процедуру или используйте отладчик. Также проверьте, что выполнение вообще доходит до этой строки — поставьте перед ней вывод сообщения или точку останова.

Как посмотреть таблицу значений в управляемом приложении?

В отладчике — так же, через табло (Shift+F9). Из кода — методом Показать() на клиенте. Если таблица сформирована на сервере, сначала передайте данные на клиент, например массивом структур, либо отображайте их через реквизит формы типа ТаблицаЗначений.

Можно ли сохранить таблицу значений в файл?

Да. Выведите содержимое в табличный документ и сохраните его в Excel или MXL, либо обойдите строки и запишите данные в текстовый файл, CSV или XML. Для служебной передачи между базами иногда используют ЗначениеВСтрокуВнутр() и обратное восстановление.

Как посмотреть только часть строк большой таблицы?

В отладчике вычислите выражение с обращением к конкретной строке, например ТЗ[5], или используйте ТЗ.Найти() для поиска по значению. Программно можно скопировать часть строк: ТЗ.Скопировать(массивСтрок) или выгрузить колонки методом ВыгрузитьКолонку() и просмотреть их отдельно.

Чем таблица значений отличается от результата запроса?

Результат запроса — это выборка, привязанная к выполненному запросу, с возможностью обхода и обращения к полям. Таблица значений — самостоятельный объект в памяти, получаемый методом Выгрузить() из результата запроса: её можно сортировать, сворачивать, искать строки и передавать между процедурами, но она занимает память целиком.

Итог

Что важно запомнить

Таблица значений не отображается сама по себе: для просмотра используйте отладчик (табло, Shift+F9), метод Показать() на клиенте или вывод в табличный документ. Для серверного кода включайте отладку на сервере, а диагностические вызовы убирайте из продуктивного кода. Перед анализом данных проверьте количество строк и типы колонок — половина проблем связана именно с ними.