Атрибут
CRAttributesField
создаст запрос с универсальным типом (classIdField), указанным в его параметре.В вашем случае это будет AATag.myClassID
:
protected static Type GetAttributesSearchCommand(Type classIdField)
{
var cmd = BqlCommand.Compose(typeof (Search2<,,>), typeof (CSAttribute.attributeID),
typeof (InnerJoin<,>), typeof (CSAttributeGroup),
typeof (On<,>), typeof (CSAttributeGroup.attributeID), typeof (Equal<>),
typeof (CSAttribute.attributeID),
typeof(Where<,,>), typeof(CSAttributeGroup.entityType), typeof(Equal<>), typeof(Required<>), typeof(CSAttributeGroup.entityType),
typeof (And<,>), typeof (CSAttributeGroup.entityClassID), typeof (Equal<>), typeof (Current<>),
classIdField);
return cmd;
}
Таким образом, ключевая часть запроса where будет:
And<CSAttributeGroup.entityClassID, Equal<Current<AATag.myClassID>>>
Это означает, что у вас должна быть текущая запись AATag впамять:
Caches[typeof(AATag)].Current
Я предлагаю вам сначала проследить значение (Справка-> Окно трассировки), чтобы проверить, что оно не равно нулю:
public void AATag_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
if (e.Row is AATag)
{
PXTrace.WriteInformation(((AATag)e.Row).myClassID);
}
}
Если оно равно нулю, вам нужно присоединитьсяAATag в соответствующем DataView (предпочтительно) или установить его явно в некоторых событиях.Использование Acumatica Request Profiler (SM205070) также может помочь определить, почему запрос не возвращает ни одной записи.