1С-Предприятие 8.0. Практическое пособие разработчика

       

На примере создания второго универсального


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

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

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

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

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



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



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



[217]

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





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

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



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



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



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

О связи элементов управления и данных, можно прочитать в разделе "Данные и элементы управления" на странице 502. [219]

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



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

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

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

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

"ВЫБРАТЬ

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

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

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

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

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

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

|

|{ВЫБРАТЬ

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

|      Клиент.*,

|      Мастер.*,

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

|      Выручка.*,

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

|ИЗ [220]

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

|

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

|

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

|      ПО ОБЩИЕ";

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

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



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

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

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

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

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

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

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

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

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

"ВЫБРАТЬ

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

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

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

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

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

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

|

|{ВЫБРАТЬ

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

|      Клиент.*,

|      Мастер.*,

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

|      Выручка.*, [221]

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

|ИЗ

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

|

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

|

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

|      ПО ОБЩИЕ";

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

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



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

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

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

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

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

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

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

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

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

"ВЫБРАТЬ

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

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

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

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

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

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

|

|{ВЫБРАТЬ

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

|      Клиент.*,

|      Мастер.*,

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

|      Выручка.*,

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

|ИЗ

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

|

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

|

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

|      ПО ОБЩИЕ";

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

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

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

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

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

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



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

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

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

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

·"Мастер" по возрастанию,
·"Номенклатура.ВидНоменклатуры" по убыванию,
·"Номенклатура" по возрастанию.[223]
Выберем оформление "Апельсин" и нажмем "Сформировать" Результат будет выглядеть следующим образом:



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



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


Содержание раздела