ВЫБРАТЬ

Т


Создание отчетов


 


заполнения диаграммы данными, используя свойство диаграммы -«ИсточникДанных».

Вернемся в модуль формы отчета «РейтингКлиентов» и все строки, которыми мы добавляли в диаграмму данные:


«вручную» (используя

обрабатывать транспонирование диаграммы свойство СерииВСтроках).

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


ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();

Диаграмма = ЭлементыФормы.Диаграмма; //запретить автотранспонирование диаграммы Диаграмма.АвтоТранспонирование = Ложь;

//создать единственную точку диаграммы ТочкаДиаграммы = Диаграмма.УетановитьТочку("Доход");

//перебрать выборку результата запроса и создать серии и значения Пока ВыборкаРезультатаЗапроса.Следующий() Цикл ТекущаяСерияДиаграммы = Диаграмма

.УстановитьСерикКВыборкаРезультатаЗапроса.Клиент); Диаграмма.УстановитьЗначение(ТочкаДиаграммы, ТекущаяСерияДиаграммы,

ВыборкаРезультатаЗапроса.Доход); КонецЦикла;

//разрешить автотранспонирование диаграммы Диаграмма.АвтоТранспонирование = Истина;

заменим одной строкой:

ЭлементыФормы.Диаграмма.ИсточникДанных = Запрос,Выполнить().Выгрузить();

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

Запустите 1С:Предприятие в режиме отладки и проверьте работу отчета. Обратите внимание на то, что некоторые типы диаграмм выглядят «некрасиво» (график) или не отображаются совсем (изометрическая непрерывная, изометрическая лента). Это связано с тем, что при использовании источника данных нет возможности использовать свойство диаграммы «АвтоТранспонирование» и нужно


206



Использование основных объектов конфигурации


Создание отчетов


 


           
 
   
 
   

н п

Универсальный отчет

а примере создания универсального отчета мы познакомимся с объектом встроенного языка ПостроительОтчета и узнаем как работать со сводной таблицей.

Построитель отчета

остроитель отчета является объектом встроенного языка, позволяющим выполнять различные настройки запроса в ходе выполнения программы. Такие настройки могут выполняться как средствами встроенного языка (в результате некоторого алгоритма работы программы), так и

работы

интерактивно, непосредственно пользователем.


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


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


208



Использование основных объектов конфигурации

Автоматически параметры настройки формируются вызовом метода ЗаполнитьНастройки()следующим образом:

• полями, доступными для выбора в качестве полей отбора,
порядка или вывода в отчет (свойство «ДоступныеПоля»),
становятся все поля из списка выборки и все их подчиненные

поля,

• в список полей, выбранных для вывода в отчет (свойство
«ВыбранныеПоля»), добавляются все поля из списка выборки,

• полями, доступными для выбора в качестве измерений,
становятся все поля из предложения ИТОГИ ПОи все их
подчиненные поля,

 

• в список измерений по строкам (свойство
«ИзмеренияСтроки») добавляются все поля из предложения
ИТОГИПО,

• в доступные отборы (свойство «Отбор») добавляются
параметры виртуальных таблиц.

Вторым способом формирования параметров настроек построителя отчета является выделение их в тексте запроса. Для этого используются фигурные скобки «{}». Фигурными скобками могут быть выделены параметры построителя отчета, а также некоторые синтаксические конструкции:

ВЫБРАТЬ... - описывает поля, которые пользователь сможет
выбирать для вывода,

ГДЕ... - описывает поля, на которые пользователь может
накладывать ограничения,

УПОРЯДОЧИТЬПО... - описывает поля для обозначения

порядка,

ИТОГИ ПО... - описывает поля, по которым будут
выводиться итоговые значения.

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


Создание отчетов

Создание универсального отчета

М

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

Создадим в конфигураторе новый объект конфигурации Отчет «Универсальный». Этот отчет будет иметь реквизит «ПостроительОтчета», с типом ПостроительОтчета.

В модуле отчета создадим текст запроса для построителя отчета. Для этого вставим в модуль следующие строки:

