Как использовать PXSelect, чтобы получить пользовательское поле?(Ака экст поля) - PullRequest
0 голосов
/ 30 ноября 2018

Я добавил несколько полей в таблицу предметов.Мне нужно иметь возможность ссылаться на эти поля из кода при обновлении SOLine.

У меня есть PXSelect, который работает правильно, и получает InventoryItem, но, очевидно, я должен быть в разделе Ext (AKA, верните InventoryItemExt), но я не совсем понимаю, как заставить PXSelect сделать это.

Это возвращает нужный мне элемент:

      InventoryItem iiTheItem = PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<InventoryItem.inventoryID>>>>.Select(Base, row.InventoryID);

Но здесь не получается:

dQPI = Convert.ToDecimal(iiTheItemExt.UsrLbsPerInch);

Если я создаю переменную как ext, она работает с синтаксисом, но, очевидно, ничего не загружает.

InventoryItemExt iiTheItemExt = null;
dQPI = Convert.ToDecimal(iiTheItemExt.UsrLbsPerInch);

Как связать PXSelect и нужный мне класс?Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

PXSelect в порядке, как есть.Вам необходимо вызвать метод GetExtension с базовой записью DAC, чтобы получить ссылку на расширение DAC.

Вот несколько примеров использования:

InventoryItemExt iiTheItemExt = iiTheItem.GetExtension<InventoryItemExt>();
InventoryItemExt iiTheItemExt = Base.Caches[typeof(InventoryItem)].GetExtension<InventoryItemExt>(iiTheItem);
0 голосов
/ 30 ноября 2018

Если ваше расширение называется InventoryItemExt ...

 InventoryItemExt itemext = PXCache<InventoryItem>.GetExtension<InventoryItemExt>(iiTheItem );
0 голосов
/ 30 ноября 2018

Ниже приведен пример кода, который извлекает InventoryItem на основе указанного критерия, возвращает его и затем обращается к объявленному расширению.

            InventoryItemExtension itemExt;
            InventoryItem item = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD, Equal<Required<InventoryItem.inventoryCD>>>>.Select(this.Base, new object[] { "TEST" });
            if(item != null)
            {
                itemExt = PXCache<InventoryItem>.GetExtension<InventoryItemExtension>(item);
                decimal? dQPI = Convert.ToDecimal(itemExt.UsrLbsPerInch);
            }
...