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

Для занесения захваченных и упакованных документов в систему DIRECTUM предназначен модуль отправки в систему DIRECTUM.

Отправка документов в систему DIRECTUM зависит от принятых в организации схем обработки документов. При отправке документов в систему DIRECTUM можно реализовать свою схему обработки документов. Для этого следует создать собственный сценарий и указать его в конфигурационном файле ввода DctsCaptureService.exe.config. Подробнее см. раздел «Настройки модуля отправки в систему DIRECTUM».

Для организации преобразования документа в PDF-формат следует использовать прикладной блок Преобразование документа в PDF.

Для увеличения производительности сервиса ввода имеется есть возможность параллельной отправки пакетов с нескольких линий. Подробнее см. раздел «Настройки модуля отправки в систему DIRECTUM».

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

Настройки модуля отправки в систему DIRECTUM хранятся в конфигурационном файле настроек служб ввода DctsCaptureService.exe.config.

Отправка документов в систему DIRECTUM представлена на схеме:

Подробнее Алгоритм работы модуля отправки в систему DIRECTUM

1.Модуль отправки в систему DIRECTUM с помощью линии получает сформированный пакет документов и метаданных от модуля упаковки. Подробнее см. разделы «DeviceInfo.xml», «InstanceInfos.xml», «InputFiles.xml».
2.Модуль отправки в систему DIRECTUM подключается к системе DIRECTUM. Для подключения используются данные из конфигурационного файла служб ввода DctsCaptureService.exe.config: имя и пароль пользователя, признак использования аутентификации Windows, сервер и база данных системы DIRECTUM, к которой происходит подключение.
3.Модуль отправки в систему DIRECTUM вызывает сценарий Обработка документа службами ввода.
4.Модуль отправки в систему DIRECTUM передает сценарию в качестве параметров метаданные о пакете с документами, путь к пакету и код записи справочника Параметры запуска компонент, в котором могут быть настроены дополнительные параметры сценария.

Для каждого документа, полученного от служб ввода, сценарий Обработка документа службами ввода выполняет действия:

в зависимости от значения параметра IdentifyOurEDocuments выполняется распознавание штрихкодов документа. Распознавание выполняется только для тех документов, формат которых поддерживает сервис извлечения штрихкодов;
если найден штрихкод системы DIRECTUM, то по ИД документа, указанному в штрихкоде, выполняется поиск документа в системе. Документ, полученный от служб ввода, импортируется в новую версию найденного документа;
если распознавание штрихкодов не выполнялось или штрихкод системы DIRECTUM не найден, то создается новый документ из файла. Вид документа и тип карточки заполняются значениями параметров EDocKind и EDocCardType соответственно. Имя документа заполняется именем файла;
если в качестве параметра ConvertToPDF передано значение True, то выполняется преобразование в PDF-формат. Если в ходе преобразования возникли ошибки или формат документа не поддерживается сервисом преобразования в PDF, то документ остается в исходном формате, выполнение сценария продолжается;
если сценарию передается пакет с несколькими документами, то часть из них может быть основными, а часть вспомогательными. Например, для сервиса ввода с электронной почты основным будет документ с текстом сообщения электронной почты, а вспомогательными – документы с вложениями. Сценарий связывает первый основной документ с каждым вспомогательным документом;
если в параметре StandardRouteCode передан код типового маршрута, то создается задача по типовому маршруту. В задачу вкладывается документ, и задача отправляется по маршруту. Если в пакете получен не один документ, а несколько, то создается отдельная задача для каждого основного документа. В задачу кроме основного документа вкладываются все связанные с ним вспомогательные документы.
5.Модуль отправки в систему DIRECTUM ожидает завершения сценария. О том, как получить результат выполнения сценария и настроить параметры повторной отправки в случае ошибки, см. раздел «Настройки модуля отправки в систему DIRECTUM».

Сценарий Обработка документа службами ввода импортирует документ в систему DIRECTUM. При импорте может быть выполнен ряд действий:

извлечение штрихкода из документа и его анализ;
проверка наличия документа в системе, при необходимости создание нового документа с заданным видом и типом карточки;
преобразование документа в формат PDF;
сохранение документа в системе;
отправка документа в задаче по типовому маршруту.

Доступные действия определяются параметрами сценария.

Свернуть/развернуть пример Пример

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

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

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

Решение:

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

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

