Копировать ссылку на страницу

Постановка задачи

В организации согласуется и отправляется на подписание во внешние организации большое количество договоров. Все договоры имеют одинаковый вид документа. Для единообразия все договоры отправляются на подписание в формате PDF. Перед отправкой документы экспортируются в специальный каталог файловой системы.

Решение

Автоматический экспорт документов в файловую систему с преобразованием в PDF можно сделать в прикладном сценарии системы DIRECTUM. Удобно настроить автоматический запуск сценария по расписанию (лучше настроить выполнение сценария в ночное время, чтобы не замедлять работу пользователей системы DIRECTUM). Сценарий будет искать все документы с заданным видом, изменявшиеся со времени последнего запуска сценария. Далее документы будут преобразованы в формат PDF – для каждого документа будет создана новая версия в PDF-формате. На последнем этапе PDF-версии документов будут экспортированы в заданный каталог файловой системы.

Сценарию необходимо передавать следующие параметры:

EDocKind – код экспортируемого вида документа в справочнике Виды документов;
LastScriptRunTime – дата  последнего запуска сценария;
DocumentsFolder – каталог для экспорта документов.

Для передачи параметров сценарию удобно создать запись в справочнике Параметры запуска компонент, тогда при вызове сценария в параметрах командной строки достаточно будет передать код созданной записи. Подробнее см. раздел «Параметры запуска компонент».

Программный код

 

// Получить константу, содержащую адрес сервиса преобразования.

DCTSConvertToPDFWSDL = GetAssignedConst("DCTSConvertToPDFWSDL")

 

// Получить параметры сценария из справочника Параметры запуска компонент.

ListParams = GetComponentLaunchParams()

EDocKind = ListParams.ValueByName('EDocKind')

LastScriptRunTime = ListParams.ValueByName('LastScriptRunTime')

DocumentsFolder = ListParams.ValueByName('DocumentsFolder')

 

// Выполнить поиск документов с видом EDocKind,

// изменявшихся со времени LastScriptRunTime.

SearchDescription = Searches.Load('EDOCUMENT_SEARCH')

Criteria = SearchDescription.SearchCriteria

KindCriterion = Criteria.Add('ISBEDocKind')

KindCriterion.Add(EDocKind)

ModifyCriterion = Criteria.Add('ISBEDocModifyDate')

ModifyCriterion.AddRange(LastScriptRunTime; Today())

EDocumentList = SearchDescription.Execute

 

// Запомнить время выполнения сценария.

ScriptRunTime = Today()

 

// Преобразовать последние версии документов в PDF-формат.

foreach EDocumentInfo in EDocumentList

  ConvertingFailed = FALSE

  try

    EDocument = EDocumentInfo.Document

    DCTSConvertEDocumentToPDF(DCTSConvertToPDFWSDL; EDocument;; TRUE)

  except

    ConvertingFailed = TRUE

  endexcept

  if not ConvertingFailed

 

    // PDF-версии документов экспортировать

    // в подкатолог ConvertToPDFSuccess.

    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)

  endif

endforeach

 

// Занести время запуска сценария в справочник Параметры запуска компонент.

// LaunchParamsCode – код записи справочника с параметрами сценария.

// Наименование параметра – реквизит Наименование (СтрокаТ).

// Значение параметра – реквизит Значение (ЗначПарамТ).

Reference = References.ПЗК.GetObjectByCode(LaunchParamsCode)

DataSet = Reference.DetailDataSet(1)

DataSet.Locate('СтрокаТ'; 'LastScriptRunTime')

DataSet.ЗначПарамТ = ScriptRunTime

Reference.Save

© 2016 Компания DIRECTUM Сообщество пользователей DIRECTUM