Различия

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

Ссылка на это сравнение

ru:manual:sample_questions:macros_in_report [2012/12/20 17:36]
belkin [Примеры использования макросов в отчетах]
— (текущий)
Строка 1: Строка 1:
-====== Примеры использования макросов в отчетах ====== 
  
-При проектировании объектной модели в каждом классе определяются необходимые параметры, часть информации является хранимой, часть рассчитывается по имеющимся данным. Процесс наращивания числа параметров в классе может быть бесконечным. Часто для вывода в отчете требуется в таблице добавить колонку, которая рассчитывается перемножением одного из параметров на данные другой колонки таблицы, или посчитать и подставить в таблицу сумму данных в колонке. Иногда нужно добавить график по данным таблицы. 
- 
-Теперь эти задачи имеют решение. Можно написать макросы, которые будут выполняться перед или после выполнения отчета. Для этого требуется установить доверие на доступ к объектной модели VBA. 
- 
-В Microsoft Word 2007 это осуществляется следующей последовательностью действий: 
- 
-  *нажать кнопку {{ru/manual/sample_questions/macros_in_report/macros_in_report_1418.png?34x35&nolink}} Office в верхнем левом углу, нажать кнопку «Параметры Word»; 
-  *выбрать закладку «Центр управления безопасностью», нажать кнопку «Параметры центра управления безопасностью»; 
-  *выбрать закладку «Параметры макросов», в разделе «Параметры макросов для разработчика» установить опцию «Доверять доступ к объектной модели проектов VBA». 
- 
-В Microsoft Word 2010: 
- 
-  *выбрать пункт меню «Файл -> Параметры…»; 
-  *в окне «Параметры Word» выбрать закладку «Центр управления безопасностью», нажать кнопку «Параметры центра управления безопасностью»; 
-  *выбрать закладку «Параметры макросов», в разделе «Параметры макросов для разработчика» установить опцию «Доверять доступ к объектной модели проектов VBA». 
- 
-Макросы можно использовать как для оформления отчета, так и для получения данных непосредственно из базы (можно написать макрос, который строит отчет, аналогичный регламентирующему документу без единой привязки). 
- 
-Для того, чтобы просмотреть или создать макрос необходимо открыть шаблон отчета на редактирование с помощью гиперссылки //__Редактировать шаблон__// в справочнике отчеты объектов. В Microsoft Word 2007 в ленте «Разработчик» нажать кнопку «Visual Basic». Откроется окно Microsoft Visual Basic. В дереве «Project - Normal» щелчком открыть шаблон «ThisDocument» (Рис. 1). 
- 
-[{{ ru/manual/sample_questions/macros_in_report/macros_in_report_1420.png?nolink |Рисунок 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 - объект, от которого был вызван отчет; 
- 
-<СистемноеНазваниеПараметра> − это системное название параметра объекта, которое можно просмотреть в Объектной модели (см. [[ru/manual/report/object_model]]). 
- 
-В данном примере был получен список «Статистика времени» (оb.СтатистикаВремени) и вещественный параметр «Шаг группировки времени» (ob.ШагВремени) от элемента справочника «Статистики имитаций», от которого был вызван отчет. По полученному списку и параметру строится диаграмма. 
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki