Постановка задачи
Необходимо разработать прикладной блок типового маршрута, который отправляет задание секретарю совещания на исправление замечаний в повестке совещания. Повестка согласуется с участниками совещания.
Решение
Создадим блок типа «Задание». Дополнительно к свойствам базового блока необходимо задать свойство Meeting типа «Запись справочника». С помощью этого свойства будет передаваться информация о совещании из справочника Совещания.
Тема задания указывается по формату «Исправление совещания <Тема совещания>», где тема совещания хранится в реквизите Тема совещания (Содержание) справочника Совещания.
Срок выполнения задания совпадает со сроком проведения совещания. Срок проведения совещания хранится в реквизите Дата и время (ДатаВремя) справочника Совещания.
После завершения работы блока установить значение поля Состояние (СостСовещ) в записи совещания.
Блок имеет результаты выполнения:
• | Утвердить (C); |
• | На повторное согласование(R); |
• | Отменить совещание (U). |
События блока
Старт
// Получить запись справочника Совещания из свойств блока.
Properties = Sender.Properties
Meeting = GetRefRecordFromPropertyOrAttachments(Work; Properties;
'Meeting'; 'СВЩ')
// Установить тему задачи.
Subject = Properties.ValueByName(JOB_BLOCK_SUBJECT_PROPERTY).Value
if VarIsNull(Subject)
Properties.ValueByName(JOB_BLOCK_SUBJECT_PROPERTY).Value =
// Тема задания – строка локализации"Исправление совещания: %s".
LoadStringFmt("DIRREQ_95567E84_CA63_4EC7_A758_8099892A4926"; "MM";
Meeting.Содержание)
endif
// Установить срок выполнения задачи до проведения совещания.
DeadLine = Properties.ValueByName(JOB_BLOCK_DEADLINE_PROPERTY).Value
if VarIsNull(DeadLine)
Properties.ValueByName
(JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY).Value = FALSE
DeadLineProperty = Properties.ValueByName(JOB_BLOCK_DEADLINE_PROPERTY)
DeadLineProperty.ParamType = wdtDateTime
DeadLineProperty.Value = Meeting.ДатаВремя
Endif
После запроса параметров
// Проверить заполненность текста задания в случае отмены совещания.
ExceptionMessage = "Укажите причину отмены совещания в тексте задания и
выполните задание еще раз. "
ResultCode = Job.ExecutionResult.Code
if (ResultCode == "U") and (Job.ActiveText == "")
Raise(CreateException(''; ExceptionMessage; ecException))
endif
Завершение
Properties = Sender.Properties
Meeting = Properties.ValueByName("Meeting").Value.Reference
// Перевести совещание в нужное состояние
ExecutionResults = Properties.ValueByName
(JOB_BLOCK_EXECUTION_RESULTS_PROPERTY)
ExecutionResultCode = Sender.Results.ValueByName
(ExecutionResults.Value).Code
MeetingState = ""
APPROVERD_STATE = "Утверждено"
ABORTED_STATE = "Прекращено"
if ExecutionResultCode == "C"
MeetingState = APPROVERD_STATE
endif
if ExecutionResultCode == "U"
MeetingState = ABORTED_STATE
endif
Meeting.Open
Meeting.OpenRecord
if MeetingState <<>> ""
Meeting.СостСовещ = MeetingState
endif
Meeting.Save
Meeting.Close
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |