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



