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

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

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

form.For(c => c.INN).Visible(true)
где:
  • c => c.INN – лямбда-функция c переменной контекста INN;
  • true – логический флаг (true или false).
 
Рассмотрим пример сценария, практически полностью меняющего карточку задачи при выборе того или иного типа контрагента.
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 (видимость на форме) у всех остальных переменных формы.
 

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