Как сделать свойство обязательным в зависимости от значения другого свойства
<< Click to Display Table of Contents >> Разработка > Примеры разработки > Доступность, обязательность, видимость свойств Как сделать свойство обязательным в зависимости от значения другого свойства |
Ситуация
Предположим, в компании есть процесс по выбору поставщика для закупки. Когда поставщик утвержден, начинается согласование договора.
Для выбора поставщика используется внутренний документ с типом «Заявка на закупку» (SourcingRequest). Карточка документа содержит свойства, схожие с договором: сумма, предмет сделки и др. С помощью флажка Один поставщик можно выбрать два варианта заполнения заявки: указать несколько поставщиков или только одного.
Если флажок Один поставщик (isSingle) установлен, то свойства Рекомендуемый поставщик (RecommSupplier) и Обоснование выбора (Justification) должны становиться видимыми и обязательными.
Решение
1.Изменения параметров свойств задаются в разделяемом коде. В редакторе типа документа «Заявка на закупку» (SourcingRequest) добавьте разделяемую функцию SetStatePropertiesDependSingle(), которая делает свойства Рекомендуемый поставщик (RecommSupplier) и Обоснование выбора (Justification) видимыми и обязательными.
public void SetStatePropertiesDependSingle()
{
var isSingle = _obj.IsSingle.HasValue && _obj.IsSingle.Value;
// Свойство "Рекомендуемый поставщик" сделать обязательным и видимым.
_obj.State.Properties.RecommSupplier.IsRequired = isSingle;
_obj.State.Properties.RecommSupplier.IsVisible = isSingle;
// Свойство "Обоснование выбора" сделать обязательным и видимым.
_obj.State.Properties.Justification.IsRequired = isSingle;
_obj.State.Properties.Justification.IsVisible = isSingle;
}
isSingle – свойство сущности с типом Логическое. Возможные значения: True – в карточке документа указан один поставщик, False – указано несколько поставщиков.
2.Изменение параметров свойства необходимо выполнять в событии Изменение значения свойства. Поэтому добавленную функцию вызовите в этом событии. Для этого перейдите в узел «Свойства» и выберите свойство Один поставщик (isSingle). Добавьте для него данное событие и в редакторе программного кода добавьте код:
public virtual void IsSingleChanged(Sungero.Domain.Shared.BooleanPropertyChangedEventArgs e)
{
// Свойства "Рекомендуемый поставщик" и "Обоснование выбора"
// сделать видимыми и обязательными.
Functions.SourcingRequest.SetStatePropertiesDependSingle(_obj);
// Очистить значения свойств "Рекомендуемый поставщик" и "Обоснование
// выбора", если флажок "Один поставщик" сначала был установлен,
// а затем снят.
if (e.NewValue.HasValue && !e.NewValue.Value)
{
_obj.RecommSupplier = string.Empty;
_obj.Justification = string.Empty;
}
}
3.В редакторе типа документа добавьте событие Обновление формы и напишите код:
public override void Refresh(Sungero.Presentation.FormRefreshEventArgs e)
{
base.Refresh(e);
...
Functions.SourcingRequest.SetStatePropertiesDependSingle(_obj);
}
В результате, когда пользователь устанавливает флажок Один поставщик, свойства Рекомендуемый поставщик и Обоснование выбора становятся видимыми и обязательными.
© Компания Directum, 2024 |