Извлекать только товары, которые имеют тип Non-Stock Item в поле inventoryID

#acumatica #acumatica-kb

#acumatica #acumatica-кб

Вопрос:

Я работаю с экранами счетов, заметок и счетов, и мне нужно отфильтровать товары, которые относятся к типу Non-Stock Item.

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

На обоих экранах они используют один и тот же атрибут для поля inventoryID.

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

Я не уверен, нужно ли мне настраивать атрибут ARTranInventoryItem для извлечения только элементов типа Non-Stock Item.

Можете ли вы помочь мне с этим?

Ответ №1:

Если вы измените раскрывающийся список «Настроить атрибут» на «Добавить к оригиналу«, вы можете добавить PXRestrictor. Если вы хотите всегда ограничиваться не-запасными элементами, тогда PXRestrictor просто:

 [PXRestrictor(typeof(Where<InventoryItem.itemType, Equal<INItemTypes.nonStockItem>>), "Non-Stock Only")]
 

Вы также можете сделать это в расширении graph, используя Cache_Attached:

 #region ARTran_InventoryID_CacheAttached
[PXMergeAttributes(Method = MergeMethod.Append)]
[PXRestrictor(typeof(Where<InventoryItem.itemType, Equal<INItemTypes.nonStockItem>>), "Non-Stock Only")]
protected virtual void ARTran_InventoryID_CacheAttached(PXCache sender) { }
#endregion
 

Комментарии:

1. Отлично, как всегда, это работает, спасибо за вашу помощь. @BrianStevens

2. Это был один из тех потрясающих моментов, когда я изучил эту технику! Рад, что это работает для вас. Вы можете складывать несколько атрибутов PXRestrictor, но помните, что каждый из них будет ограничивать результаты независимо. У меня нет под рукой примера кода, но я делал их раньше, когда мне нужно было что-то вроде «если это, то ограничить таким образом — если это, то ограничить таким образом». PXRestrictor спас меня от некоторых серьезных (и ненужных) перезаписей. Найдите PXRestrictor в репозитории кода для примеров, и, вероятно, вы найдете пример, соответствующий любым потребностям.

3. По-видимому, PXRestrictor PXRestrictor потрясающий, я изучу это подробнее.