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