Изменить сортировку по умолчанию на вкладке "Действия в контакте" - PullRequest
0 голосов
/ 15 февраля 2019

На вкладке «Действия» на экране «Контакты» я извлекаю данные о деятельности из внешнего источника и создаю соответствующие операции Acumatica.Это создание деятельности представляет собой периодически запланированный процесс, поэтому действия не создаются в режиме реального времени.Поэтому поле CreatedDateTime для внешних действий не отражает фактического времени, когда эти действия произошли.

Однако мне нужно, чтобы эти внешние действия были отсортированы в соответствии с тем, когда они действительно произошли (не в соответствии с тем, когда они были созданы в Acuamtica), и чтобы они отображались в правильной последовательности относительно существующих действий Acuamtica.Но представление «Действия» для графика «Контакты» отсортировано по CreatedDateTime, поэтому эти действия отображаются в соответствии с временем создания Acuamtica, а не с фактическим временем.

Я могу думать о двух возможных решениях, но я не вижу способа достичь ни одного из них.

1.Установите в поле CRActivity.CreatedDateTime фактическое время активности. Если бы мы могли установить время создания даты как фактическое время действия, порядок сортировки по умолчанию на вкладке «Действия» правильно отображал бы внешние действия в последовательностикогда они действительно произошли.Однако это поле является системным полем по умолчанию, и я не вижу хорошего способа заставить его быть чем-то другим, кроме времени сохранения объекта Acumatica.Есть ли способ указать значение для поля CreatedDateTime?

2.Измените порядок сортировки по умолчанию на вкладке «Действия». Мы можем установить StartDate новых действий в качестве фактического времени их возникновения.Поэтому, если бы мы могли упорядочить сетку действий по дате начала, а не по дате создания, это также обеспечило бы желаемый эффект.Если бы представление Activity было простым PXSelect, мы могли бы просто создать новый оператор PXSelect с порядком, который мы хотим в нашем расширении графа, и использовать его в качестве элемента данных для сетки.Однако представление «Действия» не является простым, и OrderBy скрыт внутри метода GenerateOriginalCommand класса CRActivityListBase.Есть ли способ переопределить этот OrderBy таким образом, чтобы использовать все функции CRActivityListBase?

Есть ли приемлемый способ использования любого из этих подходов или есть альтернативный подход, который бы отображал действия, отсортированные по фактическому времени?

1 Ответ

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

Вы можете заменить сортировку, используя OrderByNew, как показано ниже.

public class ContactMaintPXExt : PXGraphExtension<ContactMaint>
{
    public override void Initialize()
    {
        Base.Activities.OrderByNew<OrderBy<Desc<CRActivity.startDate>>>();
    }
}
...