Модификация прикладной системы
Преобразование документов DIRECTUM
Массовая выгрузка документов из DIRECTUM со сменой формата
Постановка задачи:
В организации согласуется и отправляется на подписание во внешние организации большое количество договоров. Все договоры имеют одинаковый вид электронного документа. Для единообразия все договоры отправляются на подписание в формате PDF. Перед отправкой документы выгружаются в специальный каталог файловой системы.
Решение:
Автоматический экспорт документов в файловую систему с преобразованием в PDF можно сделать в прикладном сценарии системы DIRECTUM. Удобно настроить автоматический запуск сценария по расписанию (лучше настроить выполнение сценария в ночное время, чтобы не замедлять работу пользователей системы DIRECTUM). Сценарий будет искать все электронные документы с заданным видом, изменявшиеся со времени последнего запуска сценария. Далее документы будут преобразованы в формат PDF – для каждого документа будет создана новая версия в PDF-формате. На последнем этапе PDF-версии документов будут экспортированы в заданный каталог файловой системы.
Сценарию необходимо передавать следующие параметры:
· EDocKind - код заданного вида электронного документа в справочнике Виды электронных документов;
· LastScriptRunTime – время последнего запуска сценария;
· DocumentsFolder – каталог для экспорта электронных документов.
Для передачи параметров сценарию необходимо создать запись в справочнике Параметры запуска компонент (подробнее см. описание компоненты «Параметры запуска компонент» в книге «Компоненты системы DIRECTUM»).
При вызове сценария в параметрах командной строки необходимо будет передать код созданной записи (подробнее см. раздел «Параметры запуска компонент. Особенности использования» в книге «Компоненты системы DIRECTUM»).
Программный код:
// Получить константу, содержащую адрес сервиса преобразования.
DCTSConvertToPDFWSDL = GetAssignedConst("DCTSConvertToPDFWSDL")
// Получить параметры сценария из справочника Параметры запуска компонент.
ListParams = GetComponentLaunchParams()
EDocKind = ListParams.ValueByName('EDocKind')
LastScriptRunTime = ListParams.ValueByName('LastScriptRunTime')
DocumentsFolder = ListParams.ValueByName('DocumentsFolder')
// Выполнить поиск документов с видом EDocKind,
// изменявшихся со времени LastScriptRunTime.
SearchDesciption = Searches.Load('EDOCUMENT_SEARCH')
Criteria = SearchDesciption.SearchCriteria
KindCriterion = Criteria.Add('ISBEDocKind')
KindCriterion.Add(EDocKind)
ModifyCriterion = Criteria.Add('ISBEDocModifyDate')
ModifyCriterion.AddRange(LastScriptRunTime; Today())
EDocumentList = SearchDesciption.Execute
// Запомнить время выполнения сценария.
ScriptRunTime = Now()
// Преобразовать последние версии документов в PDF-формат.
foreach EDocumentInfo in EDocumentList
ExceptionsOff()
EDocument = EDocumentInfo.Document
DCTSConvertEDocumentToPDF(DCTSConvertToPDFWSDL; EDocument;; TRUE)
ExceptionsOn()
if not Assigned(GetLastException())
// PDF-версии документов экспортировать
// в подкатолог ConvertToPDFSuccess.
EDocument = EDocumentInfo.Document
Versions = EDocument.Versions
VersionNumber = GetLastEDocumentVersionNum(EDocument)
FileName = Format('%s\ConvertToPDFSuccess\%s.%s';
ArrayOf(DocumentsFolder; EDocument.ID; Versions.ValueByName(
VersionNumber).Editor.Extension))
EDocument.Export(VersionNumber; FileName; False)
else
// Последние версии документов,
// для которых не удалось выполнить преобразование,
// экспортировать в подкаталог ConvertToPDFFailed.
Versions = EDocument.Versions
VersionNumber = GetLastEDocumentVersionNum(EDocument)
FileName = Format('%s\ConvertToPDFFailed\%s.%s';
ArrayOf(DocumentsFolder; EDocument.ID; Versions.ValueByName(
VersionNumber).Editor.Extension))
EDocument.Export(VersionNumber; FileName; False)
FreeException()
endif
endforeach
// Занести время запуска сценария в справочник
// Параметры запуска компонент.
Reference = References.ПЗК.GetObjectByCode(LaunchParamsCode)
DataSet = Reference.DetailDataSet(1)
DataSet.Locate('СтрокаТ'; 'LastScriptRunTime')
DataSet.ЗначПарамТ = ScriptRunTime
Reference.Save
См. также:
· Смена формата документа в системе DIRECTUM.
© 2009, Компания DIRECTUM
|
Отправить комментарий к этому разделу на
support@directum.ru
|