ВЫБРАТЬ
Т
Создание отчетов
заполнения диаграммы данными, используя свойство диаграммы -«ИсточникДанных».
Вернемся в модуль формы отчета «РейтингКлиентов» и все строки, которыми мы добавляли в диаграмму данные:
«вручную» (используя
обрабатывать транспонирование диаграммы свойство СерииВСтроках).
Таким образом, на примере этого отчета мы продемонстрировали как создавать запросы, используя конструктор запросов, и как использовать диаграмму для визуализации результата запроса.
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
Диаграмма = ЭлементыФормы.Диаграмма; //запретить автотранспонирование диаграммы Диаграмма.АвтоТранспонирование = Ложь;
//создать единственную точку диаграммы ТочкаДиаграммы = Диаграмма.УетановитьТочку("Доход");
//перебрать выборку результата запроса и создать серии и значения Пока ВыборкаРезультатаЗапроса.Следующий() Цикл ТекущаяСерияДиаграммы = Диаграмма
.УстановитьСерикКВыборкаРезультатаЗапроса.Клиент); Диаграмма.УстановитьЗначение(ТочкаДиаграммы, ТекущаяСерияДиаграммы,
ВыборкаРезультатаЗапроса.Доход); КонецЦикла;
//разрешить автотранспонирование диаграммы Диаграмма.АвтоТранспонирование = Истина;
заменим одной строкой:
ЭлементыФормы.Диаграмма.ИсточникДанных = Запрос,Выполнить().Выгрузить();
Дело в том, что метод Выгрузить()по умолчанию выгружает результат запроса в таблицу значений, которую мы и устанавливаем диаграмме в качестве источника данных. Причем структура получаемой таблицы значений как раз соответствует расположению серий в строках диаграммы, принятому по умолчанию.
Запустите 1С:Предприятие в режиме отладки и проверьте работу отчета. Обратите внимание на то, что некоторые типы диаграмм выглядят «некрасиво» (график) или не отображаются совсем (изометрическая непрерывная, изометрическая лента). Это связано с тем, что при использовании источника данных нет возможности использовать свойство диаграммы «АвтоТранспонирование» и нужно
206
Использование основных объектов конфигурации
Создание отчетов
![]() | |||||
![]() | |||||
![]() |
н п |
Универсальный отчет
а примере создания универсального отчета мы познакомимся с объектом встроенного языка ПостроительОтчета и узнаем как работать со сводной таблицей.
Построитель отчета
остроитель отчета является объектом встроенного языка, позволяющим выполнять различные настройки запроса в ходе выполнения программы. Такие настройки могут выполняться как средствами встроенного языка (в результате некоторого алгоритма работы программы), так и
работы
интерактивно, непосредственно пользователем.
Исходными данными для построителя отчета является текст запроса. На его основании построитель отчета определяет, какие параметры будут доступны для настройки и каким образом возможна настройка состава и порядка итоговых данных. Затем происходит программное или интерактивное формирование этих настроек и вывод результатов в табличный документ, диаграмму, сводную таблицу или сводную диаграмму.
Формировать параметры настройки на основании текста запроса построитель отчета может двумя способами: автоматически и на основании указаний, расположенных в тексте запроса.
208
Использование основных объектов конфигурации
Автоматически параметры настройки формируются вызовом метода ЗаполнитьНастройки()следующим образом:
• полями, доступными для выбора в качестве полей отбора,
порядка или вывода в отчет (свойство «ДоступныеПоля»),
становятся все поля из списка выборки и все их подчиненные
поля,
• в список полей, выбранных для вывода в отчет (свойство
«ВыбранныеПоля»), добавляются все поля из списка выборки,
• полями, доступными для выбора в качестве измерений,
становятся все поля из предложения ИТОГИ ПОи все их
подчиненные поля,
• в список измерений по строкам (свойство
«ИзмеренияСтроки») добавляются все поля из предложения
ИТОГИПО,
• в доступные отборы (свойство «Отбор») добавляются
параметры виртуальных таблиц.
Вторым способом формирования параметров настроек построителя отчета является выделение их в тексте запроса. Для этого используются фигурные скобки «{}». Фигурными скобками могут быть выделены параметры построителя отчета, а также некоторые синтаксические конструкции:
• ВЫБРАТЬ... - описывает поля, которые пользователь сможет
выбирать для вывода,
• ГДЕ... - описывает поля, на которые пользователь может
накладывать ограничения,
• УПОРЯДОЧИТЬПО... - описывает поля для обозначения
порядка,
• ИТОГИ ПО... - описывает поля, по которым будут
выводиться итоговые значения.
После того, как значения параметров указаны, вывод результатов запроса возможен как принудительно (используя методы Выполнить()и Вывести()),либо автоматически, если результаты выводятся в сводную таблицу.
Создание отчетов
Создание универсального отчета
М |
ы с вами рассмотрим один из вариантов использования построителя отчета, в котором результаты отчета будут выводиться в сводную таблицу.
Создадим в конфигураторе новый объект конфигурации Отчет «Универсальный». Этот отчет будет иметь реквизит «ПостроительОтчета», с типом ПостроительОтчета.
В модуле отчета создадим текст запроса для построителя отчета. Для этого вставим в модуль следующие строки:
ПостроительОтчета.Текст =
;
Установим курсор перед символом точки с запятой и вызовем конструктор запросов (Текст | Конструктор запроса...).
В качестве таблицы выберем виртуальную таблицу регистра накопления «Продажи.Обороты». Из этой таблицы выберем все поля:
Ha закладке «Итоги» укажем получение общих итогов и выберем все ресурсы регистра:
210
Использование основных объектов конфигурации
Создание отчетов
Нажмем «OK». B модуле отчета появится текст сформированного запроса:
ПостроительОтчета.Текст =
"ВЫБРАТЬ
| ПродажиОбороты.Номенклатура,
| ПродажиОбороты.Номенклатура.Представление,
| ПродажиОбороты.Клиент,
| ПродажиОбороты.Клиент.Представление,
| ПродажиОбороты.Мастер,
| ПродажиОбороты.Мастер.Представление,
| ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
| ПродажиОбороты.ВыручкаОборот КАК ВыручкаОборот,
| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
|
|ИТОГИ СУММАСКоличествоОборот), СУММА(ВыручкаОборот),
| СУММА(СтоимостьОборот)
| ПООБЩИЕ";
Добавим в текст запроса указания для построителя отчетов:
ПостроительОтчета.Текст =
"ВЫБРАТЬ
| ПродажиОбороты.Номенклатура,
| ПродажиОбороты.Номенклатура.Представление,
| ПродажиОбороты.Клиент,
| ПродажиОбороты.Клиент.Представление,
| ПродажиОбороты.Мастер,
| ПродажиОбороты.Мастер.Представление,
| ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
| ПродажиОбороты.ВыручкаОборот КАК ВыручкаОборот,
| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
|ИЗ
| РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
|{ИТОГИ ПО Номенклатура, Клиент, Мастер}
|ИТОГИ СУММАСКоличествоОборот), СУММА(ВыручкаОборот),
| СУММА(СтоимостьОборот)
| ПООБЩИЕ";
Теперь создадим форму отчета и расположим на ней поле
табличного документа (Форма | Вставить элемент управления I
Поле табличного документа)с именем
«ПолеТабличногоДокумента»:
Расположим в форме поле табличного документа
Затем установим курсор в верхнюю левую ячейку поля табличного
документа и выполним
Таблица| Встроенные таблицы | Вставить сводную таблицу.
После этого создадим обработчик события формы отчета «При открытии», и добавим в него следующий текст:
Процедура ПриОткрытии() СводнаяТаблица = ЭлементыФормы.ПолеТабличногоДокумеита
■ВстроенныеТаблицы.СводнаяТаблица1,' СводнаяТаблица.ИсточникДанных= ПостроительОтчета;
КонецПроцедуры
Этим текстом мы устанавливаем сводной таблице в качестве источника данных построитель отчета.
212
Использование основных объектов конфигурации
Создание отчетов
Запустим 1С:Предприятие в режиме отладки и откроем отчет «Универсальный». На экране появится форма отчета, и окно выбора полей сводной таблицы:
Теперь в окне выбора полей сводной таблицы раскроем группу «Номенклатура» и добавим значение «(Без иерархии)» в строки, а измерение «Клиент» добавим в колонки. Отчет изменит свой вид:
Поместим значение ресурса «ВыручкаОборот» в данные, измерение «Номенклатура» в строки, а измерение «Мастер» в колонки. Отчет примет вид:
Таким образом, используя построитель отчета, мы предоставили пользователю возможность самостоятельно формировать отчет по регистру «ОказанныеУслуги» в том виде, который ему нужен.
![]() |
214
Использование основных объектов конфигурации
Создание отчетов
Отчет Универсальный2
«ТабличноеПолеПоля» (соответственно «КоманднаяПанельПорядок» и «ТабличноеПолеПорядок»):
Н |
а примере создания второго универсального отчета мы рассмотрим способы непосредственного управления настройками построителя отчета и возможность формирования макетов на основе вариантов стандартного оформления.
Для более легкого понимания мы будем использовать практически тот же самый запрос по регистру накопления «Продажи». Таким образом, можно сказать, что в этом отчете мы просто покажем другой вариант управления настройками построителя отчета.
Создадим новый объект конфигурации Отчет с именем «Универсальный2».
На закладке «Данные» создадим реквизит отчета с именем «ПостроительОтчета» и типом ПостроительОтчета.На закладке «Формы» с помощью конструктора создадим основную форму отчета и приступим к ее редактированию.
Расположим в форме две надписи с именами «Поля» и «Порядок» и заголовками «Поля:» и «Порядок:» соответственно:
Теперь для табличного поля «ТабличноеПолеПоля»
источник данных
ОтчетОбъект.ПостроительОтчета.ВыбранныеПоля:
зададим как
![]() |
![]() |
Под каждым текстовым полем расположим командную панель и табличное поле с именами «КоманднаяПанельПоля» и
216
Использование основных объектов конфигурации
Создание отчетов
После этого для командной панели «КоманднаяПанельПоля» установим флаг «Автозаполнение» и в качестве источника действий укажем ТабличноеПолеПоля:
Затем аналогичные действия произведем для другой командной панели и табличного поля.
Табличному полю «ТабличноеПолеПорядок» укажем источник
данных ОтчетОбъект.ПостроительОтчета.Порядок, и у командной
панели «КоманднаяПанельПорядок» поднимем флаг
«Автозаполнение» и укажем в качестве источника действий ТабличноеПолеПорядок:
Путем этих несложных действий мы с вами связали элементы управления, расположенные в форме, со свойствами построителя отчета «ВыбранныеПоля» и «Порядок». Свойство «ВыбранныеПоля» позволяет управлять списком полей, которые войдут в результат запроса, а свойство «Порядок» позволяет настраивать порядок вывода строк результата запроса.
Кроме этого, для того, чтобы пользователь мог настраивать значения этих полей, мы расположили в форме две командные панели, связанные с этими табличными полями. Используя свойства командных панелей «Автозаполнение» и «ИсточникДействий» мы добились автоматического формирования команд в командных панелях, исходя из типа данных, содержащихся в каждом из табличных полей.
*" Узнай больше!
О связи элементов управления и данных, можно прочитать в разделе «Данные и элементы управления» на странице 502
218
Использование основных объектов конфигурации
Создание отчетов
Теперь в нижней части формы разместим еще одну надпись с именем «Оформление» и заголовком «Оформление:», а под ним поле выбора с именем «ПолеВыбораОформление»:
Теперь откроем модуль формы и добавим в него текст запроса для построителя отчета:
| РегистрНакопления.Продажи КАК Продажи
|
|{УПОРЯДОЧИТЬ ПО Номенклатура.*, Клиент.*, Мастер.*}
|
|ИТОГИ СУММА(Количество),
| Сумма(Выручка),
| Сумма(Стоимость)
| ПО ОБЩИЕ";
Как видите это совсем простой запрос по регистру накопления «Продажи», в котором расположены управляющие конструкции для построителя отчета.
Конструкция ВЫБРАТЬпозволяет предоставить пользователю возможность выбирать в качестве полей запроса как сами исходные поля запроса, так и все поля «через точку» от данных полей.
Конструкция УПОРЯДОЧИТЬ ПОпредоставляет пользователю возможность упорядочивать строки результата запроса.
Теперь, для того, чтобы привести состав полей в «исходное» состояние, добавим команду очистки выбранных полей построителя отчета, и затем в обработчик «КнопкаСформироватьНажатие» вставим команды выполнения построителя отчета:
ПроцедураКнопкаСформироватьНажатие(Элемент) КонецПроцедуры
ПостроительОтчета.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура КАК Номенклатура,
| Продажн.Клиент КАК Клиеит,
| Продажи.Мастер КАК Мастер,
| Продажи.Количество КАК Количества,
| Продажи.Выручка КАКВыручка,
| Продажи.Стоимость КАК Стоимость
| Номенклатура.*,
| Клиент.*,
| Мастер.*,
| Количество.*,
| Выручка.*,
| Стоимость.*}