Динамические формы задач БП: Флаги переменных
У переменных на форме существует несколько флагов, обозначающих правила их демонстрации на форме задачи:
- 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 (видимость на форме) у всех остальных переменных формы.