EDocKind – код заданного вида документа в справочнике Виды документов;
EDocCardType – имя типа карточки документа в компоненте Типы карточек документов;
FilePath – путь к подкаталогу сотрудника.

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

Чтобы передать параметры сценарию:

1.Создайте запись в справочнике Параметры запуска компонент.
2.В созданной записи справочника укажите значения параметров.
3.В командной строке вызова сценария укажите код созданной записи.

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

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

 

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

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

INPUT_FILES_PARAM_NAME = "InputFiles.xml"

// Метаинформация о документе, заносимом в систему.

INSTANCE_INFO_PARAM_NAME = "InstanceInfos.xml"

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

ListParams = GetComponentLaunchParams()

EDocKind = ListParams.ValueByName('EDocKind')

EDocCardType = ListParams.ValueByName('EDocCardType')

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

ScriptParams = Object.Params

FilePath = ScriptParams.ValueByName('FilePath')

FilePath = IncludeTrailingPathDelimiter(FilePath)

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

InputFilesXml = CreateObject("MSXML.DOMDocument")

InputFilesXml.Load(FilePath & INPUT_FILES_PARAM_NAME)

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

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

InstanceInfoXml = CreateObject("MSXML.DOMDocument")

InstanceInfoXml.Load(FilePath & INSTANCE_INFO_PARAM_NAME)

InstanceInfoXmlElements = InstanceInfoXml.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

  // Получить имя пользователя из InstanceInfos.xml.

  InstanceInfoXmlElement = InstanceInfoXmlElements.item(InputFilesElementIndex)

  OriginalFileName = InstanceInfoXmlElement.selectSingleNode("FileName").text

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

  CapturedFileExt = ExtractFileDriveDirNameExt(CapturedFileName; "E")

  EditorCode = GetEditorCodeByExtension(CapturedFileExt)

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

  EDocument = EDocuments.CreateNewFromFile(EDocCardType; EDocKind; EditorCode; FilePath & CapturedFileName)

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

  EDocument.SYSREQ_EDOC_NAME = ExtractFileDriveDirNameExt(OriginalFileName; "N")

  EDocument.Save

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

  NewNote = LoadStringFmt("DIRA7FF8238_7096_4D7F_AE61_376884A4455E"; "COMMON"; ExtractFileDriveDirNameExt(OriginalFileName; "N"))

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

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

  // из полного пути к файлу.

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

  try

    User = ServiceFactory.GetUserByName(UserName)

    except

    // Уведомление системному пользователю, если имя папки не совпадает

    // ни с одним именем пользователя в системе.

    Role = ServiceFactory.GetRoleByName("ОтветственныйЗаИмпортИзDCTSCapture") 

    RoleMembers = ServiceFactory.GetRoleMembers(Role; nil)

    if RoleMembers.Count > 0

      User = RoleMembers.Value

    else

      // Если в роли нет исполнителей.

      User = ServiceFactory.GetUserByName("Administrator")

    endif

    TaskForNotice = Tasks.CreateNew()

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

    TaskForNoticeRouteStep = Tasks.CreateRouteStep(1; User; jkJob; Today(); ""; "")

    TaskForNotice.Route.Add(TaskForNoticeRouteStep)

    TaskForNotice.Subject = "DCTS: при обработке файла '" & CapturedFileName & "' не удалось получить пользователя по имени '" & UserName & "'."

    AttachList = TaskForNotice.GetAttachments(TRUE)

    AttachList.Add(EDocument.Info)

    TaskForNotice.Start

  endexcept

// Если пользователь не определен, то не создавать задачу.

  if not ExceptionExists()

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

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

    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 = "Из папки пользователя '" & UserName & "' в систему занесен новый файл '" &  ExtractFileDriveDirNameExt(OriginalFileName; "N") & "'."

    TaskForEDocProcess.Start()

  endif

  // Выдать полные права на документ исполнителю задания.

  AccessRights = EDocument.AccessRights

  DocWriters = AccessRights.Writers

  DocReaders = AccessRights.Readers

  DocManagers = AccessRights.Managers

  if not AccessRights.IsManager(User)

    IsWriter = AccessRights.IsWriter(User)

      if IsWriter

        DocWriters.Delete(User)

      endif

    IsReader = AccessRights.IsReader(User)

      if IsReader

        DocReaders.Delete(User) 

      endif

    DocManagers.Add(User)

  endif

  if EDocument.Modified

    EDocument.Save

  endif

  InputFilesElementIndex = InputFilesElementIndex + 1

endwhile

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