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