Модификация прикладной системы

 

Преобразование документов 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.