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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Invalid Link
Рисунок 5. Вид закладки "Нормативно-справочные документы" в окне свойств процесса
Invalid Link
Рисунок 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

Результат

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

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

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