Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 и 8.0 . Выпуск 67


Информационный Канал Subscribe.Ru

Волшебство программирования на 1С:Предприятие 7.7 и 8.0
Выпуск 67 / 22.08.2004

Здравствуйте, уважаемые подписчики. В этом выпуске приводится первая статья Печенкина Романа о построителе отчета в 1С:Предприятии 8.0. Эту статью со скриншотами можно найти здесь www.mista.ru/v8/repbuilder.htm. Свои замечания по статье можно присылать мне по e-mail или публиковать на форуме www.forum.mista.ru


Построитель отчета

Автор: Печенкин Роман

1. Что такое построитель отчета?

Построитель отчета —это объект, позволяющий на основе заданного текста запроса и настроек получить результат и вывести его в табличный документ или диаграмму.

Настройки построителя отчета включают:

  • группировки (пример: “Номенклатура”, “Контрагент”…),
  • показатели (пример: “Количество”, “Сумма”…),
  • дополнительные поля (пример: “Номенклатура.Услуга”, “Контрагент.Код”…),
  • фильтр (пример: по конкретной номенклатуре, по группе контрагентов…) и
  • сортировка (пример: “Номенклатура.Код”, “Контрагент.Наименование”…)

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

Перед выводом макет построителя отчета можно оформить с помощью макета оформления.

Вывод результата выполнения запроса построителя отчета осуществляется одной командой.

2. Где можно использовать построитель отчета?

С помощью построителя отчета можно проектировать основную массу отчетов (пример: “Остатки товаров”, “Продажи за период”…). При этом время на их разработку и программный код существенно сократятся, а качество оформления и функциональность —повысятся.

Кроме того, построитель отчета можно использовать в тех случаях, когда не нужен вывод результата, но требуется настройка пользователем элементов запроса, к примеру, группировок или фильтра (пример: выгрузка номенклатуры в xml-файл или обработка проведения документов по заданному фильтру).

Поскольку построитель отчета недоступен на сервере 1С:Предприятия и не используется в модуле внешнего соединения, то в этих случаях необходимо использовать построитель запроса, который аналогичен построителю отчета, но не имеет визуальных свойств и методов (“Макет”, “ВыводитьЗаголовокОтчета”, “Вывести()”, “ОформитьМакет()”…).

3. Немного о понятиях

По сравнению с версией 7.7 в версии 8.0 произошла небольшая смена понятий, поэтому стоит немного остановиться на этом.

Понятие
Описание
Измерения строки Список группировок, по которым будет осуществляться вывод по строкам (пример: “Номенклатура”, “Контрагент”…)
Измерения колонки Список группировок, по которым будет осуществляться вывод по колонкам (пример: “Склад”, “Месяц”…).
Отбор Набор различных фильтров (пример: по группе контрагентов, по заданной организации…).
Порядок Набор полей сортировки (пример: “Номенклатура.Код”, “ДокументПродажи.Ответственный”…).
Поле Одно из полей выборки запроса (пример: “Номенклатура”, “Контрагент.Код”, “Количество”, “Сумма”…).
Выбранные поля Список выбранных полей, включает в себя показатели (пример: “Количество”, “Сумма”…) и дополнительные поля (реквизиты группировок) (пример: “Номенклатура.Группа”, “Контрагент.Код”…).
Доступные поля Список полей, доступных для добавления в группировки, фильтр, сортировку и выбранные поля. Заполняется, как правило, списком полей выборки запроса, но может быть программно отредактирован (можно добавлять, изменять и удалять доступные поля).

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

Главное отличие заключается в том, что доступное поле не имеет свойства “ПутьКДанным” (пример: “Номенклатура.Код”, “Количество”), так как это просто своеобразное описание поля, по которому будет произведена попытка найти соответствие среди полей выборки запроса в момент добавления его в список группировок, фильтра, сортировки или выбранных полей.

При этом нет возможности программно добавить одно из доступных полей в какой-либо из вышеперечисленных списков, так как, с одной стороны, у доступного поля нет методов а-ля “ДобавитьВОтбор()” или “ДобавитьВВыбранныеПоля()”, а, с другой стороны, при добавлении нового элемента в любой из вышеперечисленных списков требуется указать свойство “ПутьКДанным”, которое не всегда совпадает с именем поля (пример: поля “Номенклатура.Родитель” и “Номенклатура.Родитель.Родитель” имеют одинаковое имя “Родитель”).

4. Типовой вариант использования построителя отчета

В общем случае последовательность действий при работе с построителем отчета следующая:

  1. Создать новый объект “ПостроительОтчета”;
  2. Присвоить свойству “Текст” текст запроса;
  3. Если в тексте запроса не были заданы настройки построителя отчета, то выполнить метод “ЗаполнитьНастройки()”;
  4. Предоставить пользователю возможность изменения настроек построителя отчета;
  5. При необходимости можно отказаться от автогенерации макета построителем отчета и присвоить свойству “Макет” фиксированный макет;
  6. При необходимости можно присвоить свойству “МакетОформления” один из стандартных или свой макет, при этом, если автогенерируемый макет построителя отчета был заменен на фиксированный, то выполнить метод “ОформитьМакет()”;
  7. Вызвать метод “Выполнить()”;
  8. Вызвать метод “Вывести()”.

Пример:

Построитель = Новый "ПостроительОтчета";
Построитель.Текст = 
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДенежныеСредстваКомпанииОстатки.СтруктурнаяЕдиница,
| СУММА(ДенежныеСредстваКомпанииОстатки.СуммаОстаток) КАК Сумма
|
|ИЗ
| РегистрНакопления.ДенежныеСредстваКомпании.Остатки(, {СтруктурнаяЕдиница.*})
|
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваКомпанииОстатки.СтруктурнаяЕдиница
|
|ИТОГИ СУММА(Сумма) ПО
| ОБЩИЕ,
| СтруктурнаяЕдиница";
Построитель.ЗаполнитьНастройки();
//Здесь можно дать пользователю возможность
//изменить настройки построителя отчета
Построитель.Макет = ПолучитьМакет("СвойМакет");
Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Классика);
Построитель.ОформитьМакет();
Построитель.Выполнить();
Построитель.Вывести();

5. Описание некоторых свойств построителя отчета

Свойство
Описание
Текст Содержит текст запроса построителя отчета. Если текст запроса построителя отчета не содержит элементов настройки “{…}”, то можно с помощью метода “ЗаполнитьНастройки()” автоматически заполнить настройки на основе текста запроса.
ТекстЗаголовка Текст, который будет выводиться в заголовке отчета (пример: “Остатки товаров на 01.01.2004”, “Продажи за январь 2004 года”…).
ВыводитьЗаголовокОтчета
ВыводитьШапкуТаблицы
ВыводитьОбщиеИтоги
ВыводитьПодвалТаблицы
ВыводитьПодвалОтчета
Эти свойства определяют, будут ли выводиться, соответственно, заголовок отчета, шапка таблицы, общие итоги, подвал таблицы и подвал отчета.
ВыводитьДетальныеЗаписи Свойство отвечает за принудительный вывод или запрет вывода детальных записей.
АвтоДетальныеЗаписи Если свойство “АвтоДетальныеЗаписи” установить в Истина, то каждая детальная запись будет выводиться только в том случае, если она отличается от групповой.
ДоступныеПоля Содержит список полей, доступных для добавления в группировки, фильтр, выбранные поля и сортировку.
ИзмеренияСтроки
ИзмеренияКолонки
Содержат список группировок, соответственно, по строкам и по колонкам.
Отбор Содержит список фильтров, заданных построителю отчета.
ВыбранныеПоля содержит список выбранных показателей и реквизитов группировок.
Порядок содержит список полей сортировки.
Параметры Содержит список параметров построителя (объявленных в тексте запроса построителя с помощью символа “&”).
Результат Содержит результат выполнения запроса построителя отчета (объект типа РезультатЗапроса).

6. Обработка Расшифровки с помощью построителя отчета

Свойство “ЗаполнениеРасшифровки” содержит один из трех вариантов заполнения расшифровки при выводе:

1-ый вариант: не заполнять (не использовать расшифровку).

2-ой вариант: значения группировок (при расшифровке ячейки будет открываться значение группировки, выведенное в ней).

3-ий вариант: расшифровка (расшифровка будет заполняться структурой, содержащей значения всех группировок). В этом случае требуется обрабатывать событие табличного документа “Обработка расшифровки”, где нужно анализировать переданную структуру и выполнять те или иные действия.

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

Если используется третий вариант заполнения расшифровки, то можно использовать метод “НастроитьРасшифровку()”, предназначенный для того, чтобы выполнить и вывести отчет с учетом расшифровки, выполненной пользователем.

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

Пример:

Процедура РезультатТаблицаОбработкаРасшифровки 
(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Построитель.НастроитьРасшифровку(Построитель, Расшифровка);
Построитель.Выполнить();
Построитель.Вывести();
КонецПроцедуры


См. также:
1С:Предприятие 7.7: учебник, курс лекций, статьи, ссылки
Книга "Разработка в системе 1С:Предприятие 8.0" - http://www.v8.1c.ru/book/v8develop.htm

Официальный сайт рассылки - www.mista.ru
Волшебный форум -
www.forum.mista.ru,
Форум по 1С - http://www.forum.mista.ru/index.php?forum=1c
Архив выпусков этой рассылки - http://www.mista.ru/subscribe

С уважением,
Станислав Митичкин (aka Волшебник)
stasmit@mail.ru



http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное