2.7.2.4 Использование скриптов в командах над файлами |
Sub
TestRunMacro(TCSActiveModule, TCSExecutionParams)
' do something
End sub
· TCSActiveModule - ссылка на активный модуль
·
TCSExecutionParams - ссылка на интерфейс IExecutionParams:
IExecutionParams = interface(IModule)
['{35290570-1196-4981-BB36-1055B58741C6}']
property ReturnCode: Integer read|write;
property ReturnMessage: String read|write;
property DocExecutionParams:
IDocExecutionParams read;
end;
· Успешным кодом возвратом является 0. При этом если ReturnMessage содержит не пустую строку, то выводится информационное сообщение с данным текстом;
· Если код возврата <>0, выводится сообщение об ошибке. Если ReturnMessage содержит не пустую строку, то выводится данное сообщение.
IDocExecutionParams
= interface(IModule)
['{A95D7620-9CBB-48F8-B872-2FDF487AD873}']
property ActiveFileNamePath: String read;
property FileList: ICSDNStrings read;
property DocVerID: Integer read;
property DocTypeNote: String read;
property CurrentEvent:
EnumDocExecutionEvent read;
property CmdID: integer read;
property CmdClass: integer read;
end;
EnumDocExecutionEvent отображает текущее событие, при котором выполняется макрос
type
EnumDocExecutionEvent = TOleEnum;
const
dceBeforeUnload = $00000001
dceAfterUnload = $00000002
dceBeforeLoad = $00000003
dceAfterLoad = $00000004
Стадия выполнения макроса
· dceBeforeUnload - Макрос выполняется перед выгрузкой файлового состава.
· dceAfterUnload - Макрос выполняется после выгрузки файлового состава.
· dceBeforeLoad - Макрос выполняется перед обновлением файлового состава.
· dceAfterLoad - Макрос выполняется после обновления файлового состава.
Sub
TestMacro(TCSActiveModule, TCSExecutionParams)
Set Event =
TCSExecutionParams.DocExecutionParams.EnumDocExecutionEvent
Select case Event
case dceBeforeUnload
' Код который необходимо выполнить до выгрузки файлового состава
case dceAfterLoad
' Код который необходимо выполнить перед обновлением файлового
' состава
case Else ' Другие события не обрабатываем, поэтому ReturnCode = 0
TCSExecutionParams.ReturnCode = 0
End Select
...
End Sub
Выполнение макроса при выгрузке файлового состава
(
CurrentEvent = dceBeforeUnload
ReturnCode = -1
ReturnMessage = ""
ActiveFileNamePath = <полный путь к файлу над которым выполняется команда>
DocVerID = <версия документа>
DocTypeNote = <вид документа>
FileList = ""
CmdID = <Id команды>
CmdClass = <класс команды>
)
· Если макрос завершается с ошибкой:
· Выводится сообщение с текстом ошибки;
· Выгрузка файлового состава отменяется;
· Работа прекращается.
· Если макрос выполняется успешно:
· Выгрузка файлового состава.
· Если тип операции «Редактирование»' или «Комментирование» то документ блокируется.
(
CurrentEvent = dceAfterUnload
ReturnCode = -1
ReturnMessage = ""
ActiveFileName = <полный путь к файлу над которым выполняется команда>
DocVerID = <версия документа>
DocTypeNote = <вид документа>
FileList = <список выгруженных файлов>
CmdID = <Id команды>
CmdClass = <класс команды>
)
· Если макрос завершается с ошибкой:
· Выводится сообщение с текстом ошибки;
· Если документ заблокирован то блокировка снимается.
Выполнение макроса при обновлении файлового состава
(
CurrentEvent = dceBeforeLoad
ReturnCode = -1
ReturnMessage = ""
ActiveFileName = ""
DocVerID = <версия документа>
DocTypeNote = <вид документа>
FileList = ""
CmdID = <Id команды>
CmdClass = <класс команды>
)
· Если макрос завершается с ошибкой:
· Выводится сообщение с текстом ошибки;
· Отменяется обновление файлового состава;
· Работа прекращается.
· Если макрос завершается успешно:
· Обновляется файловый состав на сервере.
(
CurrentEvent = dceAfterLoad
ReturnCode = -1
ReturnMessage = ""
ActiveFileName = ""
DocVerID = <версия документа>
DocTypeNote = <вид документа>
FileList = ""
CmdID = <Id команды>
CmdClass = <класс команды>
)
· Если макрос завершается с ошибкой:
· Выводится сообщение с текстом ошибки.
См. также: