<< Click to Display Table of Contents >> Разработка > Примеры разработки > Задачи и задания Как скрыть блок в контроле состояния |
Ситуация
В базовом решении в типе задачи «Задача на исполнение поручения» есть вкладка Поручения (State) с добавленным контролом состояния. В контроле отображаются блоки по работе с поручением: создание резолюции, исполнение поручения, запрос отчета и прочее. Необходимо скрыть блок с информацией о создании резолюции:
Решение
Чтобы скрыть блок с информацией о создании резолюции, нужно скрыть исходную вкладку Поручения и создать новую. На вкладку добавить свой контрол состояния, написать для него новый код на основе кода контрола состояния из базового решения. В коде изменить значение параметра, который отвечает за отображение блока с резолюцией. Для этого:
1.В своем решении перекройте тип задачи «Задача на исполнение поручения» (Sungero.RecordManagement.ActionItemExecutionTask).
2.В редакторе решения добавьте зависимость от модуля Sungero.RecordManagement.
3.В редакторе перекрытого типа задачи в узле «Форма» скройте вкладку Поручения (State), где содержится контрол состояния. Для этого в свойствах вкладки снимите флажок Отображать в форме. В дальнейшем вместо скрытого контрола состояния создадим новый.
4.Добавьте новую вкладку StateNew.
5.На вкладку добавьте группу контролов ControlGroupDEV, где будут отображаться все этапы работ по исполнению поручения.
6.На панели свойств в поле Количество колонок в группе укажите значение 1.
7.В группу добавьте контрол состояния ControlDEV.
В базовом решении в контроле состояния используются функции без модификатора virtual, поэтому их нельзя переопределить. Чтобы написать свою логику, нужно создать функции на основе функций контрола состояния из базового решения. Чтобы посмотреть код базовых функций, на скрытой вкладке State выделите контрол состояния Control и в свойствах контрола в поле *Функция нажмите на кнопку . Откроется редактор кода с функциями:
•GetActionItemExecutionTaskStateView() – задает формат отображения контрола состояния. Ее параметр skipResolutionBlock отвечает за отображение этапа по созданию резолюции:
•GetStateView() – отвечает за построение модели контрола состояния. Она возвращает GetActionItemExecutionTaskStateView() с нужными параметрами:
•GetMainActionItemExecutionTask() – вызывается в функции GetStateView() и отвечает за отображение главного поручения;
•GetStateViewXml() – формирует XML-файл, на основе которого прорисовываются элементы контрола на форме.
8.Добавьте код для нового контрола состояния. Для этого на вкладке StateNew выделите созданный контрол состояния и на панели свойств нажмите на кнопку Добавить функцию.
9.В открывшемся редакторе кода скопируйте код базовых функций, переименуйте их и доработайте согласно комментариям в примерах:
Функцию GetStateViewXml() скопируйте целиком и переименуйте:
|
GetMainActionItemExecutionTask()
Функцию GetMainActionItemExecutionTask() скопируйте целиком, переименуйте и доработайте:
|
Функцию GetStateView() скопируйте целиком, переименуйте и доработайте:
|
GetActionItemExecutionTaskStateView()
Код функции GetActionItemExecutionTaskStateView() копировать не требуется, так как функция доступна в любых модулях и решениях. Функция вызывается с новыми параметрами в GetStateView(). |
10.В коде базовой функции GetMainActionItemExecutionTask() используется структура. Чтобы код функции GetMainActionItemExecutionTaskNew() корректно работал, скопируйте код структуры базового типа сущности «Задача на исполнение поручения» в редактор кода структуры перекрытого типа сущности:
[Public]
partial class StateViewModel
{
public System.Collections.Generic.Dictionary<Sungero.Core.Enumeration?, string> StatusesCache { get; set; }
public List<IActionItemExecutionTask> Tasks { get; set; }
public List<Sungero.Workflow.IAssignment> Assignments { get; set; }
}
11.Сохраните изменения и опубликуйте разработку.
В результате в карточках новых задач на исполнение поручения на вкладке «Поручения» этап по созданию резолюции отображаться не будет:
© Компания Directum, 2024 |