За каждым документом в Business Studio может быть закреплен файл или указана ссылка на такой файл. При выводе отчетов в HTML (HTML-публикация или Business Studio Portal) в отчете по документу можно вывести на показ параметр "Файл". Пользователю в отчете будет представлена гиперссылка, при нажатии на которую будет открыт конкретный указанный файл или будет осуществлен переход по указанной ссылке.
С другой стороны, в HTML все упоминания документа в отчетах других объектов имеют ссылку на документ (при условии, что есть куда ссылаться). И уже после перехода по этой ссылке будет доступна ссылка для загрузки файла документа.
В отчетах любых объектов также можно выводить не документ, а ссылку на файл. При этом такая ссылка будет иметь текст, отличный от названия документа (см. Рисунок 6).
В отчете формата MS Word по единице деятельности в таблице со списком нормативно-справочных документов название документа сделать гиперссылкой:
Таблица должна состоять из 2х столбцов: № пп (нумератор) и Документ (название документа).
Решение описывается с момента, когда в шаблоне отчета создана необходимая привязка типа "Список", которую можно видеть таблицей.
Настройка сложной привязки "Нормативно-справочные документы" приведена в таблице ниже.
№ | Название привязки | Тип привязки | Путь к привязке |
---|---|---|---|
1. | Нормативно-справочные документы | Список | Процессы.Нормативно-справочные документы |
2. | Документ | Объект | БизнесМодель.СписокНСДПроцессов.Документ |
3. | Файл | Объект | БизнесМодель.СписокНСДПроцессов.Файл |
Данная привязка выводит таблицу с названиями нормативно-справочных документов единицы деятельности и ссылками на их файлы.
В качестве примера возьмем единицу деятельности А1, который имеет свойства, представленные на рисунке ниже.
После того, как отчет будет сформирован (Business Studio создаст все необходимые ссылки на файлы документа), будем запоминать ссылку на файл и применять эту ссылку для соответствующего названия документа. Столбец "Файл" после этого удалим.
Кодом VBA:
После окончания переноса всех гиперссылок удалить столбец "Файл" и привести таблицу к обычному виду.
Sub ПослеВыполненияОтчета(ob As Variant, app As Variant) 'ВВОДНАЯ ЧАСТЬ 'название закладки для привязки типа Список, формирующей нужную таблицу Dim BookmarkName As String BookmarkName = "Нормативно_справочные_до_3be042ab" Dim columnFile, columnDocName As Integer columnDocName = 2 'номер столбца, в котором названия документа columnFile = 3 'номер столбца, в котором названия файла документа 'служебные Dim linkFileText, nameDoc, hLinkAdress As String Dim TableDocs As Table 'ПРОЦЕДУРНАЯ ЧАСТЬ ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes 'Alt+F9 - видим не коды полей, а значения If BookmarkIs(BookmarkName) Then 'если есть необходимая закладка '1. Вставляем гиперссылки в названия документов 'получаем таблицу по названию привязки Set TableDocs = Application.ActiveDocument.Bookmarks(BookmarkName).Range.Tables(1) countRowsTableDocs = TableDocs.Rows.Count 'количество строк таблицы For i = 2 To countRowsTableDocs 'будем проходить по всем строкам таблицы, кроме первой On Error Resume Next 'игнор error 5991, если какие-то ячейки имеют вертикальное объединение nameDoc = "" linkFileText = "" hLinkAdress = "" 'Определяем текст в ячейке с файлом linkFileText = TableDocs.Cell(i, columnFile).Range.Text If Len(linkFileText) <> 2 Then 'если ячейка не пустая (только 2 служебных символа) TableDocs.Cell(i, columnFile).Range.Select 'работаем с ячейкой названия файла For Each hLink In Selection.Hyperlinks hLinkAdress = hLink.Address 'определяем адрес гиперссылки Next hLink If Len(hLinkAdress) <> 0 Then 'если гиперссылка есть 'работаем с ячейками Названий документа nameDoc = TableDocs.Cell(i, columnDocName).Range.Text nameDoc = Left$(nameDoc, (Len(nameDoc) - 2)) 'удаляем 2 последних символа - получаем чистый текст 'Вставляет гиперссылку в ячейку с названием документа 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 '2. Удаляем лишнее и наводим красоту в таблице 'Запоминаем ширину столбца с Нумератором (первый столбец) TableDocs.Columns(1).Select ColumnWidth = Selection.Columns.PreferredWidth 'Удаляем столбец с названием файла TableDocs.Columns(columnFile).Delete 'Расширяем таблицу на 100% страницы TableDocs.PreferredWidthType = wdPreferredWidthPercent TableDocs.PreferredWidth = 100 'Возвращаем ширину для столбца нумератора TableDocs.Columns(1).PreferredWidthType = wdPreferredWidthPercent TableDocs.Columns(1).PreferredWidth = ColumnWidth End If End Sub Function BookmarkIs(BookmarkName As String) As Boolean 'Проверка на корректность названия привязки Dim Bkm As Bookmark 'переменная типа Закладка BookmarkIs = False 'сначала считаем, что нужной закладки нет For Each Bkm In ActiveDocument.Bookmarks 'перебираем все закладки в документе If Bkm.Name = BookmarkName Then 'если нашли закладку с нашим именем BookmarkIs = True 'отмечаем, что закладка есть End If Next End Function
При этом решении следует помнить о том, что в зависимости от направления вывода отчета (документ Word/Excel или HTML-публикация/Business Studio Portal) и способа закрепления за документом файла, ссылки на файлы документов могут быть не всегда.
Способ закрепления файла | Документ есть в дереве HTML | Документа нет в дереве HTML |
---|---|---|
Документ имеет закрепленный файл непосредственно | Ссылка на указанный файл | Ссылки нет |
Документ имеет ссылку на файл вида http:// , ftp:// | Ссылка на указанный файл | Ссылка на указанный файл |
Документ имеет ссылку на локальный файл на компьютере пользователя Business Studio | Ссылка на документ в HTML | Ссылки нет |