Устройство системы компоновки данных
Фактически, формирование отчета средствами СКД разбито на несколько этапов. Причем нужно понимать, что разработчик может внести свои изменения во время любого из этапов.
По сути, формирование отчета это всего лишь два “глобальных” этапа: сама компоновка данных, согласно схемы, и вывод результата пользователю. На самом деле объектов компоновки немного больше чем два.
Для того чтобы скомпоновать данные в СКД существуют объекты: Компоновщик макета и Процессор компоновки данных. Рассмотрим принцип их работы. Компоновщик макета на основании схемы компоновки данных и настроек компоновки данных формирует макет компоновки данных:
Теперь наш сформированный макет необходимо заполнить данными. Именно эту функцию и выполняет Процессор компоновки данных. Процессор формирует результат компоновки. Также покажем это графически:
Далее результат компоновки обрабатывается Процессором вывода, который выводит результат компоновки данных в один из следующих форматов:
- Табличный документ;
- Таблица значений;
- Дерево значений.
Таким образом, мы познакомились со структурой системы компоновки данных, основными её элементами. Более подробное изучение работы данных объектов в дальнейших статьях цикла “Первые шаги”.
Подскажите, а в какой момент происходит выполнение запроса, содержащегося в СКД, на SQL сервере?(естественно, имею в виду клиент-серверный вариант базы)
Предполагая, что это делает процессор компонвоки
Спасибо за ответ!
Я правильно понимаю, что в коде:
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
ДанныеРасшифровки);
//Очищаем поле табличного документа
Результат = ЭлементыФормы.Результат;
Результат.Очистить();
//Выводим результат в табличный документ
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанных
ВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Обращение к SQL серверу происходит в последней строке?
А можно как-нибудь перехватить Результат компоновки данных до того, как он попадет в процессор вывода, и как-нибудь его (результат) преобразовать? Дело в том, что у меня в отчете получается такая вещь, которую невозможно сделать запросом – нужно у определенного параметра взять данные и пропорционально раскидать по остальным параметрам. Процент раскидывания нужно еще высчитать, поэтому важно получить результат компоновки и немного его преобразовать до того, как будет осуществлен вывод в табличный документ.
компонуешь макет, берешь из него запрос и параметры, выполняешь, потом выводишь результат в свой другой макет табличного документа
пробовал подменять источник данных с запроса на ТЗ, ругается на характеристики