Устройство системы компоновки данных

В данной статье мы попробуем объяснить устройство системы компоновки данных понятным языком.

Фактически, формирование отчета средствами СКД разбито на несколько этапов. Причем нужно понимать, что разработчик может внести свои изменения во время любого из этапов.

По сути, формирование отчета это всего лишь два “глобальных” этапа:  сама компоновка данных, согласно схемы, и вывод результата пользователю. На самом деле объектов компоновки немного больше чем два.

Для того чтобы скомпоновать данные в СКД существуют объекты: Компоновщик макета и Процессор компоновки данных. Рассмотрим принцип их работы.  Компоновщик макета на основании схемы компоновки данных и настроек компоновки данных формирует макет компоновки данных:

Рис. 1 Компоновщик макета

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

Рис.2 Процессор компоновки данных

Далее результат компоновки обрабатывается Процессором вывода, который выводит результат компоновки данных в один из следующих форматов:

  • Табличный документ;
  • Таблица значений;
  • Дерево значений.

Рис. 3 Процессор вывода

Таким образом, мы познакомились со структурой системы компоновки данных, основными её элементами. Более подробное изучение работы данных объектов в дальнейших статьях цикла “Первые шаги”.

Подписаться
Уведомить о
guest
6 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
nkleopa
nkleopa
12 лет назад

Подскажите, а в какой момент происходит выполнение запроса, содержащегося в СКД, на SQL сервере?(естественно, имею в виду клиент-серверный вариант базы)

nkleopa
nkleopa
12 лет назад

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

napagokc
napagokc
10 лет назад

А можно как-нибудь перехватить Результат компоновки данных до того, как он попадет в процессор вывода, и как-нибудь его (результат) преобразовать? Дело в том, что у меня в отчете получается такая вещь, которую невозможно сделать запросом – нужно у определенного параметра взять данные и пропорционально раскидать по остальным параметрам. Процент раскидывания нужно еще высчитать, поэтому важно получить результат компоновки и немного его преобразовать до того, как будет осуществлен вывод в табличный документ.

kuzyara
kuzyara
9 лет назад

компонуешь макет, берешь из него запрос и параметры, выполняешь, потом выводишь результат в свой другой макет табличного документа

kuzyara
kuzyara
9 лет назад

пробовал подменять источник данных с запроса на ТЗ, ругается на характеристики