Отправка в систему 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
См. также:
© 2009, Компания DIRECTUM
|
Отправить комментарий к этому разделу на
support@directum.ru
|