Отправка документов

 

Отправка в систему DIRECTUM

 

Пример отправки

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

В организации выделен специальный сетевой каталог для хранения электронных документов, предназначенных для ввода в систему. У каждого сотрудника есть свой подкаталог. Название подкаталогов совпадает с логинами сотрудников.

Необходимо организовать автоматический ввод документов из такого сетевого каталога в систему DIRECTUM.

Решение:

Нужно создать собственный сценарий занесения документов в систему DIRECTUM. В данном случае устройством, поставляющим документы, будет файловая система. Сценарий будет вызываться службами ввода при поступлении очередного документа в каталог какого-либо сотрудника. Сценарий будет импортировать документ в систему DIRECTUM, задавать тип карточки, вид электронного документа и отправлять задачу сотруднику, ответственному за подкаталог.

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

·         EDocKind - код заданного вида электронного документа в справочнике Виды электронных документов;

·         EDocCardType – имя типа карточки электронного документа в компоненте Типы карточек электронных документов;

·         FilePath – путь к подкаталогу сотрудника.

Код вида документа и имя типа карточки удобнее задавать через справочник Параметры запуска компонент (подробнее см. в книге «Компоненты системы DIRECTUM», описание компоненты «Параметры запуска компонент»).

Для того чтобы передать эти параметры, необходимо сделать следующее:

1.      Создать запись в справочнике Параметры запуска компонент.

2.      В созданной записи справочника указать значения параметров.

3.      В командной строке вызова сценария указать код созданной записи.

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

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

Программный код сценария занесения документов в систему DIRECTUM:

 

// Имя служебного файла, содержащего имена файлов для занесения

// в систему DIRECTUM.

INPUT_FILES_XML_NAME ='InputFiles.xml'

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

ListParams = GetComponentLaunchParams()

EDocKind = ListParams.ValueByName('EDocKind')

EDocCardType = ListParams.ValueByName('EDocCardType')

// Получить путь к подкаталогу сотрудника.

ScriptParams = Object.Params

FilePath = ScriptParams.ValueByName('FilePath')

// Определить сотрудника, ответственного за подкаталог.

// Службы ввода возвращают путь FilePath с завершающим символом «\»,

// поэтому нужно выбрать предпоследнюю подстроку в строке FilePath.

UserName = SubString(FilePath; '\'; SubStringCount(FilePath; '\') - 1)

User = ServiceFactory.GetUserByName(UserName)

// Получить имена файлов для занесения в систему.

InputFilesXml = CreateObject("MSXML.DOMDocument")

InputFilesXml.Load(FilePath & INPUT_FILES_XML_NAME)

InputFilesElements = InputFilesXml.selectNodes("//Files/FileInfo")

// Проверить наличие файлов для обработки.

InputFilesElementCount = InputFilesElements.length

if InputFilesElementCount == 0

  // "Не найдены файлы для занесения в систему"

  ExceptMessage = LoadString("DIR826B95C6_6B05_42F5_88F3_39D67AFF16D1";

   "COMMON")

  Raise(CreateException("EDIRFileNotFound"; ExceptMessage; ecException))

endif

InputFilesElementIndex = 0

while InputFilesElementIndex < InputFilesElementCount

  InputFilesElement = InputFilesElements.item(InputFilesElementIndex)

  CapturedFileName = InputFilesElement.selectSingleNode("FileName").text

  FullCapturedFileName = FilePath & CapturedFileName

  // Определить параметры создания нового эл. документа в DIRECTUM.

  CapturedFileExt = ExtractFileDriveDirNameExt(FullCapturedFileName; "E")

  EditorCode = GetEditorCodeByExtension(CapturedFileExt)

  // Создать новый документ из файла.

  EDocument = EDocuments.CreateNewFromFile(

    EDocCardType; EDocKind; EditorCode; FullCapturedFileName)

  // В имя документа записать имя файла.

  EDocument.SYSREQ_EDOC_NAME = ExtractFileDriveDirNameExt(

    FullCapturedFileName; "N")

  EDocument.Save()

  // Изменить примечание "Импортировано из файла %s".

  NewNote = LoadStringFmt("DIRA7FF8238_7096_4D7F_AE61_376884A4455E";

    "COMMON"; CapturedFileName)

  EDocument.Versions.Values(EDocument.Versions.Count - 1).Note = NewNote

  // Отправить документ вложением в задачу сотруднику,

  // ответственному за подкаталог.

  TaskForEDocProcess = Tasks.CreateNew()

  // Добавить во вложения задачи захваченный документ.

  AttachmentList = TaskForEDocProcess.GetAttachments(TRUE)

  AttachmentList.Add(EDocument.Info)

  // Заполнить этап маршрута.

  FinalDate = ChangeDate("D"; Today(); 1)

  RouteStep = Tasks.CreateRouteStep(1; User; jkJob; FinalDate; ""; "")

  TaskForEDocProcess.Route.Add(RouteStep)

  TaskForEDocProcess.Subject = ExtractFileDriveDirNameExt(

    FullCapturedFileName; "N")

  TaskForEDocProcess.Start()

  InputFilesElementIndex = InputFilesElementIndex + 1

endwhile

 

 

 

 

 

См. также:

·         Общие сведения;

·         Алгоритм отправки.