Постановка задачи
Необходимо реализовать механизм отправки документов контрагентам.
Решение
Для отправки документов через системы обмена используйте диалог «Отправка документов»:
Если диалог должен вызываться в рамках типового маршрута, например, по согласованию документа, в нужный блок маршрута добавьте код, связав его с вариантом выполнения:
Событие «После запроса параметров»
Dialog = Dialogs.DISISendDocuments.CreateNew()
Dialog.Int = Object.SYSREQ_ID
ShowDialog(Dialog)
if Dialog.Result <<>> mrOk
Exit()
endif
Для заполнения реквизитов диалога, например, документов для отправки, используйте функцию DISIFillDialogParamsByTM<Код типового маршрута>. В тексте функции получите задачу, на основе которой заполните реквизиты диалога.
Вычисление функции
DELIMITER = ','
Task = Tasks.GetObjectByID(TaskID)
// Заполнить реквизит диалога "Документы для отправки" документами из вложения.
Attachments = Task.GetAttachments(FALSE)
DocsIDs : IStringList = CreateStringList()
DocsIDs.Delimiter = DELIMITER
// Заполнить список документов для отправки из вложения задачи.
foreach Attachment in Attachments
AttachmentInfo = Attachment.ObjectInfo
if AttachmentInfo.ComponentType = ctEDocument
DocsIDs.Add(AttachmentInfo.ID)
endif
endforeach
Dialog.String = DocsIDs.DelimitedText
/* Если не требуется подписание контрагентом,
то очистить список документов для подписания. */
PatnerSigned = Task.WorkflowParams.ValueByName('PatnerSigned').Value
if not PatnerSigned
Dialog.String2 = ''
endif
DocsIDs = nil
Attachments = nil
Task = nil
В результате для всех блоков типового маршрута будет действовать одинаковая логика по отправке документов в систему обмена. Если требуется иное поведение, доработайте функцию, чтобы определить, какое задание находится в работе.
Если диалог должен вызываться не в рамках типового маршрута, реквизиты диалога нужно заполнить перед его вызовом.
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |