Различия

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

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

ru:manual:sample_questions:macros_in_report [2013/08/23 10:35]
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