Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
ru:manual:sample_questions:macros_in_report [2012/07/04 16:43] admin |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Примеры использования макросов в отчетах ====== | ||
- | При проектировании объектной модели в каждом классе определяются необходимые параметры, часть информации является хранимой, часть рассчитывается по имеющимся данным. Процесс наращивания числа параметров в классе может быть бесконечным. Часто для вывода в отчете требуется в таблице добавить колонку, которая рассчитывается перемножением одного из параметров на данные другой колонки таблицы, или посчитать и подставить в таблицу сумму данных в колонке. Иногда нужно добавить график по данным таблицы. | ||
- | |||
- | Теперь эти задачи имеют решение. Можно написать макросы, которые будут выполняться перед или после выполнения отчета. Для этого требуется установить доверие на доступ к объектной модели VBA. | ||
- | |||
- | В Microsoft Word 2003 это осуществляется следующей последовательностью действий: | ||
- | |||
- | *выбрать пункт меню «Сервис --> Параметры…»; | ||
- | *в окне «Параметры» выбрать закладку «Безопасность», нажать кнопку «Защита от макросов»; | ||
- | *в окне «Безопасность» выбрать закладку «Надежные источники»; установить опцию «Доверять доступ Visual Basic Project». | ||
- | |||
- | В Microsoft Word 2007: | ||
- | |||
- | *нажать кнопку {{Business%20Studio%20-%20%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F.files:image1419.jpg?34x35}} Office в верхнем левом углу, нажать кнопку «Параметры Word»; | ||
- | *выбрать закладку «Центр управления безопасностью», нажать кнопку «Параметры центра управления безопасностью»; | ||
- | *выбрать закладку «Параметры макросов», в разделе «Параметры макросов для разработчика» установить опцию «Доверять доступ к объектной модели проектов VBA». | ||
- | |||
- | В Microsoft Word 2010: | ||
- | |||
- | *выбрать пункт меню «Файл --> Параметры…»; | ||
- | *в окне «Параметры Word» выбрать закладку «Центр управления безопасностью», нажать кнопку «Параметры центра управления безопасностью»; | ||
- | *выбрать закладку «Параметры макросов», в разделе «Параметры макросов для разработчика» установить опцию «Доверять доступ к объектной модели проектов VBA». | ||
- | |||
- | Макросы можно использовать как для оформления отчета, так и для получения данных непосредственно из базы (можно написать макрос, который строит отчет, аналогичный регламентирующему документу без единой привязки). | ||
- | |||
- | Для того, чтобы просмотреть или создать макрос необходимо открыть шаблон отчета на редактирование с помощью гиперссылки //__Редактировать шаблон__// в справочнике отчеты объектов. В Microsoft Word 2003 выбрать пункт меню «Сервис --> Макросы --> Редактор Visual Basic». В Microsoft Word 2007 в ленте «Разработчик» нажать кнопку «Visual Basic». Откроется окно Microsoft Visual Basic. В дереве «Project - Normal» щелчком открыть шаблон «ThisDocument» (Рис. 17.3.1). | ||
- | |||
- | {{Business%20Studio%20-%20%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F.files:image1421.jpg?634x255}}Рис. 17.3.1 | ||
- | |||
- | Названия макросов должны быть следующими: | ||
- | |||
- | *«ПередВыполнениемОтчета» − макрос будет запускаться перед вставкой данных в отчет; | ||
- | *«ПослеВыполненияОтчета» − макрос будет запускаться после вставки данных в отчет. | ||
- | |||
- | Переменные, которые передаются в макрос: | ||
- | |||
- | *«ob» − объект, от которого был вызван отчет; | ||
- | *«app» − приложение, от которого был вызван отчет, то есть Business Studio. | ||
- | |||
- | В отчетах шаблонной базы данных, поставляемой с программой, используется макрос «ПослеВыполненияОтчета». | ||
- | |||
- | **Внимание:** Просмотреть объектную модель Word для разработки макросов в редакторе Visual Basic можно по клавише F2. | ||
- | |||
- | ===== Пример обращения к значению переменной и данным таблицы в отчете ===== | ||
- | |||
- | В шаблоне отчета «Дневная загрузка ресурса (субъекты)» демонстрационной базы данных можно посмотреть пример использования макроса для расчета суммы и вывода ее в таблицу. Отчет находится в справочнике «Отчеты объектов», в папке «Шаблоны отчетов/ФСА». | ||
- | |||
- | Текст макроса, выполняемого после выполнения самого отчета, представлен ниже: | ||
- | |||
- | Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) | ||
- | |||
- | a = CDbl(Application.ActiveDocument.Variables("СтавкаВЧас").Value) | ||
- | |||
- | Set T = Application.ActiveDocument.Bookmarks("ДействияСтоимостьРесурсаИРоли").Range.Tables(1) | ||
- | |||
- | kol = T.Rows.Count | ||
- | |||
- | For i = 2 To kol - 1 | ||
- | |||
- | Stroka = T.Cell(i, 8).Range.Text | ||
- | |||
- | l = Len(Stroka) | ||
- | |||
- | If l > 1 Then | ||
- | |||
- | d = CDbl(Left(Stroka, l - 1)) 'убрать последний символ ячейки | ||
- | |||
- | T.Cell(i, 9).Range.Text = CStr(d * a) | ||
- | |||
- | End If | ||
- | |||
- | Next i | ||
- | |||
- | T.Cell(kol, 9).AutoSum | ||
- | |||
- | End Sub | ||
- | |||
- | Можно получить значение переменной шаблона, обозначаемой DOCVARIABLE, по имени: | ||
- | |||
- | Application.ActiveDocument.Variables("<СистемноеНазваниеПривязки>").Value, | ||
- | |||
- | где <СистемноеНазваниеПривязки> − это название привязки, которое отображается в дереве привязок на конечной странице мастера (см. [[ru/manual/report/master_report#конечная_страница_мастера_отчетов|Kонечная страница мастера отчетов]]). Таким образом получены данные привязки с типом «Объект». В макросе примера так получено значение привязки «СтавкаВЧас» для дальнейшего использования. | ||
- | |||
- | Можно получить значение закладки шаблона, по имени: | ||
- | |||
- | Application.ActiveDocument.Bookmarks("<СистемноеНазваниеПривязки>").Range.Tables(1), | ||
- | |||
- | где <СистемноеНазваниеПривязки> − это название привязки, которое отображается в дереве привязок на конечной странице мастера (см. [[ru/manual/report/master_report#конечная_страница_мастера_отчетов|Kонечная страница мастера отчетов]]). Таким образом можно получить данные привязки с типом «Список», «Фильтр», «Дерево». В макросе примера получена таблица «ДействияСтоимостьРесурсаИРоли», и далее ведется работа с данными таблицы. | ||
- | |||
- | ===== Пример вывода графика по данным таблицы в отчете ===== | ||
- | |||
- | В шаблоне отчета «Значение показателя за период» демонстрационной базы данных можно посмотреть пример использования макроса для вывода графика по данным таблицы. Отчет находится в справочнике «Отчеты объектов», в папке «Шаблоны отчетов/ССП». | ||
- | |||
- | Текст макроса, выполняемого после выполнения самого отчета, представлен ниже: | ||
- | |||
- | Sub ПослеВыполненияОтчета (ob As Variant, app As Variant) | ||
- | |||
- | Application.ActiveDocument.Bookmarks("Значения_Показателя").Range.Tables(1).Select | ||
- | |||
- | WordBasic.InsertChart | ||
- | |||
- | End Sub | ||
- | |||
- | Здесь выделяются данные таблицы по имени закладки шаблона: | ||
- | |||
- | Application.ActiveDocument.Bookmarks("<СистемноеНазваниеПривязки>").Range.Tables(1).Select, | ||
- | |||
- | где <СистемноеНазваниеПривязки> − это название привязки, которое отображается в дереве привязок на конечной странице мастера (см. [[ru/manual/report/master_report#конечная_страница_мастера_отчетов|Kонечная страница мастера отчетов]]). | ||
- | |||
- | Затем строится диаграмма по данным выделенной таблицы: | ||
- | |||
- | WordBasic.InsertChart | ||
- | |||
- | ===== Пример обращения к данным из базы в отчете ===== | ||
- | |||
- | В шаблоне отчета «Отчет по результатам имитации» можно посмотреть пример использования макроса для вывода данных из базы. Отчет находится в справочнике «Отчеты объектов», в папке «Шаблоны отчетов/ФСА». | ||
- | |||
- | Часть текста макроса, выполняемого после выполнения самого отчета, представлена ниже: | ||
- | |||
- | Sub ПослеВыполненияОтчета (ob As Variant, app As Variant) | ||
- | |||
- | Set StatTime = ob.СтатистикаВремени | ||
- | |||
- | ПостроитьДиаграмму StatTime, "Время", "Распределение времени выполнения процесса", 0, CDbl(ob.ШагВремени) | ||
- | |||
- | End Sub | ||
- | |||
- | Здесь идет обращение к параметрам объекта, от которого был вызван отчет: | ||
- | |||
- | ob.<СистемноеНазваниеПараметра>, | ||
- | |||
- | где ob -- объект, от которого был вызван отчет; | ||
- | |||
- | <СистемноеНазваниеПараметра> − это системное название параметра объекта, которое можно просмотреть в Объектной модели (см. [[http://wiki.businessstudio.ru/doku.php/ru/manual/report/object_model]]). | ||
- | |||
- | В данном примере был получен список «Статистика времени» (оb.СтатистикаВремени) и вещественный параметр «Шаг группировки времени» (ob.ШагВремени) от элемента справочника «Статистики имитаций», от которого был вызван отчет. По полученному списку и параметру строится диаграмма. |