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


Ссылка на файл документа в названии документа

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

За каждым документом в Business Studio может быть закреплен файл или указана ссылка на такой файл. При выводе отчетов в HTML (HTML-публикация или Business Studio Portal) в отчете по документу можно вывести на показ параметр "Файл". Пользователю в отчете будет представлена гиперссылка, при нажатии на которую будет открыт конкретный указанный файл или будет осуществлен переход по указанной ссылке.

Рисунок 1. Ссылка на файл документа из отчета по документу

С другой стороны, в HTML все упоминания документа в отчетах других объектов имеют ссылку на документ (при условии, что есть куда ссылаться). И уже после перехода по этой ссылке будет доступна ссылка для загрузки файла документа.

Рисунок 2. Ссылка на документ из отчета по процессу

В отчетах любых объектов так же можно выводить не документ, а ссылку на файл. При этом такая ссылка будет иметь текст, отличный от названия документа (см. Рисунок 6).

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

В отчете формата Word по процессу в таблице со списком нормативно-справочных документов название документа сделать гиперссылкой:

  1. При выводе в HTML – ссылка на загрузку файла или ссылка для перехода на документ по указанной ссылке.
  2. При выводе в Word – ссылка для перехода на документ по указанной ссылке.

Таблица должна состоять из 2х столбцов: № пп (нумератор) и Документ (название документа).

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

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

Рисунок 3. Вид привязки в дереве привязок
Рисунок 4. Вид необходимой привязки типа Список в шаблоне отчета

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

Название привязки Тип привязки Путь к привязке
1. Нормативно-справочные документы Список Процессы.Нормативно-справочные документы
2. Документ Объект БизнесМодель.СписокНСДПроцессов.Документ
3. Файл Объект БизнесМодель.СписокНСДПроцессов.Файл
Таблица 1. Настройка привязки "Нормативно-справочные документы"

Данная привязка выводит таблицу с названиямим нормативно-справочных документов процесса и ссылками на их файлы.

В качестве примера возьмем процесс А1, которые имеет свойства, представленные на рисунке ниже.

Рисунок 5. Вид закладки "Нормативно-справочные документы" в окне свойств процесса
Рисунок 6. Вид данных, сформированных по необходимой привязке, в выполненном отчете в HTML-публикации до решения задачи

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

После того, как отчет будет сформирован (Business Studio создаст все необходимые ссылки на файлы документа), будем запоминать ссылку на файл и применять эту ссылку для соответствующего названия документа. Столбец "Файл" после этого удалим.

Шаги решения

Кодом VBA:

  • для каждой ячейки столбца "Файл" заполнить адрес гиперссылки;
  • для ячейки той же строки столбца "Документ" запомнить название документа;
  • для ячейки той же строки столбца "Документ" вставить гиперссылку с названием документа и ссылкой на файл.

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

Sub ПослеВыполненияОтчета(ob As Variant, app As Variant)
 
ание закладки д ЧАСТЬ
 
па Список, формирующей нужную таблицу
Dim BookmarkName As String
Bookmaсок, формирующей нужную таблицу
Dim BookmarkName As String
BookmarkName = "Нормативно_справочные_до_3be042ab"
 
Dim columnFile, columnDocName As Integer
columnDocName = 2 ужебные
Dim linkFileText, nameDoc, hLinkAdres названия документа
columnFile = 3 ТЬ
 
ActiveWindow.View.ShowFieldCodes = Not ActiveWiвания файла документа
 
 коды полейбные
Dim linkFileText, nameDoc, hLinkAdress As String
Dim TableDocs As Table
 
  '1. Вставляем гипАЯ ЧАСТЬ
 
ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes ocs = Application.ActiveDocument.Bookmarksй, а значения
 
If BookmarkIs(BookmarkName) Then bleDocs.Rows.Count 'количество симая закладка
 
    ountRowsTableDocs 'будем проходить по всем строк названия документов
 
    sume Next 'игнор error 5991, если какиеазванию привязки
    Set TableDocs = Application.ActiveDocument.Bookmarks(BookmarkName).Range.Tables(1)
 
    countRowsTableDocs = TableDocs.Rows.Count с файлом
        linkFileTрок таблицы
 
    For i = 2 To countRowsTableDocs Len(linkFileText) <> 2 Then 'если ячейка не пустая (тоам таблицы кроме первой
 
        On Error Resume Next Select 'работаем с ячейкой названия файла
 
            For Each hLink I вертикальное объединение
 
        nameDoc = ""
        linkFileText = ""
        hLinkAdress = ""
 
        ess) <> 0 Then 'если гиперссылка естячейка с файлом
        linkFileText = TableDocs.Cell(i, columnFile).Range.Text
 
        If Len(linkFileText) <> 2 Then             nameDoc = Left$(nameDoc, (Len(nameDoc) -о 2 служебных символа)
 
            TableDocs.Cell(i, columnFile).Range.Select у в ячейку с названием документа
   названия файла
 
            For Each hLink In Selection.Hyperlinks
                hLinkAdress = hLink.Address     Anchor:=Selection.Range, _с гиперссылки
            Next hLink
 
            If Len(hLinkAdress) <> 0 Then            ScreenTip:="ылка есть
 
                кне)", _
                    TextToDisplазваний документа
                nameDoc = TableDocs.Cell(i, columnDocName).Range.Text
                nameDoc = Left$(nameDoc, (Len(nameDoc) - 2)) аем ширину столбца с Нумератором (первый столбец)
    получаем чистый текст
 
                lumns.PreferredWidth
 
    'Удаляем столбец с названиемку с названием документа
                TableDocs.Cell(i, columnDocName).Range.Select
 
                ActiveDocument.Hyperlinks.Add _
                    Anchor:=Selection.Range, _
                    Address:=hLinkAdress, _
                    SubAddress:="", _
                    ScreenTip:="Перейти к файлу документа (в новом окне)", _
                    TextToDisplay:=nameDoc, _
                    Target:="_blank"
 
            End If
 
        End If
 
    Next i
 
    rkIs = False 'сначала считаем, что нужной заклам красоту в таблице
 
    ookmarks 'перебираем все закладки в документе
 
    If Bkm.ератором (первый столбец)
    TableDocs.Columns(1).Select
    ColumnWidth = Selection.Columns.PreferredWidth
 
    d If
 
Next
 
End Function

Результат

Рисунок 7. Вид данных, сформированных по необходимой привязке, в выполненном отчете в HTML-публикации после решения задачи

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

Способ закрепления файла Документ есть в дереве HTML Документа нет в дереве HTML
Документ имеет закрепленный файл непосредственно Ссылка на указанный файл Ссылки нет
Документ имеет ссылку на файл вида http:// , ftp:// Ссылка на указанный файл Ссылка на указанный файл
Документ имеет ссылку на локальный файл на компьютере пользователя Business Studio Ссылка на документ в HTML Ссылки нет
Таблица 2. Возможные свойства гиперссылок в зависимости от направления вывода отчета и способа закрепления за документом файла
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki