Как считать записи в связанной таблице и разрешать переопределение пользователем - PullRequest
0 голосов
/ 31 января 2019

У меня есть настраиваемое поле в таблице CRActivity, в котором мне нужно сохранить количество записей в связанной таблице.Я пытаюсь установить в поле значение, когда открывается экран CR306030.Пользователь должен иметь возможность переопределить вычисленное число, поэтому я думаю, что мне нужна логика в вычислениях, чтобы проверить, является ли настраиваемое поле> 0, в этом случае не заполняйте настраиваемое поле и предполагайте, что оно уже былозадавать.

Ранее я пытался сделать это в событиях Field_Selecting, но это не работает.Я думаю, что я мог бы использовать атрибут PXFormula.Любые предложения?

Я пытался создать пользовательский атрибут, который близок, но он не будет сохранять значения в БД.Кнопка «Сохранить» позволяет, я могу нажать на нее, и похоже, что она сохраняет, но без игры в кости.Я уверен, что некоторые мелкие детали .....

Вот мой пользовательский атрибут:

public class CFCountIfZeroAttribute : PXIntAttribute
{
    public override void FieldSelecting(PXCache cache, PXFieldSelectingEventArgs e)
    {
        if (e.Row == null)
            return;

        CRActivity activity = (CRActivity)e.Row;
        CRActivityExt activityExt = activity.GetExtension<CRActivityExt>();
        if (activityExt.usrCustomField <= 0)
        {
                int aggregateValue = BQLToFind();
                e.ReturnValue = aggregateValue;
                cache.SetValue<CRActivityExt.usrCustomField>(e.Row, aggregateValue);
                cache.IsDirty = true;

        }
    }


}

Спасибо!

1 Ответ

0 голосов
/ 04 февраля 2019

Не думаю, что я когда-либо делал подсчет в PXFormula, но что, если вы создали пользовательский атрибут?

[DBUIInt()]
[EditableCount()]
public virtual int? CountField

public class EditableCountAttribute
{
    public override void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e)
    {
        if (e.Row != null)
        {
            //if CountField is 0, lookup the count from another table
        }
    }
}

Это только началомоя голова.Вы можете передать поле, которое вы считаете, в атрибут, если вы хотите сделать это в другом месте.

...