...

Как получить список id заголовков процессов запускаемых из сделки

Тема в разделе "Вопросы по функционалу", создана пользователем r.kiyamov, 31 июл 2018.

  1. r.kiyamov

    r.kiyamov Member

    Есть проблема - нужно выбрать все процессы которые запускались из сделки и открыть к ним доступ новому ответственному по сделке ( как открыть доступ придумали это решено) остаётся проблема, а как выбрать все эти процессы? Есть примеры в базе знаний как отфильтровать процессы по контекстной переменной,
    Код:
    var header = ProcessHeaderManager.Instance.Load (21);
                //загружаем процесс в переменную в зависимости от id
                var contextFilterType = Locator.GetServiceNotNull<WorkflowInstanceContextService> ().GetInstanceContextFilterType (header.Published);
                //задаем тип фильтра контекста
                var filter = InterfaceActivator.Create<WorkflowInstanceFilter> ();
                List<WorkflowInstanceStatus> statuses = new List<WorkflowInstanceStatus> ();
                statuses.Add (WorkflowInstanceStatus.Running);
                filter.Statuses = statuses;
                filter.GeneralStatus = WorkflowInstanceGeneralStatus.Current;
                filter.ProcessHeader = header;
                //присваиваем фильтру процесс, который определили по Id
                dynamic fl = Activator.CreateInstance (contextFilterType);
                //создаем экземпляр фильтра по контексту
                if (context.Station != null) {
                    fl.Station = context.Station;
                    //присваиваем значение переменной, по которому будет фильтровать
                    filter.ContextFilter = fl;
                    //присваиваем искомое значение фильтру
                    filter.ProcessHeader = header;
                    //присваиваем фильтру процесс, который определили по Id
                    var process = WorkflowInstanceManager.Instance.Find (filter, null);
    но нужно знать заголовки всех процессов запускаемых из сделки чтобы искать экземпляры каждого типа процесса и в них искать по контекстной переменной типа сделка.

    А как бы выдрать все процессы, которые запускаются из сделки? ведь хранится же где-то в сделке информация о тех процессах, которые из неё можно запускать!

    Так же есть стандартный список связанных объектов активные и не активные экземпляры процессов может его можно как-то расковырять и выдрать из него EQL?
     
  2. r.kiyamov

    r.kiyamov Member

    а вот и я молодец) сам спроисл сам нашёл решение)
    можно заехать через тип сделки в нём хранятся заголовки процессов которые можно запускать из данной сделки следовательно они могли быть из неё запущены и имеет смысл искать только их)

    Код:
    context.Sale.SaleType.ProcessHeader
    это коллекция искомых процессов

    Ура товарищи)
     
    1 это нравится
  3. r.kiyamov

    r.kiyamov Member

Поделиться: