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

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

Как в отладчике 1С посмотреть табличный документ

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

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

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

Почему табличный документ не виден в отладчике напрямую

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

Частично помогает обращение к конкретным свойствам через выражение: ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы, ТабДок.Область(1,1).Текст. Так можно проверить отдельные ячейки и габариты документа, но для визуальной оценки всей печатной формы этого недостаточно.

Способ 1. Запись документа в файл из отладчика

Самый надёжный приём — прямо во время остановки на точке останова сохранить табличный документ в файл и открыть его. Для этого в окне «Вычислить выражение» (Shift+F9) выполните метод Записать:

ТабДок.Записать("C:\Temp\debug.mxl", ТипФайлаТабличногоДокумента.MXL)

После выполнения выражения откройте полученный файл в толстом клиенте 1С (Файл → Открыть) — вы увидите документ ровно в том виде, в каком он сформировался на момент останова. Если нужен формат для просмотра без платформы, используйте ТипФайлаТабличногоДокумента.XLSX или PDF.

Важный нюанс: если отладка идёт на сервере (код выполняется в серверном контексте), файл запишется на диск сервера, а не на ваш компьютер. Убедитесь, что у учётной записи агента сервера 1С есть права на запись в указанный каталог, и что у вас есть доступ к этому каталогу. Для тонкого клиента путь указывается относительно машины, где выполняется код.

Порядок действий
  1. 1
    Поставьте точку останова после формирования табличного документа
  2. 2
    Запустите отладку и дождитесь останова
  3. 3
    Откройте «Вычислить выражение» (Shift+F9)
  4. 4
    Выполните ТабДок.Записать("C:\\Temp\\debug.mxl", ТипФайлаТабличногоДокумента.MXL)
  5. 5
    Откройте файл в толстом клиенте и проверьте содержимое

Способ 2. Просмотр отдельных ячеек и областей через выражения

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

ТабДок.Область("R5C3").Текст

ТабДок.Область(5, 3).Текст

ТабДок.Область("R5C3").Параметр

ТабДок.Область("R5C3").Расшифровка

Адресация R5C3 означает строка 5, колонка 3. Свойство Текст возвращает отображаемый текст ячейки, Параметр — значение параметра (если ячейка заполнена через параметры макета), Расшифровка — данные расшифровки для отчётов.

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

Способ 3. Вывод содержимого в сообщения циклом

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

Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл

СтрокаТекста = "";

Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл

СтрокаТекста = СтрокаТекста + " | " + ТабДок.Область(НомерСтроки, НомерКолонки).Текст;

КонецЦикла;

Сообщить(СтрокаТекста);

КонецЦикла;

Этот приём удобен, когда документ формируется на сервере и записать файл некуда, либо когда нужно быстро проверить порядок строк и значения без визуального оформления. Минус очевиден: теряется структура объединённых ячеек, ширины колонок и оформление, а на больших документах вывод будет громоздким.

Способ 4. Отображение документа на форме для визуальной проверки

Если документ строится программно и вы отлаживаете его структуру, временно выведите его на экран вызовом ТабДок.Показать("Отладка") — метод откроет документ в отдельном окне. Учтите, что Показать работает только в клиентском контексте: на сервере он недоступен, а в тонком и веб-клиенте поведение может отличаться.

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

Отладка табличного документа в СКД и типовых печатных формах

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

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

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

Частые ошибки и их признаки

Начинающие разработчики часто сталкиваются с одними и теми же проблемами при просмотре табличного документа в отладчике. Знание типовых симптомов экономит время.

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

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

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

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

Файл MXL создан и открывается
Норма

Размер файла больше нуля, документ отображается с данными

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

Файл пустой или отсутствует — нет прав на запись или неверный путь

Содержимое ячеек через Область().Текст
Норма

Возвращаются ожидаемые значения по координатам

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

Пустые строки — неверные координаты или данные в параметрах

ВысотаТаблицы и ШиринаТаблицы
Норма

Значения соответствуют ожидаемому объёму формы

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

Нулевая высота — документ ещё не заполнен на момент останова

FAQ

Можно ли посмотреть табличный документ в табло отладчика?

Нет. Табло показывает значения переменных, но табличный документ отображается там только как строка с именем типа. Используйте «Вычислить выражение» с обращением к конкретным ячейкам через Область() или запись в файл.

Как посмотреть документ, если отладка идёт на сервере 1С?

Запишите файл методом Записать в каталог на сервере, доступный учётной записи агента сервера, затем заберите файл по сети. Альтернатива — передать содержимое построчно через Сообщить или собрать текст в переменную и посмотреть её в табло.

Почему Область().Текст возвращает пустую строку, хотя в форме значение есть?

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

В каком формате лучше сохранять документ для просмотра?

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

Как отладить табличный документ, который формируется в фоновом задании?

Включите в настройках отладки конфигуратора автоматическое подключение фоновых заданий (Отладка → Подключение → Автоматическое подключение). После этого точки останова в коде фонового задания сработают, и документ можно будет сохранить в файл стандартным способом.

Итог

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

Табличный документ в отладчике 1С напрямую не отображается. Основной приём — запись в файл MXL через «Вычислить выражение» и просмотр в толстом клиенте; для точечных проверок используйте Область().Текст и Область().Параметр. Учитывайте контекст выполнения (клиент или сервер) и не оставляйте отладочный код в рабочей базе.