18.11.2009

Создание настроек компоновки данных из встроенного языка

В данной статье показаны примеры того, каким образом можно добавлять некоторые элементы настроек компоновки данных при помощи встроенного языка.

Добавление выбранного поля

Пример добавления выбранного поля:

Копировать в буфер обмена

// Добавим выбранное поле для вывода в отчет.  
ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");

В данном примере в список выбранных полей было добавлено поле КоличествоОстаток.

Для указания взаимного расположения полей в список выбранных полей можно добавить группу выбранных полей и поместить выбранные поля в нее.

Пример:

Копировать в буфер обмена
  // Создадим группу полей, для того, чтобы выводить в ней склад в раздельных колонках.
 ГруппаПолей = Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных"));
 // Установим шапку группы полей.
 ГруппаПолей.Заголовок = "Реквизиты склада";
 // Укажем размещение.
 ГруппаПолей.Расположение = РасположениеПоляКомпоновкиДанных.Горизонтально;
 
 // Добавим выбранное поле в группу для вывода в отчет.
 ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
 ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Склад");
 
 // Добавим выбранное поле  в группу для вывода в отчет.
 ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
 ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Склад.Код");
 // Установим заголовок поля.
 ВыбранноеПоле.Заголовок = "Код";

В данном примере создана группа выбранных полей, в нее помещено два поля. Группе указано, каким образом располагать поля, вложенные в нее. Для поля Склад.Код установлен заголовок.

Добавление отбора

Пример добавления элемента отбора:

Копировать в буфер обмена
 // Добавим отбор на группу номенклатуры.
 ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
 ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");
 ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
 ЭлементОтбора.ПравоеЗначение = ГруппаНоменклатуры;

В данном примере в отчет добавлен элемент отбора с видом сравнения "В Группе".

В отбор можно добавлять сложные условия. Делается это при помощи групп элементов отбора.

Пример добавления группового условия:

Копировать в буфер обмена
 ГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
 ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
 
 ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
 ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
 ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
 ЭлементОтбора.ПравоеЗначение = 100;
 
 ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
 ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
 ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
 ЭлементОтбора.ПравоеЗначение = 200;

В данном примере добавлено условие КоличествоОстаток >= 100 И КоличествоОстаток <=200.

Добавление упорядочивания

Пример добавления упорядочивания:

Копировать в буфер обмена
  // Добавим упорядочивание.
 ЭлементПорядка = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
 ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
 ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;

В данном примере показано добавление упорядочивания по полю КоличествоОстаток в убывающем порядке.

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

Пример установки параметров вывода:

Копировать в буфер обмена
 // Установим макет оформления.
 ЭлементОформления = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления"));
 ЭлементОформления.Использование = Истина;
 ЭлементОформления.Значение = "Море";
 
 // Укажем, что отбор не нужно выводить в отчет.
 ЭлементОформления = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор"));
 ЭлементОформления.Использование = Истина;
 ЭлементОформления.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;

В данном примере отчету установлен макет оформления и указано, что выводить отбор в результат отчета не нужно.

Добавление условного оформления

Пример добавления условного оформления:

Копировать в буфер обмена
// Добавим условное оформление.
 ЭлементУсловногоОформления = Настройки.УсловноеОформление.Элементы.Добавить();
 
 // Создадим условие оформления.
 ГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
 ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
 
 ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
 ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
 ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
 ЭлементОтбора.ПравоеЗначение = 100;
 
 ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
 ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
 ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
 ЭлементОтбора.ПравоеЗначение = 200;
 
 // Укажем цвет.
 ЭлементОформления = ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветТекста"));
 ЭлементОформления.Использование = Истина;
 ЭлементОформления.Значение = Новый Цвет(255, 0, 0);
 
 // Укажем, что оформление нужно применять только к одному полю.
 ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
 ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");

В данном примере добавлено оформление на поле КоличествоОстаток. Поле будет отображаться красным цветом, в случае если его значение больше или равно 100 и меньше или равно 200.

