Acumatica - Требовать, чтобы поле в расширении настройки не было пустым

У меня есть установочное расширение DAC, которое определяет значение по умолчанию для поля SOOrder. Мне нужно, чтобы это поле не было нулевым, прежде чем пользователь сможет использовать форму заказов на продажу. Я знаю, как добиться этого с помощью настраиваемого ЦАП с помощью атрибута PXPrimaryGraphAttribute на ЦАП, но я не уверен, как добиться этого с помощью расширения ЦАП. Я хочу, чтобы форма заказов на продажу выглядела так, когда мое настраиваемое поле настройки имеет значение NULL:

введите описание изображения здесь

Вот мое расширение ЦАП:

    public sealed class SOSetupExt : PXCacheExtension<SOSetup>
    {
        [SalesPerson(DisplayName = "Enabled Default Salesperson", Required = true)]
        public int? UsrEnabledDefaultSalesperson { get; set; }
        public abstract class usrEnabledDefaultSalesperson : PX.Data.BQL.BqlInt.Field<usrEnabledDefaultSalesperson> { }
    }

person user10605996    schedule 08.04.2021    source источник


Ответы (1)


Проверьте поле с помощью обработчика событий расширения графа и выбросите PXSetupNotEnteredException исключение:

throw new PXSetupNotEnteredException(ErrorMessages.SetupNotEntered, typeof(SOSetup), typeof(SOSetup).Name);
person Hugues Beauséjour    schedule 09.04.2021
comment
Это правильно вызывает ошибку, но как сделать так, чтобы ссылка переходила к форме предпочтений заказов на продажу? Прямо сейчас он возвращается к форме заказов на продажу, когда я нажимаю на нее. - person user10605996; 13.04.2021
comment
Вы можете попытаться создать экземпляр графа SOSetupMaint, а затем выбросить исключение PXRedirectRequiredException с этим объектом графа в параметре. - person Hugues Beauséjour; 14.04.2021
comment
Я уже пробовал этот метод, но вы не можете создать экземпляр графа в обработчике событий. - person user10605996; 14.04.2021
comment
Создание экземпляра графа должно работать в этом контексте: PXGraph.CreateInstance ‹SOSetupMaint› () - person Hugues Beauséjour; 14.04.2021
comment
Это вызывает ошибку Acuminator - PX1045: экземпляр PXGraph не может быть создан в обработчике событий. - person user10605996; 14.04.2021
comment
Акуминатор - линтер. Это не ошибка компиляции. Я не знаю, какой у вас точный код и настройки IDE, но могу сказать, что график, созданный в обработчиках событий, находится во всей кодовой базе Acumatica. Определенно не то, что нельзя сделать. - person Hugues Beauséjour; 14.04.2021
comment
Если вас это сильно беспокоит, вставьте другой метод .. - person Hugues Beauséjour; 14.04.2021
comment
Еще одна возможность - перенаправление на объект SOSetup DAC. Также возможно перенаправление с помощью идентификатора экрана, но это нечасто. Перенаправление графа является наиболее распространенным. - person Hugues Beauséjour; 14.04.2021