ПостроительОтчета.Текст =

;

Установим курсор перед символом точки с запятой и вызовем конструктор запросов (Текст | Конструктор запроса...).

В качестве таблицы выберем виртуальную таблицу регистра накопления «Продажи.Обороты». Из этой таблицы выберем все поля:

Ha закладке «Итоги» укажем получение общих итогов и выберем все ресурсы регистра:


 


210



Использование основных объектов конфигурации


Создание отчетов


 


Нажмем «OK». B модуле отчета появится текст сформированного запроса:

ПостроительОтчета.Текст =

"ВЫБРАТЬ

| ПродажиОбороты.Номенклатура,

| ПродажиОбороты.Номенклатура.Представление,

| ПродажиОбороты.Клиент,

| ПродажиОбороты.Клиент.Представление,

| ПродажиОбороты.Мастер,

| ПродажиОбороты.Мастер.Представление,

| ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,

| ПродажиОбороты.ВыручкаОборот КАК ВыручкаОборот,

| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот

|ИЗ

| РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

|

|ИТОГИ СУММАСКоличествоОборот), СУММА(ВыручкаОборот),

| СУММА(СтоимостьОборот)

| ПООБЩИЕ";

Добавим в текст запроса указания для построителя отчетов:

ПостроительОтчета.Текст =

"ВЫБРАТЬ

| ПродажиОбороты.Номенклатура,

| ПродажиОбороты.Номенклатура.Представление,

| ПродажиОбороты.Клиент,

| ПродажиОбороты.Клиент.Представление,

| ПродажиОбороты.Мастер,

| ПродажиОбороты.Мастер.Представление,

| ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,

| ПродажиОбороты.ВыручкаОборот КАК ВыручкаОборот,

| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот

|ИЗ

| РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

|{ИТОГИ ПО Номенклатура, Клиент, Мастер}

|ИТОГИ СУММАСКоличествоОборот), СУММА(ВыручкаОборот),

| СУММА(СтоимостьОборот)

| ПООБЩИЕ";


Теперь создадим форму отчета и расположим на ней поле
табличного документа (Форма | Вставить элемент управления I
Поле табличного документа)
с именем

«ПолеТабличногоДокумента»:

Расположим в форме поле табличного документа

Затем установим курсор в верхнюю левую ячейку поля табличного
документа и выполним

Таблица| Встроенные таблицы | Вставить сводную таблицу.

После этого создадим обработчик события формы отчета «При открытии», и добавим в него следующий текст:

Процедура ПриОткрытии() СводнаяТаблица = ЭлементыФормы.ПолеТабличногоДокумеита

■ВстроенныеТаблицы.СводнаяТаблица1,' СводнаяТаблица.ИсточникДанных= ПостроительОтчета;

КонецПроцедуры


Этим текстом мы устанавливаем сводной таблице в качестве источника данных построитель отчета.


212



Использование основных объектов конфигурации


Создание отчетов


 


Запустим 1С:Предприятие в режиме отладки и откроем отчет «Универсальный». На экране появится форма отчета, и окно выбора полей сводной таблицы:


Теперь в окне выбора полей сводной таблицы раскроем группу «Номенклатура» и добавим значение «(Без иерархии)» в строки, а измерение «Клиент» добавим в колонки. Отчет изменит свой вид:


 


Поместим значение ресурса «ВыручкаОборот» в данные, измерение «Номенклатура» в строки, а измерение «Мастер» в колонки. Отчет примет вид:


Таким образом, используя построитель отчета, мы предоставили пользователю возможность самостоятельно формировать отчет по регистру «ОказанныеУслуги» в том виде, который ему нужен.


 



 


 


214



Использование основных объектов конфигурации


Создание отчетов


 


Отчет Универсальный2


«ТабличноеПолеПоля» (соответственно «КоманднаяПанельПорядок» и «ТабличноеПолеПорядок»):


 


Н

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

