Часто при разработке печатных форм или отчетов на базе ТабличныйДокумент начинающие разработчики сталкиваются с проблемой: данные из запроса не отображаются в сформированном отчете. Давайте разберем, почему это происходит и как выстроить алгоритм формирования отчета правильно.
Проанализируем типичные ошибки, с которыми столкнулся автор темы, чтобы вы могли их избежать в своей практике:
Заполнить() или присвоение значений параметрам вызываются вне цикла Пока Выборка.Следующий() Цикл, из-за чего в документе либо пусто, либо выводится только последняя запись.УстановитьПараметр() не даст результата, если в самом тексте запроса нет соответствующих именованных параметров (обозначаются символом &).Рассмотрим пошагово, как должен выглядеть корректный код для вывода строк в табличный документ. Главное правило: сначала готовим данные и область, а затем выводим её в документ.
Представим, что мы формируем отчет по наработке оборудования. Сначала определим макет и области, а затем организуем цикл:
// Получаем макет и области
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
// Выводим шапку
ОбластьШапка.Параметры.БригадаНаим = ЭтотОбъект.Бригада;
ТабДокумент.Вывести(ОбластьШапка);
// Выполняем запрос
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Дата, Бригада, ТалевойКанат КАК Канат ИЗ Документ.НаработкаТалевогоКаната";
Выборка = Запрос.Выполнить().Выбрать();
// Цикл вывода строк
Пока Выборка.Следующий() Цикл
// Заполняем параметры области данными из выборки
ОбластьСтрока.Параметры.Заполнить(Выборка);
// Выводим заполненную область в документ
ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
Метод Заполнить() объекта Параметры является одним из самых мощных инструментов разработчика. Он автоматически переносит значения из полей выборки в ячейки макета, у которых свойство «Заполнение» установлено в значение «Параметр». Чтобы это работало:
Важно: Убедитесь, что в макете в нужных ячейках прописаны имена параметров, точно соответствующие именам колонок вашей выборки (например, если в запросе поле названо ТалевойКанат, то и в параметрах макета должно быть имя ТалевойКанат).
Если данные все равно не отображаются, воспользуйтесь следующими рекомендациями:
ТабДокумент.Вывести(ОбластьСтрока). В режиме «Табло» проверьте, что находится внутри ОбластьСтрока.Параметры перед выводом.Помните, что порядок операций «Заполнение -> Вывод» — это фундамент работы с ТабличныйДокумент в 1С. Понимание этого простого правила избавит вас от множества проблем при написании отчетов любой сложности.