Это старая версия документа.
Business Studio предлагает создавать необходимые отчеты с использованием привязок. Это позволяет с минимумом знаний создавать необходимые правила для формирования отчетов. При этом, в Business Studio существуют механизмы, позволяющие создать отчет полностью программным путем, без создания привязок.
В отчете формата Word по процессу необходимо в разных строках кодом VBA добавить:
Существует пустой шаблон отчета по процессу. Отчет не содержит ни одной привязки, а содержит лишь 2 строки, введенные вручную:
В шаблоне в разных строках вводятся поясняющие названия и добавляются закладки (лента "Вставка" группа "Ссылки" кнопка "Закладка") с названиями:
Для данного примера (Процесса) параметры называются:
Далее средствами OLE будут получены остальные данные через создание необходимого фильтра. Отправным параметром для поиска будет служить guid процесса, от которого вызывается отчет. Полученные данные будут вставлены в документ средствами VBA.
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) Названия заклад ЧАСТЬ "НазваниеПроцесса" акладок bkmName = "НазваниеПроцесса" bkmContent = "СодержаниеДеятельности" Dim Name As String ТЬ '*** 'Обращение к парпроцесса "Название" Name = ob.НазваниеАЯ ЧАСТЬ GoTo :=wdGoToBookmark, Name:=bkmName етрам объекта ion.T me 'вставляем текстроцесса Name = ob.Название election.GoTo Wha данные Selection.GoTo What:=wdGoToBookmark, Name:=bkmName .TypeText Text:=ob.Сакладке Selection.TypeText Text:=Name '*** 'Им текст '*** 'Раятельности Selection.GoTo What:=wdGoToBookmark, Name:=bkmContent E("БизнесМодель.Процакладке Selection.TypeText Text:=ob.СодержаниеДеятельности Set ProcSFiltr м текст P Filtr.Условия.Параметры.GUID.еханизма OLE Set = ProcSFiltr.Выполнить Set ником Процессов Set ProcS = app.ПолучитьОбъектПоУмолчанию_OLE("БизнесМодель.Процессы") анию_OLE("БизнесМодель.СвязиСубъектов") 'Создаем фильтр, чтлучить наш процесс как объект Set ProcSFiltr = ProcS.СоздатьФильтр ProcSFiltr.Условия.Параметры.GUID.Значение = ob.GUID Set ResultProcSFiltr = ProcSFiltr.Выполнить Set ProcName = ResultProcSFiltr.ПолучитьЭлемент(0) ует наш процесс countLinks = ResultPSLinkFiltr.Количим связи Процессы-Процессы Set ProcSubjectLink = app.ПолучитьОбъектПоУмолчанию_OLE("БизнесМодель.СвязиСубъектов") Dim LinkName() As String ReDim LinkName(countLinks) оторые участвуют в нашем процессе Set PSLinkFiltr = ProcSubjectLink.СоздатьФильтр 'Связи субъекта с процессом: из "<Субъекедыдущего фильтра PSLinkFiltr.Условия.Параметры.ОбъектВ.Значение = ProcName Set ResultPSLinkFiltr = PSLinkFiltr.Выполнить LinkText = ResultPSLinkFiltr.ПолучитьЭлемент(iрисутствует наш процесс countLinks = ResultPSLinkFiltr.КоличествоЭлементов 'Второе вхождение символа азвания субъектов Dim Subjects() As String ReDim Subjects(countLinks) Subjects(i) = Mid(Link названия связей Dim LinkName() As String ReDim LinkName(countLinks) первых двух символов " мента списка данные номер предпоследнего символаипах связей 'Ищем второе вхождение символа справа ставлен строкой вида: CharPos) 'Название типа связи между вхождениями<Процесс>" с типом "<Тип связи>" smbl = """" In) л " For i = 0 To countLinks - 1 ние Selection.TypeParagraph 'с новой строки Selectioиями первых двух символов " LinkText = ResultPSLinkFiltr.ПолучитьЭлемент(i) ext:=CStr(countLinks) Selecдение символа FirstIn = InStr(LinkText, smbl) ection.TypeParagraph ние символа SecondIn = InStr(FirstIn + 1, LinkText, smbl) кированный список Selection.Rangeежду вхождениями Subjects(i) = Mid(LinkText, FirstIn + 1, (SecondIn - FirstIn - 1)) st:=False, _ ApplyTo:=wdListApplyToWholeList, _ Defauи справа первых двух символов " LastNeedCharPos = Len(LinkText) - 1 ts(i) + " (" + _ днего символа If i <>е символа справа SecondIn = InStrRev(LinkText, smbl, LastNeedCharPos) ection.Range.ListFormat.RemoveNumbers Nежду вхождениями