Для более легкого понимания мы будем использовать практически тот же самый запрос по регистру накопления «Продажи». Таким образом, можно сказать, что в этом отчете мы просто покажем другой вариант управления настройками построителя отчета.

Создадим новый объект конфигурации Отчет с именем «Универсальный2».

На закладке «Данные» создадим реквизит отчета с именем «ПостроительОтчета» и типом ПостроительОтчета.На закладке «Формы» с помощью конструктора создадим основную форму отчета и приступим к ее редактированию.

Расположим в форме две надписи с именами «Поля» и «Порядок» и заголовками «Поля:» и «Порядок:» соответственно:


Теперь для табличного поля «ТабличноеПолеПоля»
источник данных

ОтчетОбъект.ПостроительОтчета.ВыбранныеПоля:


зададим как


 




 


Под каждым текстовым полем расположим командную панель и табличное поле с именами «КоманднаяПанельПоля» и


216



Использование основных объектов конфигурации


Создание отчетов


 


После этого для командной панели «КоманднаяПанельПоля» установим флаг «Автозаполнение» и в качестве источника действий укажем ТабличноеПолеПоля:

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


Табличному полю «ТабличноеПолеПорядок» укажем источник
данных ОтчетОбъект.ПостроительОтчета.Порядок, и у командной
панели «КоманднаяПанельПорядок» поднимем флаг

«Автозаполнение» и укажем в качестве источника действий ТабличноеПолеПорядок:


Путем этих несложных действий мы с вами связали элементы управления, расположенные в форме, со свойствами построителя отчета «ВыбранныеПоля» и «Порядок». Свойство «ВыбранныеПоля» позволяет управлять списком полей, которые войдут в результат запроса, а свойство «Порядок» позволяет настраивать порядок вывода строк результата запроса.

Кроме этого, для того, чтобы пользователь мог настраивать значения этих полей, мы расположили в форме две командные панели, связанные с этими табличными полями. Используя свойства командных панелей «Автозаполнение» и «ИсточникДействий» мы добились автоматического формирования команд в командных панелях, исходя из типа данных, содержащихся в каждом из табличных полей.

*" Узнай больше!

О связи элементов управления и данных, можно прочитать в разделе «Данные и элементы управления» на странице 502


218



Использование основных объектов конфигурации


Создание отчетов


 


Теперь в нижней части формы разместим еще одну надпись с именем «Оформление» и заголовком «Оформление:», а под ним поле выбора с именем «ПолеВыбораОформление»:

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


| РегистрНакопления.Продажи КАК Продажи

|

|{УПОРЯДОЧИТЬ ПО Номенклатура.*, Клиент.*, Мастер.*}

|

|ИТОГИ СУММА(Количество),

| Сумма(Выручка),

| Сумма(Стоимость)

| ПО ОБЩИЕ";

Как видите это совсем простой запрос по регистру накопления «Продажи», в котором расположены управляющие конструкции для построителя отчета.

Конструкция ВЫБРАТЬпозволяет предоставить пользователю возможность выбирать в качестве полей запроса как сами исходные поля запроса, так и все поля «через точку» от данных полей.

Конструкция УПОРЯДОЧИТЬ ПОпредоставляет пользователю возможность упорядочивать строки результата запроса.

Теперь, для того, чтобы привести состав полей в «исходное» состояние, добавим команду очистки выбранных полей построителя отчета, и затем в обработчик «КнопкаСформироватьНажатие» вставим команды выполнения построителя отчета:


 


ПроцедураКнопкаСформироватьНажатие(Элемент) КонецПроцедуры

ПостроительОтчета.Текст =

"ВЫБРАТЬ

| Продажи.Номенклатура КАК Номенклатура,

| Продажн.Клиент КАК Клиеит,

| Продажи.Мастер КАК Мастер,

| Продажи.Количество КАК Количества,

| Продажи.Выручка КАКВыручка,

| Продажи.Стоимость КАК Стоимость

| Номенклатура.*,

| Клиент.*,

| Мастер.*,

| Количество.*,

| Выручка.*,

| Стоимость.*}