logo

Динамические формы задач БП: Флаги переменных

У переменных на форме существует несколько флагов, обозначающих правила их демонстрации на форме задачи:
  • Visible – видимость переменной. В случае false – на форму выведена не будет;
  • Required – обязательность заполнения;
  • ReadOnly – только для чтения.
Изменяются флаги через объект формы, так как речь идёт о представлении переменной, а не самом значении в контексте бизнес-процесса.
При создании сценария на форме задачи, кроме контекста, в методе появляется объект формы:
1
EleWise.ELMA.Model.Views.FormViewBuilder<Context> form

Далее, возможно следующее изменение флажков:

1
form.For(c => c.INN).Visible(true)
где:
  • c => c.INN – лямбда-функция c переменной контекста INN;
  • true – логический флаг (true или false).
Рассмотрим пример сценария, практически полностью меняющего карточку задачи при выборе того или иного типа контрагента.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public void set_visible(Context context, EleWise.ELMA.Model.Views.FormViewBuilder<Context> form)
{
    try{
         
         
        if (context.TipKlienta.Value == "Физ. лицо")
        {
            form.For(c => c.INN).Required(false).Visible(true);
            form.For(c => c.Seriya).Required(true).Visible(true);
            form.For(c => c.Nomer).Required(true).Visible(true);
            form.For(c => c.DataVydachi).Required(false).Visible(true);
            form.For(c => c.KemVydan).Required(false).Visible(true);
            form.For(c => c.KPP).Required(false).Visible(false);
            form.For(c => c.OGRN).Required(false).Visible(false);    
            form.For(c => c.YuridicheskiyAdres).Required(false).Visible(false);
        }
         
        if (context.TipKlienta.Value == "Юр. лицо")
        {
            form.For(c => c.INN).Required(true).Visible(true);
            form.For(c => c.Seriya).Required(false).Visible(false);
            form.For(c => c.Nomer).Required(false).Visible(false);
            form.For(c => c.DataVydachi).Required(false).Visible(false);
            form.For(c => c.KemVydan).Required(false).Visible(false);
            form.For(c => c.KPP).Required(true).Visible(true);
            form.For(c => c.OGRN).Required(true).Visible(true);    
            form.For(c => c.YuridicheskiyAdres).Required(false).Visible(true);
        }
    }
    catch
    {
        form.For(c => c.INN).Required(false).Visible(false);
        form.For(c => c.Seriya).Required(false).Visible(false);
        form.For(c => c.Nomer).Required(false).Visible(false);
        form.For(c => c.DataVydachi).Required(false).Visible(false);
        form.For(c => c.KemVydan).Required(false).Visible(false);
        form.For(c => c.KPP).Required(false).Visible(false);
        form.For(c => c.OGRN).Required(false).Visible(false);    
        form.For(c => c.YuridicheskiyAdres).Required(false).Visible(false);
    }
}
Данный сценарий вызывается как при редактировании переменной Тип Клиента, так и при загрузке формы. На случай первого открытия формы, когда значение Тип Клиента не определено, подготовлена ветка catch, потому что первая же проверка вернёт ошибку пустого значения.
В зависимости от значения Тип Клиента, сценарий меняет флаги Required (обязательно к заполнению) и Visible (видимость на форме) у всех остальных переменных формы.

Прикрепленные файлы