Файлы с расширением .dot и .xlt являются шаблонами документов в Microsoft Office Word и Microsoft Office Excel соответственно.
Открытие шаблона:
контекстное меню файла шаблона → Открыть
Сохранение шаблона в Microsoft Office Word:
п.м. Файл → Сохранить как… → указать тип сохраняемого файла "Шаблон документа (*.dot)" → указать папку для сохранения
Сохранение шаблона в Microsoft Office Excel:
п.м. Файл → Сохранить как… → указать тип сохраняемого файла "Шаблон (*.xlt)" → указать папку для сохранения
Шаблоны, используемые в АБС "Finist-Retail" должны находиться в папке, указанной в системном параметре "USERDOTFILESPATH" (категория "Папки"). Рекомендуется установить следующее значение параметра "C:\FinistRetail\tpl\XXX" (где, FinistRetail - папка старта программы, tpl - подпапка для хранения файлов tpl, и XXX - подпапка для хранения шаблонов dot. Наименование папки ХХХ рекомендуется указать уникальное для банка, например в виде аббревиатуры наименования банка).
Шаблоны в MS Word могут содержать любой текст, таблицы и другие элементы форматирования MS Word.
Для того чтобы добавить значения реквизитов объекта на шаблон следует вставить в шаблон поля MS Word (текстовое поле на панели "Формы"):
- кнопка, с помощью которой добавляют поле.
Затем для каждого поля вызвать посредством контекстного меню "Свойства - Текст справки"
На вкладке "Клавиша F1" и в "Текст справки" указать:
- Имя реквизита с указанием объекта и параметров реквизита, если необходимо
или
- Имя системного параметра или параметра шаблона.
Если в качестве параметра поля используется системный параметр, то в тексте справки следует ввести его наименование (например, "ФИОКонтролераВДоговоре" - без кавычек).
В случае, когда в качестве параметра поля используется реквизит объекта Договор, то в тексте справки может быть введено например, "Договор.Отделение.Код".
Перед окончательным сохранением следует выключить режим затемнения.
- кнопка, с помощью которой поля затемняются, что облегчает нахождение полей вставленных в файл.
Если в DOT-шаблоне имеется процедура VBA с именем, определенным системным параметром "POSTRUNTPLMACRO" (По умолчанию ="PostRunTpl"Text), то после инициализации полей значениями реквизитов и параметров будет автоматически вызвана эта процедура, которой можно произвести различные преобразования документа.
Например, для вывода суммы прописью в поле:
Sub PostRunTpl()
' Активизируем документ и сделаем его видимым
Application.Visible = True
Application.Activate
' Используем для получения суммы прописью ActiveX WfinTools.dll
On Error Resume Next
Set tools = GetObject(, "wfintools.comtools")
If Err.Number <> 0 Then
Set tools = CreateObject("wfintools.comtools")
End If
On Error GoTo 0
' Занесем в поле с закладкой "prop" сумму прописью поля
' с закладкой "summa" для валюты с кодом из поля с закладкой "curr"
ActiveDocument.FormFields("prop").Result = _
tools.propis(ActiveDocument.FormFields("summa").Result, _
ActiveDocument.FormFields("curr"))
End Sub
Шаблоны в MS Excel также могут содержать текст, таблицы и другие элементы. Для преобразования документа используется редактор Visual Basic, к которому можно перейти:
п.м. Сервис → Макрос → Редактор Visual BasicДля записи данных в ячейку также используются процедуры VBA В процедуре VBA доступны объекты Shell и NamedObjects, позволяющие обращаться к функциям ядра системы и передавать в шаблон параметры и бизнес-объекты точно так же как в VB-скриптах, используемых внутри системы.
ПРИМЕР ЗАПИСИ ФАМИЛИИ КЛИЕНТА В ЯЧЕЙКУ
Sub Standart()
' В эту функцию код не добавляем, используем Work
For Each obj In Worksheets("Лист1").OLEObjects
If obj.Name = "Unit1" Then
Set Unit = obj.Object
Set obShell = Unit.Shell
Set obNamedObjects = Unit.NamedObjects
Set Unit = Nothing
Call Work (obShell, obNamedObjects)
Exit Sub
End If
Next
' Внимание: компонент Comtpl.WordConnected не зарегестрирован
' попытка продолжить работу
Work Nothing, Nothing
End Sub
Sub Work(ByVal obShell As Object, ByVal obNamedObjects As Object)
On Error GoTo ex_it
If obShell Is Nothing Or obNamedObjects Is Nothing Then
MsgBox "Отсутствует компонент Comtpl.WordConnected, обратитесь к администратору"
Exit Sub
End If
Dim j, j1
Set client = obNamedObjects.ActiveObject("Клиент")
Range("F3").Select
ActiveCell.FormulaR1C1 = client.GetProperty("Фамилия", Nothing).GetStr()
Application.Visible = True
ex_it:
Set obShell = Nothing
Set obNamedObjects = Nothing
End Sub