Мониторинг и профайлинг системы DIRECTUM

 

Статистика выполнения типовых маршрутов

 

Пример добавления разрезов через параметры

В типовом маршруте «Согласование договорных документов» есть параметр «Руководитель подразделения». В этом параметре задается имя руководителя, для которого готовится договор. Значение параметра запрашивается у пользователя при выборе типового маршрута. Значение выбирается из справочника Пользователи.

Без добавления разрезов данные в отчетах по этому типовому маршруту можно анализировать в разрезе имен руководителей подразделений.

Предположим, что только имен руководителей для анализа недостаточно. Требуются их подразделения и возраст.

В этом случае в список параметров следует добавить два параметра:

·         Должность руководителя (Post)– тип Справочник Виды должностей;

·         Возраст руководителя (Age)– тип Целое число.

 

Значения этих параметров не имеет смысла запрашивать у пользователей, их можно получить программно. Для этого, в событие типового маршрута «Завершение выбора» можно добавить следующие вычисления:

 

  DEPARTMENT_MANAGER_PARAM_NAME = "РуководительПодразделения"

  PARAM_IS_NOT_EXIST = -1

  LIST_IS_EMPTY_COUNT = 0

  FIRST_EMPLOYEE_INDEX = 0

 

  // Получить список параметров ТМ

  WorkflowParams = Object.WorkflowParams

  DepartmentManagerParamIndex = WorkflowParams.IndexOfName(DEPARTMENT_MANAGER_PARAM_NAME)

  if DepartmentManagerParamIndex <> PARAM_IS_NOT_EXIST

    // Получить пользователя руководителя подразделения

    DepartmentManagerUser = WorkflowParams.Values(DepartmentManagerParamIndex).Value

    DepartmentManagerUserID = DepartmentManagerUser.ID

    DepartmentManagerEmployeesCodeList = GetEmployeesByUserID(DepartmentManagerUserID)

    if DepartmentManagerEmployeesCodeList.Count > LIST_IS_EMPTY_COUNT

      // Получить работника руководителя подразделения

      DepartmentManagerEmployeeCode = DepartmentManagerEmployeesCodeList.Values(FIRST_EMPLOYEE_INDEX)

      DepartmentManagerEmployeeRecord = References.РАБ.GetObjectByCode(DepartmentManagerEmployeeCode)

      PostKindCode = DepartmentManagerEmployeeRecord.ВидДолжности

      if Assigned(PostKindCode)

        // Получить вид должности

        PostKindID = GetRequisiteValueAsString("PositionKinds"; PostKindCode; SYSREQ_ID)

        PostKindInfo = References.PositionKinds.ObjectInfo(PostKindID)

        WorkflowParams.ValueByName("Post").Value = PostKindInfo

      endif

      // Получить возраст

      DateOfBirth = GetRequisiteValueAsString("ПРС"; DepartmentManagerEmployeeRecord.Персона; "Дата")

      Age = DateDiff("Y"; DateOfBirth; Today())

      WorkflowParams.ValueByName("Age").Value = Age

    endif

  endif

 

 

 

См. также:

·         Общие сведения о добавлении разрезов через параметры;

·         Особенности добавления параметров для разрезов.