Копировать ссылку на страницу

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

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

Решение

Создадим блок типа «Задание». Дополнительно к свойствам базового блока необходимо задать свойство 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 = 

      // DIRREQ_95567E84_CA63_4EC7_A758_8099892A4926 = 

      // "Исправление совещания: %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

© 2016 Компания DIRECTUM Сообщество пользователей DIRECTUM