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

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

Щелкните для увеличения изображения

1.Добавьте блок «Условие». В вычислениях блока задайте проверку, что контролер не относится к нашей организации, в которой создано поручение. Если условие верно, значит контролер из другой организации. В этом случае необходимо перейти к отправке сообщения по межсистемному процессу.
2.Добавьте блок «Пауза» для отправки и ожидания результатов контроля:
в вычислениях блока получите глобальный ИД межсистемного процесса из параметров типового маршрута;
в список параметров процесса добавьте ИД задачи на контроль и исполнителя. Это требуется, чтобы возобновить задачу, когда из другой системы придут результаты контроля;
в дополнительные параметры запишите информацию, которую нужно будет добавить к сообщению;
отправьте сообщение.

 

  WorkflowParams = Object.WorkflowParams

  // Получить межсистемный процесс.

  ProcessGlobalID = WorkflowParams.FindItem("ProcessGlobalID").Value

  ProcessFactory = DCIGetFactory()

  Process = ProcessFactory.GetProcessByGlobalID(ProcessGlobalID)

  

  // Занести ИД задачи на контроль по исполнителю.

  Process.Lock()

  ProcessParams = Process.Params

  ControlTaskIDs = ProcessParams.ValueByName("ControlTaskIDs") 

  PerformerUser = WorkflowParams.ValueByName('PerformerUser').Value

  PerformerName = PerformerUser.Name

  if FindSubString(PerformerName; ControlTaskIDs) == 0

    ControlTaskIDs = AddSubString(Format('%s;%s'; ArrayOf(PerformerName; Object.ID)) ; ControlTaskIDs; '|')

  endif

  ProcessParams.SetVar("ControlTaskIDs"; ControlTaskIDs)

  Process.Save()

  Process.Unlock()

    

  // Вычислить получателей.

  Receivers = CreateStringList()

  Receivers.Delimiter = '|'

  Receivers.DelimitedText = ProcessParams.FindItem("InitiatorSystemID").Value

  

  AdditionalParams = CreateList()

  AdditionalParams.Add("ReportWithOutLink"; WorkflowParams.ValueByName("ReportWithOutLink").Value)

  AdditionalParams.Add("ReportDocumentsID"; WorkflowParams.ValueByName("ReportDocumentsID").Value)

  AdditionalParams.Add("NeedControl"; TRUE)

  AdditionalParams.Add("PerformerName"; PerformerName)    

  

  DCISendProcessMessage(ProcessGlobalID; "SendAssignmentReport"; Receivers; FALSE; AdditionalParams)

3.Добавьте блок «Сценарий» для обработки результатов рассмотрения контролером. Когда из другой системы приходит сообщение и в обработчике на прием текущая задача снимается с паузы, маршрут переход на этот блок. Из параметров типового маршрута получите результат приемки работ контролером и измените статус поручения.
4.В событии «После запроса параметров» блока «Контроль исполнения поручения» задайте вычисления. Если исполнитель внешний, то отправьте сообщение в связанную систему о том, что контролер принял работу. Если работа принята, то типовой маршрут завершается, его не требуется ставить на паузу.

 

  if ResultCode == 'A'

      /* Если исполнитель внешний отправить сообщение о том,

         что контролер принял работы */

      Params = Object.WorkflowParams

      AssignmentInfo = Params.ValueByName('Поручение').Value

      PerformerUser = Params.ValueByName('PerformerUser').Value

      Performer = GetEmployeesByUserID(PerformerUser.ID).Values(0)

      

      // Контролер и исполнитель из разных наших организаций.

      if GetRequisiteValueAsString(

        'РАБ'; Performer; SYSREQ_OUR_FIRM) <<>>  GetRequisiteValueAsString(

        'RRCAssignments'; ; SYSREQ_OUR_FIRM;;; AssignmentInfo.ID)

          

        // Получить процесс из параметров маршрута задачи.

        ProcessGlobalID = Params.FindItem("ProcessGlobalID").Value

        // Вычислить систему-получателя от имени пользователя.

        Receivers = CreateStringList()

        Receivers.Delimiter = '|'

        Receivers.DelimitedText = DCIGetReceiverForUser(PerformerUser.Name)

        AdditionalParams = CreateList()

        AdditionalParams.Add("ResultControl"; ResultCode)

        AdditionalParams.Add("PerformerName"; PerformerUser.Name)

        AdditionalParams.Add('ControlText'; Object.ActiveText)

        

        DCISendProcessMessage(Process; "SendResultControl"; Receivers; FALSE; AdditionalParams)     

      endif 

    endif

5.Добавьте блок «Условие». В вычислениях блока проверьте, что исполнитель не относится к нашей организации, в которой создано поручение. Если условие верно, значит исполнитель внешний и необходимо перейти к отправке сообщения по межсистемному процессу с результатами контроля.
6.Добавьте блок «Пауза» для отправки и ожидания результатов исполнения. Аналогичен блоку «Пауза» для отправки и ожидания результатов контроля за исключением того, что в сообщение передаются результаты рассмотрения контролером.
© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }