Разработка и Конфигурация · 9 мин
Как в отладчике 1С посмотреть табличный документ
Как в отладчике 1С просмотреть содержимое табличного документа: вычисление выражения, запись в файл, табло, типовые ошибки и способы проверки результата.
Табличный документ (объект ТабличныйДокумент) — один из самых неудобных типов для отладки в 1С: в окне «Вычислить выражение» он отображается просто как строка с типом, и увидеть реальное содержимое ячеек напрямую нельзя. При этом именно содержимое табличного документа чаще всего и нужно проверить: правильно ли сформировалась печатная форма, попали ли данные в нужные области, корректно ли выведены итоги.
Стандартный отладчик конфигуратора не умеет визуализировать табличный документ так же, как, например, результат запроса через «Выгрузить в таблицу». Поэтому разработчики используют обходные приёмы: сохранение объекта во временный файл и открытие его в толстом клиенте, вывод отдельных областей через цикл, разбор свойств ячеек в табло и специальные внешние инструменты. Ниже разобраны рабочие способы с конкретным кодом и ограничениями каждого подхода.
Почему табличный документ не виден в отладчике напрямую
Объект типа ТабличныйДокумент — это сложная структура: области, строки, колонки, ячейки с параметрами, расшифровками, оформлением. Окно «Вычислить выражение» (Shift+F9) показывает только строковое представление объекта, а для табличного документа оно содержит лишь имя типа. Развернуть его в дерево свойств, как коллекцию, тоже не получится — ячейки не представлены в виде индексируемой коллекции.
Частично помогает обращение к конкретным свойствам через выражение: ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы, ТабДок.Область(1,1).Текст. Так можно проверить отдельные ячейки и габариты документа, но для визуальной оценки всей печатной формы этого недостаточно.
Способ 1. Запись документа в файл из отладчика
Самый надёжный приём — прямо во время остановки на точке останова сохранить табличный документ в файл и открыть его. Для этого в окне «Вычислить выражение» (Shift+F9) выполните метод Записать:
ТабДок.Записать("C:\Temp\debug.mxl", ТипФайлаТабличногоДокумента.MXL)
После выполнения выражения откройте полученный файл в толстом клиенте 1С (Файл → Открыть) — вы увидите документ ровно в том виде, в каком он сформировался на момент останова. Если нужен формат для просмотра без платформы, используйте ТипФайлаТабличногоДокумента.XLSX или PDF.
Важный нюанс: если отладка идёт на сервере (код выполняется в серверном контексте), файл запишется на диск сервера, а не на ваш компьютер. Убедитесь, что у учётной записи агента сервера 1С есть права на запись в указанный каталог, и что у вас есть доступ к этому каталогу. Для тонкого клиента путь указывается относительно машины, где выполняется код.
- 1Поставьте точку останова после формирования табличного документа
- 2Запустите отладку и дождитесь останова
- 3Откройте «Вычислить выражение» (Shift+F9)
- 4Выполните ТабДок.Записать("C:\\Temp\\debug.mxl", ТипФайлаТабличногоДокумента.MXL)
- 5Откройте файл в толстом клиенте и проверьте содержимое
Способ 2. Просмотр отдельных ячеек и областей через выражения
Когда нужно проверить не всю форму, а конкретные значения, удобнее обращаться к ячейкам напрямую. В окне вычисления выражений доступны такие конструкции:
ТабДок.Область("R5C3").Текст
ТабДок.Область(5, 3).Текст
ТабДок.Область("R5C3").Параметр
ТабДок.Область("R5C3").Расшифровка
Адресация R5C3 означает строка 5, колонка 3. Свойство Текст возвращает отображаемый текст ячейки, Параметр — значение параметра (если ячейка заполнена через параметры макета), Расшифровка — данные расшифровки для отчётов.
Чтобы быстро найти нужную ячейку, сначала вычислите ТабДок.ВысотаТаблицы и ТабДок.ШиринаТаблицы — так вы поймёте реальные границы заполненной области. Обращение к ячейке за пределами документа вернёт пустую область без ошибки, что может ввести в заблуждение: всегда сверяйте координаты с фактическими размерами.
Способ 3. Вывод содержимого в сообщения циклом
Если документ небольшой, его текстовое содержимое можно выгрузить построчно в окно сообщений. Выполните в отладчике (или временно вставьте в код) цикл:
Для НомерСтроки = 1 По ТабДок.ВысотаТаблицы Цикл
СтрокаТекста = "";
Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
СтрокаТекста = СтрокаТекста + " | " + ТабДок.Область(НомерСтроки, НомерКолонки).Текст;
КонецЦикла;
Сообщить(СтрокаТекста);
КонецЦикла;
Этот приём удобен, когда документ формируется на сервере и записать файл некуда, либо когда нужно быстро проверить порядок строк и значения без визуального оформления. Минус очевиден: теряется структура объединённых ячеек, ширины колонок и оформление, а на больших документах вывод будет громоздким.
Способ 4. Отображение документа на форме для визуальной проверки
Если документ строится программно и вы отлаживаете его структуру, временно выведите его на экран вызовом ТабДок.Показать("Отладка") — метод откроет документ в отдельном окне. Учтите, что Показать работает только в клиентском контексте: на сервере он недоступен, а в тонком и веб-клиенте поведение может отличаться.
Альтернатива — добавить на тестовую форму реквизит типа ТабличныйДокумент и присваивать в него отлаживаемый объект. Это удобно при многократных прогонах: не нужно каждый раз сохранять файл, достаточно перезапустить формирование и посмотреть результат на форме.
Отладка табличного документа в СКД и типовых печатных формах
Если документ формируется через СКД (схему компоновки данных), результирующий табличный документ доступен в процедуре вывода результата. Поставьте точку останова после ПроцессорВывода.Вывести(...) или в конце формирования отчёта и работайте с переменной результата теми же способами — записью в файл или обходом ячеек.
В типовых конфигурациях печатные формы собираются в общих модулях менеджеров печати. Точку останова ставьте в функции, возвращающей табличный документ (обычно это функции вида Печать... в модуле менеджера документа), непосредственно перед Возврат. Там объект уже полностью сформирован и доступен для сохранения.
Если печатная форма формируется пакетно для нескольких объектов, добавьте в отладочный код проверку условия (например, по номеру документа) и сохраняйте файл только для нужного объекта — иначе получите десятки одинаковых файлов и потеряете нужный.
Частые ошибки и их признаки
Начинающие разработчики часто сталкиваются с одними и теми же проблемами при просмотре табличного документа в отладчике. Знание типовых симптомов экономит время.
Отдельная ситуация — документ выглядит пустым при записи в файл. Обычно это значит, что на момент останова данные ещё не выведены (точка останова стоит раньше вызова Вывести областей) либо вы смотрите не ту переменную: в типовых модулях часто используется промежуточный документ, который потом копируется в итоговый.
Как проверить результат
Размер файла больше нуля, документ отображается с данными
Файл пустой или отсутствует — нет прав на запись или неверный путь
Возвращаются ожидаемые значения по координатам
Пустые строки — неверные координаты или данные в параметрах
Значения соответствуют ожидаемому объёму формы
Нулевая высота — документ ещё не заполнен на момент останова
FAQ
Можно ли посмотреть табличный документ в табло отладчика?
Нет. Табло показывает значения переменных, но табличный документ отображается там только как строка с именем типа. Используйте «Вычислить выражение» с обращением к конкретным ячейкам через Область() или запись в файл.
Как посмотреть документ, если отладка идёт на сервере 1С?
Запишите файл методом Записать в каталог на сервере, доступный учётной записи агента сервера, затем заберите файл по сети. Альтернатива — передать содержимое построчно через Сообщить или собрать текст в переменную и посмотреть её в табло.
Почему Область().Текст возвращает пустую строку, хотя в форме значение есть?
Ячейка могла быть заполнена через параметр макета — тогда значение хранится в свойстве Параметр. Также проверьте координаты: обращение за границы документа не вызывает ошибки, а возвращает пустую область.
В каком формате лучше сохранять документ для просмотра?
MXL сохраняет структуру максимально точно и открывается платформой 1С. XLSX удобен, если нужно посмотреть результат в Excel, PDF — для проверки итогового вида печатной формы. Для отладки структуры предпочтителен MXL.
Как отладить табличный документ, который формируется в фоновом задании?
Включите в настройках отладки конфигуратора автоматическое подключение фоновых заданий (Отладка → Подключение → Автоматическое подключение). После этого точки останова в коде фонового задания сработают, и документ можно будет сохранить в файл стандартным способом.
Что важно запомнить
Табличный документ в отладчике 1С напрямую не отображается. Основной приём — запись в файл MXL через «Вычислить выражение» и просмотр в толстом клиенте; для точечных проверок используйте Область().Текст и Область().Параметр. Учитывайте контекст выполнения (клиент или сервер) и не оставляйте отладочный код в рабочей базе.