Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания 1С8.0_Продол_3.doc
Скачиваний:
9
Добавлен:
01.03.2016
Размер:
1.46 Mб
Скачать

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

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

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

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

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

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

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

Теперь для табличного поля «ТабличноеПолеПоля» зададим источник данных как ОтчетОбъект.ПостроительОтчета.ВыбранныеПоля:

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

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

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

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

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

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

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

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

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

"ВЫБРАТЬ

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

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

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

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

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

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

|{ВЫБРАТЬ

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

| Клиент.*,

| Мастер.*,

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

| Выручка.*,

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

|ИЗ

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

|

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

|

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

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

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

| ПО ОБЩИЕ";

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

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

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

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

ПроцедураКнопкаСформироватьНажатие(Элемент) ПостроительОтчета.МакетОформления =

ПолучитьМакетОформления(ПолеВыбораОформление);

ПостронтельОтчета.Выполнить(); ПостроительОтчета.Вывести();

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

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

"ВЫБРАТЬ

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

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

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

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

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

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

|{ВЫБРАТЬ

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

| Клиент.*,

| Мастер.*,

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

| Выручка.*,

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

1ИЗ

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

I

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

I

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

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

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

I ПО ОБЩИЕ";

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

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

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

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

ПроцедураКношсаСформироватьНажатие(Элемент) ПостроительОтчета.МакетОформления =

ПолучитьМакетОформления(ПолеВыбораОформление);

Построительотчета.ОформитьМакет();

ПостроительОтчета.Вышшшть(); ПостроительОтчета.Вывести(); КонецПроцедуры

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

"ВЫБРАТЬ

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

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

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

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

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

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

!{ВЫБРАТЬ

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

| Клиент.*,

| Мастер.*,

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

I Выручка.*,

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

| ИЗ

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

I

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

I

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

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

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

I ПООБЩИЕ";

ПостроительОтчета.ВыбранныеПоля.Очистить();

СписокВыбора = ЭлементыФормы.ПолеВыбораОформление.СписокВыбора;

СписокВыбора.Добавить(СтандартноеОформление.БезОформления,

"БезОформления");

СписокВыбора.Добавить(СтандартноеОформление.Апельсин, "Апельсин"); СпнсокВыбора.Добавить(СтандартноеОформление.Асфальт, "Асфальт"); СписокВыбора.Добавить(СтандартноеОформление.Бирюза, "Бирюза"); СписокВыбора.Добавить(СтандаргноеОформление.Текстиль, "Текстиль");

ПолеВыбораОформление = СтаидартноеОформление.БезОформлевия;

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

Выберем поля: «Мастер», «Номенклатура.ВидНоменклатуры», «Номенклатура» и «Выручка». Зададим следующий порядок сортировки:

  • «Мастер» по возрастанию,

  • «Номенклатура.ВидНоменклатуры» по убыванию,

  • «Номенклатура» по возрастанию.

Выберем оформление «Апельсин» и нажмем «Сформировать». Результат будет выглядеть следующим образом:

Теперь изменим условия формирования отчета. Выберем поля «Клиент», «Номенклатура» и «Выручка», порядок сортировки будет по возрастанию значения поля «Клиент», а вариант оформления -«Асфальт»:

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