Я пытаюсь добавить поле Alternate ID в селектор поиска в сетке SOLine details. Мой код выглядит следующим образом:Добавить поле альтернативного идентификатора в селектор идентификатора инвентаря на SOLine grid
[PXNonInstantiatedExtension]
public class SO_SOLine_ExistingColumn : PXCacheExtension<PX.Objects.SO.SOLine>
{
#region InventoryID
[PXMergeAttributes(Method = MergeMethod.Append)]
[PXSelector(typeof(Search2<InventoryItem.inventoryCD, LeftJoin<INItemXRef, On<InventoryItem.inventoryID, Equal<INItemXRef.inventoryID>>>>),
typeof(PX.Objects.IN.InventoryItem.inventoryCD),
typeof(PX.Objects.IN.INItemXRef.alternateID),
typeof(PX.Objects.IN.InventoryItem.descr),
typeof(PX.Objects.IN.InventoryItem.itemClassID),
typeof(PX.Objects.IN.InventoryItem.itemStatus),
typeof(PX.Objects.IN.InventoryItem.itemType),
typeof(PX.Objects.IN.InventoryItem.baseUnit),
typeof(PX.Objects.IN.InventoryItem.salesUnit),
typeof(PX.Objects.IN.InventoryItem.purchaseUnit),
typeof(PX.Objects.IN.InventoryItem.basePrice))]
public int? InventoryID { get; set; }
#endregion
}
public void SOLine_InventoryID_CacheAttached(PXCache sender)
{
}
Это добавляет Alternate поля идентификатора к селектору и кратко, возможно, в течение секунды, возвращает правильный Inventory компакт-диск, когда выбрано, но затем Инвентарный компакт изменяет целое число ID, которое, конечно, повышает индикатор ошибки, поскольку идентификатор не распознается.
Спасибо вам за ответы. Patrick - ключ-заменитель возвращает правильный InventoryCD, но затем я получаю сообщение об ошибке, поскольку InventoryID не существует в системе. Руслан - Для целей моих клиентов мне нужно, чтобы InventoryID повторялся с отдельным AlternateID для каждой записи в селекторе. Я неоднократно пытался, но, как я уверен, вы уже знаете, я не смог изменить код, который вы предоставили, чтобы сделать это. – GeorgeM
Джордж, ваша первоначальная попытка (даже если она обновлена в соответствии с предложением Патрика) не работает из-за дублированный PXSelectorAttribute. На самом деле не совсем правильно декорировать InventoryID с помощью PXSelectorAttribute из-за того, что CD Inventory является сегментированным ключом - для сегментированных ключей разрешен только PXDimensionSelectorAttribute. – RuslanDev
Дополнительный комментарий: повторение InventoryID с отдельным AlternateID для каждой записи в селекторе не позволит вам достичь ожидаемых результатов и будет только путать пользователей, поскольку селектор всегда выделяет сначала обнаруженный CD-диск Inventory, несмотря на выбранный AlternateID. Создание настраиваемого поля селектора против ЦАП INItemXRef и заполнение идентификатора Inventory в коде также не представляется возможным: InventoryID является одним из 5! которые определены для ЦАП INItemXRef.Предлагаемое ранее решение представляется единственным приемлемым вариантом, чтобы как можно ближе подойти к тому, что запрашивал клиент. – RuslanDev