acumatica
Отображение ошибки, требующей ввода данных объекта
Поиск…
Отображение ошибки, требующей, чтобы пользователь вводил данные сущности
Пользователи часто появляются в ситуации, когда бизнес-процесс не может быть завершен, потому что пользователь не ввел всю необходимую информацию.
Примером такой ситуации является попытка пользователя создать заказ на падение с отсутствующим адресом клиента.
В соответствии с лучшей практикой UX система должна быть дружественной к пользователю и не только информировать пользователя о ситуации, но и направлять его к разрешению его проблемы. Как известно, система уже имеет аналогичный механизм, активированный PXSetup<TSetup>.Current
когда в таблице TSetup
нет записей. Это внутренне реализовано путем выброса PXSetupNotEnteredException
.
В последнее время к этому исключению добавлена новая функциональность, которая позволяет разработчику приложения выпустить ошибку со ссылкой на объект, который необходимо перенастроить:
INSite erroneousSite = PXSelect<
INSite,
Where<
INSite.siteID, Equal<Current<SOCreateFilter.siteID>>,
And<INSite.active, Equal<True>,
And<Where<INSite.addressID, IsNull, Or<INSite.contactID, IsNull>>>>>>
.SelectSingleBound(this, new object[] { e.Row });
if (erroneousSite != null)
{
throw new PXSetupNotEnteredException<INSite, INSite.siteCD>(
Messages.WarehouseWithoutAddressAndContact,
erroneousSite.SiteCDlnk,
erroneousSite.SiteCDinf);
}
Результат отображается пользователю следующим образом:
В качестве параметра первого типа
PXSetupNotEnteredException
принимает тип объекта, к которому будет создана ссылка графика по умолчанию.Параметр второго типа обозначает ключевое поле записи, которое будет использоваться для создания ссылки. В приведенном выше примере навигация к объекту хранилища производится с помощью клавиши CD.
Первый аргумент конструктора - это строка формата сообщения об ошибке. Нумерация его внутренних заполнителей должна начинаться с 1: т
The Multiple Warehouses feature and the Transfer order type are activated in the system, in this case an address and a contact must be configured for the '{1}' warehouse.
Второй аргумент конструктора - это значение поля ключа, указанного как второй общий параметр. В этом примере будет создана ссылка, которая будет создана:
/IN204000.aspx?siteCD=erroneousSite.SiteCDlnk
.Третий аргумент конструктора - это читаемое человеком значение, которое должно отображаться в сообщении об ошибке:
...in this case an address and a contact must be configured for the 'erroneousSite.SiteCDinf' warehouse.