Разработка и Конфигурация · 11 мин
Как просмотреть таблицу значений в 1С
Как просмотреть таблицу значений в 1С через отладчик: точка останова, вычисление выражения, построчный просмотр, альтернативные способы вывода содержимого.
Таблица значений — один из самых часто используемых объектов во встроенном языке 1С. В ней хранятся результаты запросов, промежуточные расчёты, данные для обмена и загрузки. Когда алгоритм работает не так, как ожидалось, первое, что нужно сделать разработчику, — посмотреть, что реально лежит в таблице значений на конкретном шаге выполнения кода.
Стандартный способ просмотра — конфигуратор в режиме отладки. Останавливаете выполнение на нужной строке, находите переменную с таблицей и раскрываете её содержимое в отдельном окне. Но есть нюансы: таблицы бывают большими, часть колонок может быть скрыта, а иногда отладка недоступна в принципе — например, код выполняется на сервере в фоновом задании.
Ниже разобраны основные способы просмотра таблицы значений: через отладчик, через вычисление выражения, программный вывод в сообщения и временную таблицу на форму. Для каждого варианта указаны условия применения и ограничения.
Что такое таблица значений и когда её нужно просматривать
Таблица значений — это несохраняемый в базе объект: двумерная структура из строк и колонок, существующая только в памяти сеанса. Типичные источники: результат запроса (Запрос.Выполнить().Выгрузить()), табличная часть документа, выгруженная методом Выгрузить(), таблица, построенная вручную через Новый ТаблицаЗначений.
Просмотр содержимого нужен в нескольких ситуациях: запрос вернул не те строки, которые ожидались; свёртка или группировка дала неверный итог; после обработки таблицы данные «потерялись» или задвоились. Во всех этих случаях быстрее посмотреть фактическое содержимое, чем гадать по коду.
Важно понимать, что таблица значений — объект в памяти, а не данные базы. Посмотреть её через консоль запросов или SQL нельзя: доступ возможен только из кода или отладчика в момент, когда таблица существует.
Просмотр в отладчике через точку останова
Основной рабочий способ. Откройте конфигуратор, подключите отладку (меню «Отладка» — «Подключение» или запуск с автоматическим подключением) и поставьте точку останова на строке, где таблица уже заполнена — например, сразу после Выгрузить() или после цикла обработки.
Когда выполнение остановится, откройте окно «Локальные переменные» (обычно отображается автоматически внизу) или «Табло» (Ctrl+Alt+W). Найдите переменную с таблицей — в колонке «Значение» будет указано «ТаблицаЗначений» и количество строк.
Выделите переменную и нажмите F2 или кнопку «Показать значение в отдельном окне». Откроется окно просмотра: строки таблицы отображаются построчно, колонки можно листать. Для больших таблиц отображение может подгружаться частями — это нормально.
- 1Откройте модуль и поставьте точку останова (F9) после заполнения таблицы
- 2Запустите отладку (F5) и дождитесь остановки
- 3Откройте «Локальные переменные» или «Табло» и найдите переменную
- 4Нажмите F2 — «Показать значение в отдельном окне»
- 5Пролистайте строки и колонки, проверьте интересующие значения
Просмотр через «Вычислить выражение»
Если переменная не видна в локальных (например, это свойство объекта или результат вложенного вызова), используйте диалог «Вычислить выражение» — Shift+F9. В поле ввода напишите имя переменной или произвольное выражение, например ТЗ.Количество(), и нажмите «Вычислить».
Результат появится в списке выражений. Для таблицы значений снова доступна кнопка просмотра в отдельном окне (F2). Этот же приём работает для выражений вида Объект.Товары.Выгрузить() — платформа вычислит выражение и покажет получившуюся таблицу.
Учтите: вычисление выражения выполняет код. Если в выражении есть метод, меняющий данные (запись в базу, проведение), он реально выполнится. Используйте в «Вычислить выражение» только безопасные операции чтения.
Просмотр больших таблиц и вложенных значений
Для таблиц с тысячами строк окно просмотра работает медленнее, и найти нужную строку вручную сложно. В этом случае удобнее сузить данные прямо в «Вычислить выражение»: например, ТЗ.Найти("00000000123", "НоменклатураКод") покажет конкретную строку, а ТЗ.Скопировать(ТЗ.НайтиСтроки(Новый Структура("Склад", Склад))) — отфильтрованный фрагмент.
Если в ячейке таблицы лежит не примитивное значение, а объект (структура, другая таблица, ссылка), его тоже можно раскрыть: выделите ячейку и нажмите F2. Ссылки отображаются представлением, но через F2 виден тип и можно вычислить реквизиты, например Строка.Номенклатура.Артикул.
Для оценки общего объёма полезны быстрые проверки: ТЗ.Количество() — число строк, ТЗ.Колонки.Количество() — число колонок, ТЗ.Итог("Сумма") — итог по числовой колонке. Это позволяет сверить таблицу с ожиданиями, не листая все строки.
Как проверить результат
Совпадает с ожидаемым числом записей из источника
Строк меньше (потеря при выгрузке) или больше (дубли после соединения)
Типы и значения соответствуют источнику данных
Пустые значения, Неопределено или строки вместо чисел
ТЗ.Итог("Сумма") сходится с контрольной цифрой
Расхождение — ошибка в группировке или фильтрации
Просмотр без отладчика: программный вывод
Отладка не всегда доступна: код выполняется в фоновом задании, на сервере без включённой отладки, у пользователя без прав. В таких случаях таблицу выводят программно.
Самый простой вариант — цикл с выводом в сообщения или журнал регистрации:
Для Каждого Строка Из ТЗ Цикл
Сообщить(Строка(Строка.Номенклатура) + " | " + Строка.Количество + " | " + Строка.Сумма);
КонецЦикла;
Для фоновых заданий вместо Сообщить() используйте ЗаписьЖурналаРегистрации() — сообщения фонового задания видны в его свойствах, но журнал надёжнее. Ограничьте вывод, например, первыми 50 строками, чтобы не переполнить журнал.
Более наглядный способ для управляемых форм — временный реквизит: добавьте на форму реквизит типа «ТаблицаЗначений» с нужными колонками, программно загрузите в него данные (ЗначениеВРеквизитФормы или прямое присвоение для динамических списков не подойдёт — нужен именно реквизит-таблица) и выведите элементом «Таблица формы». Так данные видны прямо на экране в привычном виде.
Альтернативные инструменты и внешние средства
Кроме штатного отладчика, содержимое таблицы значений удобно смотреть через внешние инструменты. Популярный вариант — консоль кода и универсальные инструменты разработчика, где таблицу можно передать в обработку и увидеть в табличном поле с сортировкой и отбором.
Ещё один приём — выгрузка таблицы в файл: метод ТЗ.ВыбратьСтроку() для интерактивного просмотра в толстом клиенте либо сохранение через табличный документ. Например, заполнить табличный документ построчно и сохранить его в Excel — удобно, когда результат нужно передать аналитику или сравнить с эталоном.
Выбирайте инструмент по задаче: для разового просмотра хватит отладчика, для анализа больших объёмов удобнее выгрузка в табличный документ или Excel, для фоновых процессов — журнал регистрации.
Сравнение способов просмотра
Быстро и интерактивно, но требует доступа к отладке и остановки выполнения
Работает везде, включая фоновые задания; неудобен для больших таблиц
Наглядный просмотр на экране; требует доработки формы
Подходит для анализа и передачи данных; требует написания кода выгрузки
Типичные ошибки при просмотре таблицы значений
Частая проблема — точка останова стоит до заполнения таблицы: разработчик видит пустую таблицу и делает неверный вывод о запросе. Всегда проверяйте, что остановка произошла после строки Выгрузить() или заполнения.
Вторая ошибка — путать таблицу значений с выборкой из запроса. Выборка (Выбрать()) — это последовательный курсор, её нельзя раскрыть как таблицу. Если нужен просмотр всего результата, используйте Выгрузить().
Третья типичная ситуация — отладка на сервере не включена, и точка останова в серверном коде не срабатывает. Нужно включить отладку на сервере 1С (параметр -debug в командной строке службы агента) и перезапустить службу. Делайте это только на тестовом контуре: режим отладки влияет на производительность сервера.
FAQ
Как посмотреть таблицу значений, если код выполняется в фоновом задании?
Отладчик к фоновому заданию подключить сложно. Надёжнее вывести данные программно: циклом через ЗаписьЖурналаРегистрации() с ограничением числа строк, а затем открыть журнал регистрации и отфильтровать по событию. Либо временно сохранить таблицу в хранилище значения константы или регистра сведений и посмотреть оттуда.
Почему в окне просмотра видны не все колонки таблицы?
Окно просмотра показывает колонки, реально существующие в таблице. Если колонки не хватает, проверьте, как формировалась таблица: при выгрузке табличной части с указанием списка колонок лишние отсекаются, а при добавлении колонок вручную легко ошибиться в имени. Проверить состав можно выражением ТЗ.Колонки.Количество() и перебором колонок в цикле.
Можно ли просмотреть таблицу значений в тонком или веб-клиенте?
Да, отладчик конфигуратора работает независимо от клиента: поставьте точку останова, подключите отладку к нужному сеансу через «Отладка — Подключение» и просматривайте таблицу стандартно через F2. Ограничение касается только старых приёмов вроде ВыбратьСтроку(), которые ориентированы на толстый клиент.
Как быстро найти нужную строку в большой таблице при отладке?
Используйте окно «Вычислить выражение» (Shift+F9) с методами поиска: ТЗ.Найти(Значение, "ИмяКолонки") для первой строки или ТЗ.НайтиСтроки(Новый Структура("Колонка", Значение)) для всех совпадений. Результат раскрывается через F2 так же, как обычная переменная.
Чем отличается просмотр таблицы значений от просмотра результата запроса?
Результат запроса — объект РезультатЗапроса, его нельзя раскрыть построчно напрямую. Сначала его нужно преобразовать: Выгрузить() даст таблицу значений (её и просматривают), а Выбрать() — выборку для последовательного обхода. Для проверки самого запроса без кода удобна консоль запросов.
Опасно ли просматривать таблицу значений в отладчике на рабочей базе?
Сам просмотр безопасен — это чтение памяти сеанса. Опасность представляют действия вокруг: вычисление выражений с методами записи и продолжение выполнения кода после точки останова в транзакции. Для экспериментов и незнакомого кода используйте копию базы.
Что важно запомнить
Основной способ просмотра таблицы значений — отладчик: точка останова после заполнения, переменная в «Локальных переменных» или «Табло», клавиша F2 для отдельного окна. Для фоновых заданий и серверных процессов без отладки используйте вывод через журнал регистрации, реквизит формы или выгрузку в табличный документ. Не вычисляйте в отладчике методы, изменяющие данные, и проверяйте, что остановка произошла после заполнения таблицы.