Это старая версия документа.


Тип связи субъекта с процессом и субъект в одном столбце

Текущая ситуация

Структурирование информации позволяет "разложить все по полочкам" в голове человека, быстрей и проще понять предоставляемую информацию. Такой же подход требуют себе задачи, решаемые через программные продукты, например, Business Studio. В то же время, при разработке отчетов это означает, что каждой выделенной структуре, например, в таблице, требуется отдельный столбец. В некоторых случаях это бывает неудобно по причине нехватки места на листе. И если совместить данные некоторых столбцов в одном определенным способом, то читабельность документа от этого не уменьшиться.

Постановка задачи

В отчете формата Word по процессу в таблице со столбцами процессов, субъектов процесса и типа связи субъекта с процессом сделать так, чтобы тип связи показывался не отдельным столбцом, а в столбце с субъектом. При этом:

  1. При выводе в HTML (HTML-публикация или Business Studio Portal) ссылка на субъект должна остаться ссылкой, а название вида связи должно быть черным цветом, как это было и в столбце с названием вида связи.
  2. При выводе в Word название типа связи должно быть цветом, отличным от названия субъекта для большей читабельности (например, серый цвет) и курсивом.

Название субъекта и название типа связи должно быть разделено символом "/".

Исходные данные

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

Рисунок 1. Вид необходимой привязки типа "Список" в шаблоне отчета
Рисунок 2. Вид выполненного отчета формата Word до решения задачи
Рисунок 3. Вид выполненного отчета в HTML-публикации до решения задачи

Концепция решения

После того, как отчет будет сформирован, будем запоминать текст в каждой ячейке столбца "Тип связи" и добавлять его к тексту соседней ячейки столбца "Субъект" в нужном оформлении. Столбец "Тип связи" после этого удаляется.

Шаги решения

Кодом VBA:

  • для каждой ячейки столбца "Тип субъекта" заполнить текст ячейки;
  • вставить в конец ячейки той же строки столбца "Субъект" и указать необходимые параметры шрифта, который будет вставлен позже, при форматировании необходимо учесть направление формирование отчета (Word, HTML);
  • в той же ячейке вставить разделительное выражение и запомненный ранее текст с типом связи.

После окончания переноса всех типов связей удалить столбец "Тип связи" и поправить таблицу к обычному виду.

Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)
 
акладки, НАЯ
 
щей нужную таблицу
Dim Bookmark As String
Bookmующей нужную таблицу
Dim Bookmark As String
Bookmark = "Подпроцессы_и_исполнител_83cdcd34"
 
 столбца с типом связи
Dim ColumnTypванием Субъекта
Dim ColumnSubject As Integer
ColumnSubject = 3
 
ъектом и типом связи
Dim Sepa типом связи
Dim ColumnTypeLink As Integer
ColumnTypeLink = 4
 
типа связи в Word
TypeLinkWordColorRGB = RGB(127, 127, 127)
 
Dжду Субъектом и типом связи
Dim Separator As String
Separator = " / "
 
Dim TypeLinkWordColorRGB As String
Dim TableTypeLink As  связи в Word
TypeLinkWordColorRGB = RGB(127, 127, 127)
 
Dim TypeLinkHTMLColorRGB n
HTMLCreate = Application.Acti связи в Word
TypeLinkHTMLColorRGB = RGB(0, 0, 0)
 
ОЦЕДУРНАЯ Чбные
Dim CellLinkText As String
Dim TableTypeLink As Table
 
те
 
    Set TableTypeLink = Application.ActiveDocument.Bo (отдельный файл или HTML)
Dim HTMLCreate As Boolean
HTMLCreate = Application.ActiveDocument.Variables("BSHtml").Value   On Error Resumse
 
xt 'игнор error 599АЯ ЧАСТЬ
 
If BookmarkIs(Bookmark) Then единение
 
        CellLinkText =ь в документе
 
    Set TableTypeLink = Application.ActiveDocument.Bookmarks(Bookmark).Range.Tables(1)
 
    countRow = TableTypeLink.Rows.Count i, ColumnSubject).Select 'рок таблицы
 
    For i = 2 To countRow
 
        On Error Resume Next енной ячейки
 
            If HTMLCreate Then 'если создается HTML
 
     вертикальное объединение
 
        CellLinkText = CellTextClean(TableTypeLink.Cell(i, ColumnTypeLink).Range.Text)
 
        If Len(CellLinkText) Then    Else
               зи указан
 
            TableTypeLink.Cell(i, ColumnSubject).Select ordColorRGB 'wdColorRed 'зажной ячейке
            Selection.EndKey ic = wdToggle 'курсив
 
            Enделенной ячейки
 
            If HTMLCreate Then Text  'дописываем видтся HTML
 
                Selection.Font.Color = TypeLinkHTMLColorRGB ту в таблице
 цвет
                Selection.Font.Underline = wdUnderlineNone ns(ColumnTypeLink).Select
    Columние гиперссылки
 
            Else
                м ширину столбца с Комментя файл Word
                Selection.Font.Color = TypeLinkWordColorRGB idth = Selection.Columns.Preferый цвет
                Selection.Font.Italic = wdToggle ypeLink.ив
 
            End If
 
            Selection.TypeText Text:=Separator & CellLinkText  PreferredWidthType = wвид связи
 
        End If
 
    Next i
 
    idth = 100
 
    If HTMLCreate Then 'если создаем красоту в таблице
 
    ого столбца
        TableTypeLink.Columnsлбца с Типом связи
    TableTypeLink.Columns(ColumnTypeLink).Select
    ColumnTypeLinkWidth = Selection.Columns.PreferredWidth
 
    ypeLink.Columns(ColumnTypeLink).PreferredWбца с Комментарием
    TableTypeLink.Columns(ColumnTypeLink + 1).Select
    ColumnCommentWidth = Selection.Columns.PreferredWidth
 
    
'Проверка на корректность названия привванием типа связи
    TableTypeLink.Columns(ColumnTypeLink).Delete
 
    ем, что нужной закладки нет
 
For Eacа 100% страницы
    TableTypeLink.PreferredWidthType = wdPreferredWidthPercent
    TableTypeLink.PreferredWidth = 100
 
    If HTMLCreate Then      BookmarkIs = Truтся HTML
 
        дка есть
 
    End If
 
Nextпервого столбца
        TableTypeLink.Columns(1).PreferredWidth = _
            TableTypeLink.Columns(1).PreferredWidth / 4
 
    Else
 
        текста ячейки от 2х последних служебца Комментария
        TableTypeLink.Columns(ColumnTypeLink).PreferredWidth = _
            ColumnTypeLinkWidth + ColumnCommentWidth + 5
    End If
 
End If
 
End Sub
 
 
Function BookmarkIs(BookmarkName As String) As Boolean
 
стый текст)
    CellTextClean = Left$(CellTeь названия привязки
 
Dim Bkm As Bookmark его не удаляем, а возвращапа Закладка
 
 
BookmarkIs = False lText
 
End If
 
End Function

Результат

 

Рисунок 4. Вид выполненного отчета формата Word после решения задачи кодом VBA
Рисунок 5. Вид выполненного отчета в HTML-публикации после решения задачи кодом VBA

 

« ПредыдущаяНа уровень вышеСледующая »
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki