![]() |
Теоретична частинаDate: 2014-03-11; view: 678. Лабораторна робота №11 Універсальний звіт На прикладі створення універсального звіту ми познайомимося з об’єктом вбудованої мови ПобудовникЗвіту (ПостроительОтчета) і дізнаємося, як працювати зі зведеною таблицею. ПобудовникЗвіту є об’єктом вбудованої мови, що дозволяє виконувати різні настройки запиту в ході роботи програми. Такі настройки можуть виконуватися як засобами вбудованої мови (в результаті роботи деякого алгоритму роботи програми), так і інтерактивно, безпосередньо користувачем. Вихідними даними для побудовника звіту є текст запиту. На його основі побудовник звіту визначає, які параметри будуть доступними для настроювання і яким чином можливе настроювання складу і порядку підсумкових даних. Потім відбувається програмне чи інтерактивне формування цих настройок і виведення результатів в табличний документ, діаграму, зведену таблицю і зведену діаграму. Формувати параметри настроювання на основі тексту запиту побудовник звіту може двома способами: автоматично і на основі вказівок, розміщених у тексті запиту. Автоматично параметри настроювання формуються викликом методу ЗаполнитьНастройки( ) таким чином: § полями, доступними для вибору в якості полів відбору, порядку чи виведення в звіт (властивість ДоступныеПоля) стають всі поля зі списку вибірки і всі їх підлеглі поля; § в список полів, вибраних для виводи в звіт (властивість ВыбранныеПоля), додаються всі поля зі списку вибірки; § полями, доступними для вибору в якості вимірів, стають всі поля з речення ИТОГИ ПО і всі їх пдлеглі поля § в список вимірів по рядках (властивість ИзмеренияСтроки) додаються всі поля з речення ИТОГИ ПО § в доступні відбори (властивість Отбор) додаються параметри віртуальних таблиць.
Іншим способом формування параметрів настройок побудовника звіту є виділення їх в тексті запиту. Для цього використовуються фігурні дужки {}. Фігурними дужками можуть бути виділені параметри побудовника звіту, а також деякі синтаксичні конструкції: § ВЫБРАТЬ… - описує поля, які користувач зможе вибрати для виведення § ГДЕ… - описує поля, на які користувач може накласти обмеження § УПОРЯДОЧИТЬ ПО… - описує поля для позначення порядку § ИТОГИ ПО… - описує поля, по яких обчислюватимуться підсумкові значення
Після того, як значення параметрів вказані, виведення результатів запиту можливе як примусово (використовуючи методи Выполнить() і Вывести() ), або автоматично, якщо результати виводяться в зведену таблицю.
Створення універсального звіту Спершу створимо звіт, в якому результати звіту будуть виводитися у зведену таблицю. Створимо в конфігураторі новий об’єкт конфігурації Звіт Універсальний. Цей звіт буде мати реквізит ПобудовникЗвіту з типом ПостроительОтчета. Рисунок 1
В модулі звіту створимо текст запиту для побудовника звіту. Для цього вставимо в модуль такі рядки: ПобудовникЗвіту.Текст= ; Встановимо курсор перед символом ; (крапка з комою) і викличемо конструктор запитів (Текст| Конструктор запиту…) В якості таблиці виберемо віртуальну таблицю регістру накопичення «Продажі.Обороти». З цієї таблиці виберемо всі поля. Рисунок 2
На закладці «Підсумки» вкажемо одержання загальних підсумків і виберемо всі ресурси регістру Рисунок 3
Натиснемо ОК. В модулі звіту з’явиться текст сформованого запиту.
ПобудовникЗвіту.Текст="ВЫБРАТЬ | ПродажіОбороты.Матеріал, | ПродажіОбороты.Клієнт, | ПродажіОбороты.КількістьОборот КАК КількістьОборот, | ПродажіОбороты.ВиручкаОборот КАК ВиручкаОборот, | ПродажіОбороты.ВартістьОборот КАК ВартістьОборот, | ПродажіОбороты.НацінкаОборот КАК НацінкаОборот |ИЗ | РегистрНакопления.Продажі.Обороты КАК ПродажіОбороты |ИТОГИ | СУММА(КількістьОборот), | СУММА(ВиручкаОборот), | СУММА(ВартістьОборот), | СУММА(НацінкаОборот) |ПО | ОБЩИЕ"
Додамо в текст запиту вказівки для побудовника звітів (зміни виділені жирним шрифтом)
ПобудовникЗвіту.Текст="ВЫБРАТЬ | ПродажіОбороты.Матеріал, | ПродажіОбороты.Клієнт, | ПродажіОбороты.КількістьОборот КАК КількістьОборот, | ПродажіОбороты.ВиручкаОборот КАК ВиручкаОборот, | ПродажіОбороты.ВартістьОборот КАК ВартістьОборот, | ПродажіОбороты.НацінкаОборот КАК НацінкаОборот |ИЗ | РегистрНакопления.Продажі.Обороты КАК ПродажіОбороты | {ИТОГИ ПО Матеріал,Клієнт} |ИТОГИ | СУММА(КількістьОборот), | СУММА(ВиручкаОборот), | СУММА(ВартістьОборот), | СУММА(НацінкаОборот) |ПО | ОБЩИЕ"
Тепер створимо форму звіту і розмістимо на ній поле табличного документу (Форма|Вставити елемент управління…|Поле табличного документу) з іменем «ПолеТабличногоДокументу». Рисунок 4 Розтягнемо поле табличного документу по розміру форми так, як показано на рисунку 5. Рисунок 5 Потім встановимо курсор у верхню ліву клітинку поля табличного документу і виконаємо команду Таблиця|Вбудовані таблиці| Вставити зведену таблицю
Рисунок 6 Після цього створимо обробник події форми звіту При відкритті і додамо в нього такий текст Процедура ПриОткрытии() // Вставити вміст обробника. ЗведенаТаблиця=ЭлементыФормы.ПолеТабличногоДокументу. ВстроенныеТаблицы.СводнаяТаблица1; ЗведенаТаблиця.ИсточникДанных=ПобудовникЗвіту;
КонецПроцедуры
Цим текстом ми встановлюємо зведеній таблиці в якості джерела даних побудовник звіту. Запустимо 1С в режимі налагодження і відкриємо звіт Універсальний. На екрані з’явиться форма звіту і вікно вибору полів зведеної таблиці. Рисунок 7 Помістимо значення ресурсу ВиручкаОборот в дані, вимір Матеріал в рядки, а вимір Клієнт в колонки. (поміщувати тут )
Звіт прийме вигляд як на рисунку 8. Рисунок 8
Тепер у вікні вибору полів зведеної таблиці розкриємо групу Матеріал і додамо значення «Без ієрархії» в рядки. Звіт змінить свій вигляд Рисунок 9 Рисунок 10
Таким чином, використовуючи побудовник звіту, ми надали користувачу змогу самостійно формувати звіт по регістру Продажі в тому вигляді, в якому він потрібний.
Звіт Універсальний2 На прикладі створення другого універсального звіту ми розглянемо способи безпосереднього управління настройками побудовника звіту і можливість формування макетів на основі варіантів стандартного оформлення. При створенні цього звіту ми будемо використовувати практично той же запит по регістру накопичення Продажі. Створми новий об’єкт конфігурації Звіт з іменем Універсальний2. На закладці Дані створимо реквізит звіту з іменем ПобудовникЗвіту і типом ПостроительОтчета.
Рисунок 11
На закладці Форми за допомогою конструктора створимо основну форму звіту і приступимо до її редагування. Розмістимо в формі два написи з іменами Поля і Порядок і заголовками Поля і Порядок відповідно. Під кожним текстовим полем розмістимо командну панель і табличне поле з іменами: КоманднаПанельПоля, ТабличнеПолеПоля, КоманднаПанельПорядок, ТабличнеПолеПорядок (рисунок 12) Рисунок 12
Тепер для табличного поля ТабличнеПолеПоля задамо джерело даних як ОтчетОбъект.ПобудовникЗвіту.ВыбранныеПоля
Рисунок 13
Після цього для командної панелі КоманднаПанельПоля встановимо прапорець Автозаповнення і в якості джерела дій вкажемо ТабличнеПолеПоля. Розтягнемо Елемент управління так, щоб його вміст відображався повністю. Рисунок 14
Аналогічні дії виконаємо для другого табличного поля і командної панелі. Табличному полю ТабличнеПолеПорядок вкажемо джерело даних ОтчетОбъект.ПобудовникЗвіту.Порядок, у командної панелі КоманднаПанельПорядок встановимо прапорець Автозаповнення і вкажемо в якості джерела дій ТабличнеПолеПорядок. Змінимо розміри елементів управління. Результат показано на рисунку 15.
Рисунок 15
Виконавши ці дії, ми зв’язали елементи управління, розміщені в формі, із властивостями побудовника звіту ВыбранныеПоля і Порядок. Властивість ВыбранныеПоля дозволяє управляти списком полів, які ввійдуть в результат запиту, а властивість Порядок дозволяє настроювати порядок виведення рядків результату запиту. Крім того, щоб користувач міг настроювати значення цих полів, ми розмістили в формі дві командні панелі, зв’язані з цими табличними полями. Використовуючи властивості командних панелей «Автозаповнення» і «ДжерелоДій», ми добилися автоматичного формування команд в командних панелях, виходячи з типу даних, що міститься в кожному з табличних полів. Тепер в нижній частині форми розмістимо ще один напис з іменем Оформлення і заголовком Оформлення, а під ним поле вибору з іменем ПолеВиборуОформлення. Рисунок 16 Тепер відкриємо модуль форми і додамо в нього текст запиту для побудовника звіту.
Процедура КнопкаСформироватьНажатие(Кнопка) // Вставити вміст обробника. КонецПроцедуры
ПобудовникЗвіту.Текст="ВЫБРАТЬ | Продажі.Матеріал КАК Матеріал, | Продажі.Клієнт КАК Клієнт, | Продажі.Кількість КАК Кількість, | Продажі.Виручка КАК Виручка, | Продажі.Вартість КАК Вартість, | Продажі.Націнка КАК Націнка |{ВЫБРАТЬ | Матеріал.*, | Клієнт.*, | | Кількість.*, | Виручка.*, | Вартість.*, | Націнка.*} |ИЗ | РегистрНакопления.Продажі КАК Продажі | |{УПОРЯДОЧИТЬ ПО Матеріал.*,Клієнт.*} |ИТОГИ | СУММА(Кількість), | СУММА(Виручка), | СУММА(Вартість), | СУММА(Націнка) |ПО | ОБЩИЕ";
(Зверніть увагу на речення в фігурних дужках). Вставлений фрагмент - це простий запит по регістру накопичення Продажі, в якому розміщені управляючі конструкції для побудовника звіту. Конструкція ВЫБРАТЬ дозволяє надати користувачу можливість вибрати в якості полів запиту як самі вихідні поля запиту, так і всі поля, підлеглі («через крапку») від даних полів. Конструкція УПОРЯДОЧИТЬ ПО надає користувачу можливість впорядковувати рядки результатів запиту. Тепер для того, щоб привести склад полів у «вихідний» стан, додамо команду очистки вибраних полів побудовника звіту. З цією метою в обробник КнопкаСформироватьНажатие вставимо команди виконання побудовника звіту: Процедура КнопкаСформироватьНажатие(Кнопка) // Вставити вміст обробника. ПобудовникЗвіту.МакетОформления= ПолучитьМакетОформления(ПолеВиборуОформлення); ПобудовникЗвіту.Выполнить(); ПобудовникЗвіту.Вывести(); КонецПроцедуры ПобудовникЗвіту.Текст="ВЫБРАТЬ | Продажі.Матеріал КАК Матеріал, | Продажі.Клієнт КАК Клієнт, | Продажі.Кількість КАК Кількість, | Продажі.Виручка КАК Виручка, | Продажі.Вартість КАК Вартість, | Продажі.Націнка КАК Націнка |{ВЫБРАТЬ | Матеріал.*, | Клієнт.*, | Кількість.*, | Виручка.*, | Вартість.*, | Націнка.*} |ИЗ | РегистрНакопления.Продажі КАК Продажі | |{УПОРЯДОЧИТЬ ПО Матеріал.*,Клієнт.*} |ИТОГИ | СУММА(Кількість), | СУММА(Виручка), | СУММА(Вартість), | СУММА(Націнка) |ПО | ОБЩИЕ";
ПобудовникЗвіту.ВыбранныеПоля.Очистить();
Якщо побудовнику звіту не вказати об’єкт, в який необхідно виводити результат, то результат буде виводитися в новий табличний документ. Побудовник звіту має можливість оформити макет результату, використовуючи варіанти стандартного оформлення макетів. Для цього ми на початку процедури одержуємо стандартний макет оформлення, використовуючи значення, яке буде вибране користувачем в полі вибору, а потім на основі цього макету оформлюємо макет, створений користувачем. Побудовник звіту дає можливість повністю формувати макет майбутнього звіту як задаючи його цілком (властивість Макет), так і шляхом опису окремих областей макету. Тепер для завершення універсального звіту слід заповнити список вибору поля вибору ПолеВиборуОформлення і встановити початкове значення поля. Процедура КнопкаСформироватьНажатие(Кнопка) // Вставити вміст обробника. ПобудовникЗвіту.МакетОформления= ПолучитьМакетОформления(ПолеВиборуОформлення); ПобудовникЗвіту.Выполнить(); ПобудовникЗвіту.Вывести(); КонецПроцедуры
ПобудовникЗвіту.Текст="ВЫБРАТЬ | Продажі.Матеріал КАК Матеріал, | Продажі.Клієнт КАК Клієнт, | Продажі.Кількість КАК Кількість, | Продажі.Виручка КАК Виручка, | Продажі.Вартість КАК Вартість, | Продажі.Націнка КАК Націнка |{ВЫБРАТЬ | Матеріал.*, | Клієнт.*, | | Кількість.*, | Виручка.*, | Вартість.*, | Націнка.*} |ИЗ | РегистрНакопления.Продажі КАК Продажі | |{УПОРЯДОЧИТЬ ПО Матеріал.*,Клієнт.*} |ИТОГИ | СУММА(Кількість), | СУММА(Виручка), | СУММА(Вартість), | СУММА(Націнка) |ПО | ОБЩИЕ";
ПобудовникЗвіту.ВыбранныеПоля.Очистить(); СписокВибору=ЭлементыФормы.ПолеВиборуОформлення.СписокВыбора; СписокВибору.Добавить(СтандартноеОформление.Апельсин,"Апельсин"); СписокВибору.Добавить(СтандартноеОформление.Асфальт,"Асфальт"); СписокВибору.Добавить(СтандартноеОформление.Бирюза,"Бірюза"); СписокВибору.Добавить(СтандартноеОформление.Весна,"Весна"); ПолеВиборуОформлення=СтандартноеОформление.БезОформления;
Запустимо 1С в режимі налагодження і відкриємо звіт Універсальний2. Виберемо поля Клієнт, Матеріал, Виручка, задамо порядоксортування Клієнт – за зростанням, Матеріал – за спаданням, вберемо варіант оформлення (на рисунку 17 – Бірюза)
Рисунок 17 Сформувавши звіт, одержимо результат: Рисунок 18 Змінимо умови формування звіту, як показано на рисунку 19. Рисунок 19 Одержаний результат Рисунок 20 Використання побудовнику звіту в конструкторі вихідної форми Розглянемо деякі з створених нами щойно звітів, але побудованих з використанням побудовника звіту в конструкторі вихідної форми.
Звіт Універсальний3 Подивимося, як виглядатиме звіт Універсальний2, якщо при його створенні в конструкторі вихідної форми вказати використання побудовника звіту. Створимо новий об’єкт конфігурації Звіт з іменем Універсальний3. Із закладки «Макети» запустимо конструктор вихідної форми Рисунок 21 Виберемо всі поля з віртуальної таблиці регістру накопичення Продажі.Обороты Рисунок 22
На закладці «Підсумки» відмітимо одержання загальних підсумків. Перейдемо на закладку Звіт. Рисунок 23 Використовуючи побудовник звіту, можна вивести результати запиту в табличний документ, зведену таблицю, діаграму чи зведену діаграму. Для кожного вибраного представлення даних можна настроїти параметри оформлення і деякі способи формування представлення. Наприклад, можна змінити розміщення підсумків «у шапці» на більш традиційне «в підвалі», вибрати варіант стандартного оформлення (на рисунку 23 – «Асфальт»). Перейдемо на закладку «Вихідна форма» і відкриємо закладку Форма настройки побудовника звіту Рисунок 24
Справа в тому, що крім самої форми звіту, на якій буде розміщене представлення даних, конструктор формує також форму настройки звіту, яка дозволяє користувачу інтерактивно настроювати параметри звіту. В конструкторі ми можемо вибрати, які з параметрів настройки будуть доступні користувачу і, крім того, визначити, на якій з форм буде розміщене настроювання відбору: або в формі настройок звіту, або просто на формі звіту. Не вносячи ніяких змін, клацнемо по кнопці ОК. Конструктор сформує форму звіту і форму настройок звіту. Запустимо 1С в режимі налагодження, відкриємо звіт Універсальний3, клацнемо по кнопці Настройка… і встановимо параметри вибраних полів і порядку такими ж, як в останньому прикладі із звітом Універсальний. Вибрані поля – Клієнт, Матеріал, ВиручкаОборот. Рисунок 25 Порядок – Клієнт за зростанням Рисунок 26 Розглянемо одержаний звіт. Рисунок 27
Як бачимо, ми одержали звіт легшим способом, крім того, додалася деяка функціональність: можливість встановлення відбору і зміни складу вибраних полів та порядку виведення результатів.
Звіт РейтингКлієнтів2 Створимо звіт, аналогічний до звіту РейтингКлієнтів з виведенням результатів у зведену діаграму. Створимо новий об’єкт конфігурації Звіт з іменем РейтингКлієнтів2. З розділу Макети запустимо конструктор вихідної форми, виберемо віртуальну таблицю ПродажіОбороты, поля Клієнт, НацінкаОборот. Рисунок 28 На закладці Підсумки Вкажемо групувальне поле Клієнт, підсумкове поле НацінкаОборот.
Рисунок 29
На закладці Звіт відмітимо, що результат має бути виведений у зведену діаграму. Натиснемо ОК. Запустимо 1С в режимі налагоджування і відкриємо звіт РейтингКлієнтів2. На закладці Настройка вкажемо, що порядок виведення повинен бути за спаданням значення поля НацінкаОборот. Рисунок 30 Клацнемо по кнопці ОК. Після цього подвійним клацанням миші по полю зведеної діаграми відкриємо вікно вибору параметрів діаграми, в точки діаграми помістимо поле Клієнт, в дані діаграми – поле НацінкаОборот. Рисунок 31
Після цього сформуємо діаграму: Рисунок 32
|