Изменить значение фильтра по умолчанию / Предотвратить базовый граф обработчик _FieldDefaulting - PullRequest
0 голосов
/ 01 апреля 2020

Можно ли каким-либо образом изменить значение даты начала по умолчанию для запроса «История транзакций инвентаризации»? Просматривая график базового запроса, он устанавливает значение по умолчанию с помощью обработчика событий ...

    protected virtual void InventoryTranHistEnqFilter_StartDate_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
    {
        if (true)
        {
            DateTime businessDate = (DateTime)this.Accessinfo.BusinessDate;
            e.NewValue = new DateTime(businessDate.Year, businessDate.Month, 01);
            e.Cancel = true;
        }
    }

Написание расширения графа, реализация того же события и установка e.NewValue, по-видимому, происходит перед обработчиком базового графа, поэтому наш в фильтре не установлено значение по умолчанию.

using System;
using PX.Data;

namespace PX.Objects.IN
{
    public class InventoryTranHistEnq_Extension : PXGraphExtension<InventoryTranHistEnq>
    {
        #region Event Handlers

        protected virtual void InventoryTranHistEnqFilter_StartDate_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
        {
            DateTime businessDate = (DateTime)this.Base.Accessinfo.BusinessDate;
            e.NewValue = new DateTime(businessDate.Year - 1, businessDate.Month, 01);
            e.Cancel = true;
        }

        #endregion
    }
}

1 Ответ

1 голос
/ 01 апреля 2020

Вам необходимо определить обработчик события с дополнительным параметром, как показано ниже. В таком случае платформа будет вызывать обработчик событий со ссылкой на обработчик событий из расширения предыдущего уровня, если такой обработчик событий существует, или на первый элемент в коллекции обработчиков событий. И в вашем расширении графа вы можете реализовать базовую логику c, которая будет выполняться до или после кода расширения. В вашем случае вы бы пропустили вызов предыдущего уровня.

public class InventoryTranHistEnq_Extension : PXGraphExtension<InventoryTranHistEnq>
{
    protected virtual void InventoryTranHistEnqFilter_StartDate_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e, PXFieldDefaulting BaseInvoke)
    {
        //If you want to execute code of base Graph or of previous level Graph extension
        //if (BaseInvoke != null) { BaseInvoke(sender, e); }

        //Your code
        DateTime businessDate = (DateTime)this.Base.Accessinfo.BusinessDate;
        e.NewValue = new DateTime(businessDate.Year - 1, businessDate.Month, 01);
        e.Cancel = true;
    }
}

Вы можете сослаться на Добавление или изменение BL C Обработчики событий Справочная статья.

...