Готовишься к экзамену?
Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.
Вывод результата системы компоновки данных производится:
специальным методом объекта (в параметре которого задается поле табличного документа)
Неправильно: В СКД действительно есть удобные методы вывода (например, «Вывести» у процессора вывода), но они не означают, что существует единый «магический» метод у результата, который выводит всё целиком без разбиения. Внутренне вывод все равно выполняется по шагам - через обработку элементов результата компоновки.
путем вывода последовательно получаемых элементов результата системы компоновки
Правильно: Результат СКД представлен не «готовой таблицей», а набором элементов результата (заголовки, строки, группировки, итоги, оформление и т.п.), которые формируются последовательно. Процессор вывода берет эти элементы и по очереди переносит их в табличный документ, формируя итоговый отчет.
путем обхода объекта, содержащего результат исполнения системы компоновки
Неправильно: В СКД результат как единый самостоятельный объект «целиком» не предполагается для обхода в таком смысле - логически существуют именно элементы результата. На практике получают следующий элемент результата (например, методом «Следующий») и выводят его процессором вывода, а не обходят некий «контейнер результата» как единую структуру.
Пояснение
В СКД важно помнить принцип: результат компоновки - это поток (последовательность) элементов результата, а не заранее сформированная «готовая таблица». Поэтому вывод отчета устроен как поэлементная печать: платформа формирует очередной элемент результата (например, заголовок, строку группировки, строку данных, итог, область оформления), а процессор вывода переносит этот элемент в конкретное представление - чаще всего в ТабличныйДокумент.
Типовой сценарий программного вывода выглядит так:
1) Готовят макет компоновки (на основе схемы и настроек).
2) Запускают процессор компоновки данных (он готовит элементы результата).
3) В цикле получают элементы результата и выводят их:
- Элемент = ПроцессорКомпоновкиДанных.Следующий();
- пока Элемент не Неопределено: ПроцессорВывода.ВывестиЭлемент(Элемент);
Даже если вы используете удобный метод «Вывести» у процессора вывода, это, по сути, «обертка», которая сама выполняет тот же поэлементный вывод (начать вывод → вывести все элементы → закончить вывод). Этот подход нужен, чтобы платформа могла формировать отчет порциями, поддерживать оформление, группировки и итоги, а также (в некоторых режимах) позволять прерывать вывод пользователем.
Дополнительно: кроме вывода в табличный документ существуют процессоры вывода результата СКД в коллекции значений (таблица/дерево значений). Принцип остается тем же - вывод идет через последовательную обработку элементов результата.