Вставка столбца в таблицу

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

Для привязок, которые показаны в отчете как таблица (например, "Список", "Фильтр"), необходимо, чтобы количество столбцов было не меньше, чем количество выводимых параметров в рамках этих привязок.

В случае необходимости в таблицу такой привязки можно добавить столбцы в шаблоне. При этом при выполнении отчета столбцы таблицы будут заполняться слева направо. Незаполненными останутся столбцы лишь справа. В шаблоне отчета вставить столбец со своими значениями между столбцами со значениями бизнес-модели нельзя.

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

Раздел Термины в Объектах деятельности используется как "Глоссарий компании". В отчете формата Word по Терминам таблицей выводится список терминов (параметр "Название") и определений (параметр "Комментарий").  

Рисунок 1. Исходный вывод "Глоссарий компании". Сделано стандартными средствами Мастера отчетов

Необходимо представить эти данные в форме, как представлен глоссарий в стандартных регламентных документах Business Studio:

  1. Между термином и определением вставить длинное тире.
  2. Не должно быть видно заголовка таблицы и границ таблицы.
Рисунок 2. Пример оформления "Термины и сокращения" в регламенте процесса

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

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

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

Сначала напишем код VBA, который вставит столбец и заполнит тире. Чтобы было наглядней видно как работает макрос. Кроме того, это будет удобно в случае необходимости отладки кода. И после этого внесем изменения в вид таблицы в шаблоне отчета.

Шаги решения

Пишем код VBA

Определяем название привязки типа "Фильтр", которая представляет нужную таблицу (см. Руководство пользователяПример определения названия привязки типа "Список").

Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)

'Вводная часть

    'название закладки для привязи типа Список, формирующей нужную таблицу
    GlossaryBookmarkName = "Глоссарий_компании_e26caa29"
    columnInsertAfter = 1 'номер столбца, после которого необходимо вставить таблицу
    insertText = Chr(151) 'текст для вставки, длинное тире

        'Проверка на корректность названия привязки
        Dim GlossaryBkmOk As Boolean 'сначала считаем, что нужной закладки нет

        Dim Bkm As Bookmark 'переменная типа Закладка

        'если искомая закладка есть среди закладок в документе
        For Each Bkm In ActiveDocument.Bookmarks

            If Bkm.Name = GlossaryBookmarkName Then
                GlossaryBkmOk = True 'отмечаем, что закладка есть
                'будем работать с таблицей через закладку
                Set tableGlossary = Application.ActiveDocument.Bookmarks(GlossaryBookmarkName).Range.Tables(1)

            End If

        Next

'Процедурная часть

    If GlossaryBkmOk Then

        'переходим к первой ячейке столбца, справа от которого
        'необходимо будет вставить столбец
        tableGlossary.Cell(1, columnInsertAfter).Range.Select

        'Вставляем столбец справа
        Selection.InsertColumnsRight

        'проход по всем ячейкам вставленного столбца
        'кроме первой ячейки (заголовка)
        For i = 2 To tableGlossary.Rows.Count

            'вставляем нужный текст
            tableGlossary.Cell(i, columnInsertAfter + 1).Range.Text = insertText

        Next i

        'Автподбор таблицы по содержимому
        tableGlossary.AutoFitBehavior (wdAutoFitContent)

    End If

End Sub

После выполнения отчета и обработки его макросом отчет будет иметь вид:

Рисунок 3. Отчет после выполнения макроса, еще без форматирования таблицы

Изменение вида таблицы в шаблоне

В шаблоне отчета стандартными средствами для работы с таблицами:

  • снимаем заливку с заголовков таблицы;
  • убираем текст из заголовков;
  • делаем невидимыми границы таблицы.
Рисунок 4. Вид привязки в шаблоне отчета

Результат

Рисунок 5. Вид сформированного отчета
« ПредыдущаяНа уровень вышеСледующая »
Driven by DokuWiki