Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

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

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

Решение

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

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

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

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

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

 

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

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()

 

/* Преобразовать последнюю версию документа, указанного в параметре EDocument, в формат PDF с настройками по

   умолчанию. В параметре TransformationName функции FCConvertEDocumentToPDF задается способ преобразования в

   PDF. В качестве значения параметра указывается имя записи из справочника Настройки преобразования в PDF.

   Если параметр не задан, применяются настройки из записи справочника, используемой по умолчанию. */

foreach EDocumentInfo in EDocumentList

  ConvertingFailed = FALSE

  try

    EDocument = EDocumentInfo.Document

    FCConvertEDocumentToPDF(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

© Компания Directum, 2020 Сообщество пользователей Directum
.navbar > a:hover { background: #FFD73B; }