18.11.2009
В данной статье показаны примеры того, каким образом можно добавлять некоторые элементы настроек компоновки данных при помощи встроенного языка.
Пример добавления выбранного поля:
Копировать в буфер обмена// Добавим выбранное поле для вывода в отчет.
ВыбранноеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
В данном примере в список выбранных полей было добавлено поле КоличествоОстаток.
Для указания взаимного расположения полей в список выбранных полей можно добавить группу выбранных полей и поместить выбранные поля в нее.
Пример:
Копировать в буфер обмена// Создадим группу полей, для того, чтобы выводить в ней склад в раздельных колонках. ГруппаПолей = Настройки.Выбор.Элементы.Добавить(Тип("ГруппаВыбранныхПолейКомпоновкиДанных")); // Установим шапку группы полей. ГруппаПолей.Заголовок = "Реквизиты склада"; // Укажем размещение. ГруппаПолей.Расположение = РасположениеПоляКомпоновкиДанных.Горизонтально; // Добавим выбранное поле в группу для вывода в отчет. ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Склад"); // Добавим выбранное поле в группу для вывода в отчет. ВыбранноеПоле = ГруппаПолей.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Склад.Код"); // Установим заголовок поля. ВыбранноеПоле.Заголовок = "Код";
В данном примере создана группа выбранных полей, в нее помещено два поля. Группе указано, каким образом располагать поля, вложенные в нее. Для поля Склад.Код установлен заголовок.
Пример добавления элемента отбора:
Копировать в буфер обмена// Добавим отбор на группу номенклатуры. ЭлементОтбора = Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии; ЭлементОтбора.ПравоеЗначение = ГруппаНоменклатуры;
В данном примере в отчет добавлен элемент отбора с видом сравнения "В Группе".
В отбор можно добавлять сложные условия. Делается это при помощи групп элементов отбора.
Пример добавления группового условия:
Копировать в буфер обменаГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора.ПравоеЗначение = 100; ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ЭлементОтбора.ПравоеЗначение = 200;
В данном примере добавлено условие КоличествоОстаток >= 100 И КоличествоОстаток <=200.
Пример добавления упорядочивания:
Копировать в буфер обмена// Добавим упорядочивание. ЭлементПорядка = Настройки.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв;
В данном примере показано добавление упорядочивания по полю КоличествоОстаток в убывающем порядке.
Пример установки параметров вывода:
Копировать в буфер обмена// Установим макет оформления. ЭлементОформления = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МакетОформления")); ЭлементОформления.Использование = Истина; ЭлементОформления.Значение = "Море"; // Укажем, что отбор не нужно выводить в отчет. ЭлементОформления = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВыводитьОтбор")); ЭлементОформления.Использование = Истина; ЭлементОформления.Значение = ТипВыводаТекстаКомпоновкиДанных.НеВыводить;
В данном примере отчету установлен макет оформления и указано, что выводить отбор в результат отчета не нужно.
Пример добавления условного оформления:
Копировать в буфер обмена// Добавим условное оформление. ЭлементУсловногоОформления = Настройки.УсловноеОформление.Элементы.Добавить(); // Создадим условие оформления. ГруппаЭлементовОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаЭлементовОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ; ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭлементОтбора.ПравоеЗначение = 100; ЭлементОтбора = ГруппаЭлементовОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ЭлементОтбора.ПравоеЗначение = 200; // Укажем цвет. ЭлементОформления = ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЦветТекста")); ЭлементОформления.Использование = Истина; ЭлементОформления.Значение = Новый Цвет(255, 0, 0); // Укажем, что оформление нужно применять только к одному полю. ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток");
В данном примере добавлено оформление на поле КоличествоОстаток. Поле будет отображаться красным цветом, в случае если его значение больше или равно 100 и меньше или равно 200.
Пример добавление группировки:
Копировать в буфер обмена // Добавим новую группировку в структуру отчета.
Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
// Укажем, по каким полям нужно группировать.
ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
// Укажем тип иерархии.
ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
В данном примере добавлена группировка по полю Номенклатура с иерархией.
Заметим, что группировке нужно указать, какие поля в ней нужно выводить, как упорядочивать группировку. Если нужно, чтобы состав выводимых полей и полей упорядочивания определялся системой самостоятельно на основании полей группировки и вышестоящих группировок и отчета, то нужно добавить в выбранные поля и поля упорядочивания авто поля.
Пример добавления автополей в порядок и выбранные поля.
Копировать в буфер обмена // Укажем, что поля, которые нужно выводить в группировке, система должна определять самостоятельно.
Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку.
Группировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
Детальные записи являются группировкой, в которой отсутствуют поля группировки.
Пример добавления детальных записей, вложенных в группировку:
Копировать в буфер обмена// Добавим в отчет детальные записи, вложенные в группировку.
ДетальныеЗаписи = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
// Укажем, что поля, которые нужно выводить в детальных записях, система должна определять самостоятельно.
ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
// Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить детальные записи.
ДетальныеЗаписи.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
// Добавим детальным записям оформление.
ЭлементУсловногоОформления = ДетальныеЗаписи.УсловноеОформление.Элементы.Добавить();
// Укажем наклонный шрифт.
ЭлеменОформления = ЭлементУсловногоОформления.Оформление.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Шрифт"));
ЭлеменОформления.Использование = Истина;
ЭлеменОформления.Значение = Новый Шрифт(,,, Истина);
В данном примере детальные записи добавлены в группировку, в детальные записи добавлены автополя выбора и порядка, указано условное оформление, которое будет действовать в этих детальных записях.
Пример добавления диаграммы:
Копировать в буфер обмена// Добавим в отчет диаграмму. Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных")); // Установим заголовок диаграммы ПараметрВывода = Диаграмма.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок")); ПараметрВывода.Значение = "Остатки по складам"; ПараметрВывода.Использование = Истина; // Укажем, какой ресурс нужно выводить в диаграмме ВыбранноеПоле = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОстаток"); // Добавим в диаграмму серию. Серия = Диаграмма.Серии.Добавить(); // Укажем, по какому полю нужно группировать в серии. ПолеГруппировки = Серия.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Склад"); // Укажем, что система сама должна определять, какие поля нужно выводить в серии. Серия.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); // Укажем каким образом нужно упорядочивать данные серии ЭлементПорядка = Серия.Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Склад");
В данном примере в отчет добавлена диаграмма, в диаграмму добавлена серия, в серии указано, каким образом ее нужно упорядочивать.
Пример добавления таблицы:
Копировать в буфер обмена// Добавим в отчет таблицу Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных")); // Добавим в таблицу строку Строка = Таблица.Строки.Добавить(); // Укажем, что система сама должна определять, какие поля нужно выводить в группировке Строка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); // Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку Строка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); // Укажем, по какому полю нужно группировать ПолеГруппировки = Строка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура"); // Добавим в таблицу колонку Колонка = Таблица.Колонки.Добавить(); // Укажем, что система сама должна определять, какие поля нужно выводить в группировке Колонка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); // Укажем, что системе необходимо самостоятельно определять порядок, в котором выводить группировку Колонка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); // Укажем, по какому полю нужно группировать ПолеГруппировки = Колонка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Склад");
В данном примере в отчет добавлена таблица, в таблице в строках выводится группировка по полю Номенклатура, а в колонках выводится группировка по полю Склад.
Приведенный в данной статье пример можно посмотреть во внешнем отчете ПримерПрограммнойРаботыСНастройкамиКомпоновкиДанных, который можно найти в каталоге C:\Its\EXE\ExtReps\Samples8\
Вы можете установить их на компьютер прямо сейчас
Данный внешний отчет работает на конфигурации "Примеры 8.1".