Добавление группировки

Пример добавление группировки:

Копировать в буфер обмена

 // Добавим новую группировку в структуру отчета.
Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

// Укажем, по каким полям нужно группировать.
ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");

// Укажем тип иерархии.
ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;

В данном примере добавлена группировка по полю Номенклатура с иерархией.

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

Пример добавления автополей в порядок и выбранные поля.

Копировать в буфер обмена

 // Укажем, что поля, которые нужно выводить в группировке, система должна определять самостоятельно.
Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

// Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку.
Группировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

Добавление детальных записей

Детальные записи являются группировкой, в которой отсутствуют поля группировки.

Пример добавления детальных записей, вложенных в группировку:

Копировать в буфер обмена

// Добавим в отчет детальные записи, вложенные в группировку.
ДетальныеЗаписи = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

// Укажем, что поля, которые нужно выводить в детальных записях, система должна определять самостоятельно.
ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

// Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить детальные записи.
ДетальныеЗаписи.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

// Добавим детальным записям оформление.
ЭлементУсловногоОформления = ДетальныеЗаписи.УсловноеОформление.Элементы.Добавить();
// Укажем наклонный шрифт.
ЭлеменОформления = ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Шрифт"));
ЭлеменОформления.Использование = Истина;
ЭлеменОформления.Значение = Новый Шрифт(,,, Истина);

В данном примере детальные записи добавлены в группировку, в детальные записи добавлены автополя выбора и порядка, указано условное оформление, которое будет действовать в этих детальных записях.

Добавление диаграммы

Пример добавления диаграммы:

Копировать в буфер обмена
// Добавим в отчет диаграмму.
 Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
 
 // Установим заголовок диаграммы
 ПараметрВывода = Диаграмма.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок"));
 ПараметрВывода.Значение = "Остатки по складам";
 ПараметрВывода.Использование = Истина;
 
 // Укажем, какой ресурс нужно выводить в диаграмме
 ВыбранноеПоле = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
 ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
 
 // Добавим в диаграмму серию.
 Серия = Диаграмма.Серии.Добавить();

 // Укажем, по какому полю нужно группировать в серии.
 ПолеГруппировки = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
 ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Склад");
 
 // Укажем, что система сама должна определять, какие поля нужно выводить в серии.
 Серия.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
 
 // Укажем каким образом нужно упорядочивать данные серии
 ЭлементПорядка = Серия.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
 ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Склад");

В данном примере в отчет добавлена диаграмма, в диаграмму добавлена серия, в серии указано, каким образом ее нужно упорядочивать.

Добавление таблицы

Пример добавления таблицы:

Копировать в буфер обмена
// Добавим в отчет таблицу
 Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
 
 // Добавим в таблицу строку
 Строка = Таблица.Строки.Добавить();
 // Укажем, что система сама должна определять, какие поля нужно выводить в группировке
 Строка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
 // Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку
 Строка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
 // Укажем, по какому полю нужно группировать
 ПолеГруппировки = Строка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
 ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
 
 // Добавим в таблицу колонку
 Колонка = Таблица.Колонки.Добавить();
 // Укажем, что система сама должна определять, какие поля нужно выводить в группировке
 Колонка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
 // Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку
 Колонка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
 // Укажем, по какому полю нужно группировать
 ПолеГруппировки = Колонка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
 ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Склад");

В данном примере в отчет добавлена таблица, в таблице в строках выводится группировка по полю Номенклатура, а в колонках выводится группировка по полю Склад.

Пример

Приведенный в данной статье пример можно посмотреть во внешнем отчете ПримерПрограммнойРаботыСНастройкамиКомпоновкиДанных, который можно найти в каталоге C:\Its\EXE\ExtReps\Samples8\

Вы можете установить их на компьютер прямо сейчас

Копировать

Данный внешний отчет работает на конфигурации "Примеры 8.1".