На примере создания второго универсального
На примере создания второго универсального отчета мы рассмотрим способы непосредственного управления настройками построителя отчета и возможность формирования макетов на основе вариантов стандартного оформления.
Для более легкого понимания мы будем использовать практически тот же самый запрос по регистру накопления "Продажи". Таким образом, можно сказать, что в этом отчете мы просто покажем другой вариант управления настройками построителя отчета.
Создадим новый объект конфигурации Отчет с именем "Универсальный2".
На закладке "Данные" создадим реквизит отчета с именем "ПостроительОтчета" и типом ПостроительОтчета. На закладке "Формы" с помощью конструктора создадим основную форму отчета и приступим к ее редактированию.
Расположим в форме две надписи с именами "Поля" и "Порядок" и заголовками "Поля:" и "Порядок:" соответственно:
Под каждым текстовым полем расположим командную панель и табличное поле с именами "КоманднаяПанельПоля" и [216] "ТабличноеПолеПоля" (соответственно "КоманднаяПанельПорядок" и "ТабличноеПолеПорядок"):
Теперь для табличного поля "ТабличноеПолеПоля" зададим источник данных как ОтчетОбъект.ПостроительОтчета.ВыбранныеПоля:
[217]
После этого для командной панели "КоманднаяПанельПоля" установим флаг "Автозаполнение" и в качестве источника действий укажем ТабличноеПолеПоля:
Затем аналогичные действия произведем для другой командной панели и табличного поля.[218]
Табличному полю "ТабличноеПолеПорядок" укажем источник данных ОтчетОбъект.ПостроительОтчета.Порядок, и у командной панели "КоманднаяПанельПорядок" поднимем флаг "Автозаполнение" и укажем в качестве источника действий ТабличноеПолеПорядок:
Путем этих несложных действий мы с вами связали элементы управления, расположенные в форме, со свойствами построителя отчета "ВыбранныеПоля" и "Порядок". Свойство "ВыбранныеПоля" позволяет управлять списком полей, которые войдут в результат запроса, а свойство "Порядок" позволяет настраивать порядок вывода строк результата запроса.
Кроме этого, для того, чтобы пользователь мог настраивать значения этих полей, мы расположили в форме две командные панели, связанные с этими табличными полями. Используя свойства командных панелей "Автозаполнение" и "ИсточникДействий" мы добились автоматического формирования команд в командных панелях, исходя из типа данных, содержащихся в каждом из табличных полей.
О связи элементов управления и данных, можно прочитать в разделе "Данные и элементы управления" на странице 502. [219]
Теперь откроем модуль формы и добавим в него текст запроса для построителя отчета:
КонецПроцедуры
ПостроительОтчета.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура КАК Номенклатура,
| Продажи.Клиент КАК Клиент,
| Продажи.Мастер КАК Мастер,
| Продажи.Количество КАК Количество,
| Продажи.Выручка КАК Выручка,
| Продажи.Стоимость КАК Стоимость
|
|{ВЫБРАТЬ
| Номенклатура.*,
| Клиент.*,
| Мастер.*,
| Количество.*,
| Выручка.*,
| Стоимость.*}
|ИЗ [220]
| РегистрНакопления.Продажи КАК Продажи
|
|{УПОРЯДОЧИТЬ ПО Номенклатура.*, Клиент.*, Мастер.*}
|
|ИТОГИ СУММА(Количество), Сумма(Выручка), Сумма(Стоимость)
| ПО ОБЩИЕ";
Конструкция ВЫБРАТЬ позволяет предоставить пользователю возможность выбирать в качестве полей запроса как сами исходные поля запроса, так и все поля "через точку" от данных полей.
Конструкция УПОРЯДОЧИТЬ ПО предоставляет пользователю возможность упорядочивать строки результата запроса.
Теперь, для того, чтобы привести состав полей в "исходное" состояние, добавим команду очистки выбранных полей построителя отчета, и затем в обработчик "КнопкаСформироватьНажатие" вставим команды выполнения построителя отчета:
ПостроительОтчета.МакетОформления = ПолучитьМакетОформления(ПолеВыбораОформление);
ПостроительОтчета.ОформитьМакет();
ПостроительОтчета.Выполнить();
ПостроительОтчета.Вывести();
КонецПроцедуры
ПостроительОтчета.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура КАК Номенклатура,
| Продажи.Клиент КАК Клиент,
| Продажи.Мастер КАК Мастер,
| Продажи.Количество КАК Количество,
| Продажи.Выручка КАК Выручка,
| Продажи.Стоимость КАК Стоимость
|
|{ВЫБРАТЬ
| Номенклатура.*,
| Клиент.*,
| Мастер.*,
| Количество.*,
| Выручка.*, [221]
| Стоимость.*}
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|
|{УПОРЯДОЧИТЬ ПО Номенклатура.*, Клиент.*, Мастер.*}
|
|ИТОГИ СУММА(Количество), Сумма(Выручка), Сумма(Стоимость)
| ПО ОБЩИЕ";
ПостроительОтчета.ВыбранныеПоля.Очистить();
Здесь следует сказать о том, что построитель отчета предоставляет возможность полностью формировать макет будущего отчета, как задавая его целиком (свойство "Макет"), так и путем описания отдельных областей макета (свойства "МакетДетальныхЗаписей", "МакетЗаголовка" и т.д.).
Теперь, для завершения нашего универсального отчета следует заполнить список выбора поля выбора "ПолеВыбораОформление" и установить начальное значение поля:
ПостроительОтчета.МакетОформления = ПолучитьМакетОформления(ПолеВыбораОформление);
ПостроительОтчета.ОформитьМакет();
ПостроительОтчета.Выполнить();
ПостроительОтчета.Вывести();
КонецПроцедуры
ПостроительОтчета.Текст =
"ВЫБРАТЬ
| Продажи.Номенклатура КАК Номенклатура,
| Продажи.Клиент КАК Клиент, [222]
| Продажи.Мастер КАК Мастер,
| Продажи.Количество КАК Количество,
| Продажи.Выручка КАК Выручка,
| Продажи.Стоимость КАК Стоимость
|
|{ВЫБРАТЬ
| Номенклатура.*,
| Клиент.*,
| Мастер.*,
| Количество.*,
| Выручка.*,
| Стоимость.*}
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|
|{УПОРЯДОЧИТЬ ПО Номенклатура.*, Клиент.*, Мастер.*}
|
|ИТОГИ СУММА(Количество), Сумма(Выручка), Сумма(Стоимость)
| ПО ОБЩИЕ";
ПостроительОтчета.ВыбранныеПоля.Очистить();
СписокВыбора = ЭлементыФормы.ПолеВыбораОформление.СписокВыбора;
СписокВыбора.Добавить(СтандартноеОформление.БезОформления, "БезОформления");
СписокВыбора.Добавить(СтандартноеОформление.Апельсин, "Апельсин");
СписокВыбора.Добавить(СтандартноеОформление.Асфальт, "Асфальт");
СписокВыбора.Добавить(СтандартноеОформление.Бирюза, "Бирюза");
СписокВыбора.Добавить(СтандартноеОформление.Текстиль, "Текстиль");
ПолеВыбораОформление = СтандартноеОформление.БезОформления;
Выберем поля: "Мастер", "Номенклатура.ВидНоменклатуры", "Номенклатура" и "Выручка". Зададим следующий порядок сортировки:
· | "Мастер" по возрастанию, |
· | "Номенклатура.ВидНоменклатуры" по убыванию, |
· | "Номенклатура" по возрастанию.[223] |
Теперь изменим условия формирования отчета. Выберем поля "Клиент", "Номенклатура" и "Выручка", порядок сортировки будет по возрастанию значения поля "Клиент", а вариант оформления – "Асфальт":
Таким образом, на примере этого отчета вы познакомились с возможностью задания условий для построителя отчета и одним из способов формирования макета отчета на основе интерактивного выбора пользователя.[224]