Acumatica: поля в расширении стали невидимыми после обновления Acumatica Framework 20.101.32.42 - PullRequest
0 голосов
/ 22 апреля 2020

У нас есть класс расширения MPCSCalendar : PXCacheExtension<CSCalendar>, который имеет поля:

    #region MonUnpaidTime
    public abstract class monUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? MonUnpaidTime { get; set; }
    #endregion

    #region TueUnpaidTime
    public abstract class tueUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? TueUnpaidTime { get; set; }
    #endregion

    #region WedUnpaidTime
    public abstract class wedUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? WedUnpaidTime { get; set; }
    #endregion

    #region ThuUnpaidTime
    public abstract class thuUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? ThuUnpaidTime { get; set; }
    #endregion

    #region FriUnpaidTime
    public abstract class friUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? FriUnpaidTime { get; set; }
    #endregion

    #region SatUnpaidTime
    public abstract class satUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? SatUnpaidTime { get; set; }
    #endregion

    #region SunUnpaidTime
    public abstract class sunUnpaidTime : PX.Data.IBqlField
    {
    }
    [PXDBInt]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? SunUnpaidTime { get; set; }
    #endregion

Эти поля не существовали в родительском классе CSCalendar до обновления. После обновления CSCalendar имеет следующие поля: enter image description here Представление выглядело так до обновления: enter image description here Как это выглядит сейчас: enter image description here Колонки «Неоплаченный перерыв» теперь рассеяны. Нет исключений.

В ASPX до обновления мы использовали эти поля с px:PXTimeSpan:

<px:PXTimeSpan CommitChanges="True" ID="edSunUnpaidTime" runat="server" DataField="SunUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />
                <px:PXTimeSpan CommitChanges="True" ID="edMonUnpaidTime" runat="server" DataField="MonUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />
                <px:PXTimeSpan CommitChanges="True" ID="edTueUnpaidTime" runat="server" DataField="TueUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />
                <px:PXTimeSpan CommitChanges="True" ID="edWedUnpaidTime" runat="server" DataField="WedUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />
                <px:PXTimeSpan CommitChanges="True" ID="edThuUnpaidTime" runat="server" DataField="ThuUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />
                <px:PXTimeSpan CommitChanges="True" ID="edFriUnpaidTime" runat="server" DataField="FriUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />
                <px:PXTimeSpan CommitChanges="True" ID="edSatUnpaidTime" runat="server" DataField="SatUnpaidTime" InputMask="hh:mm" SuppressLabel="True" />

Теперь в Acumatica ASPX-файле эти поля используются px:PXMaskEdit:

 <px:PXMaskEdit Size="s" ID="edSunUnpaidTime" runat="server" DataField="SunUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />
                    <px:PXMaskEdit Size="s" ID="edMonUnpaidTime" runat="server" DataField="MonUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />
                    <px:PXMaskEdit Size="s" ID="edTueUnpaidTime" runat="server" DataField="TueUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />
                    <px:PXMaskEdit Size="s" ID="edWedUnpaidTime" runat="server" DataField="WedUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />
                    <px:PXMaskEdit Size="s" ID="edThuUnpaidTime" runat="server" DataField="ThuUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />
                    <px:PXMaskEdit Size="s" ID="edFriUnpaidTime" runat="server" DataField="FriUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />
                    <px:PXMaskEdit Size="s" ID="edSatUnpaidTime" runat="server" DataField="SatUnpaidTime" SuppressLabel="True" Width="48" CommitChanges="true" />

Интуиция говорит мне, что мне нужно удалить поля с тем же именем из расширения и использовать мои поля Acumatica из CSCalendar, но это не работает, и эти поля невидимы. Другое решение состоит в том, чтобы переименовать мои XXXUnpaidTime в XXXUnpaidTime1 и создать мои собственные поля, это будет работать, я полагаю, но я не верю, что это правильное решение.

Подтверждаю: когда я переименовал эти поля в расширении - проблема разрешилась:

   #region MonUnpaidTime
    public abstract class monUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? MonUnpaidTimeAp { get; set; }
    #endregion

    #region TueUnpaidTime
    public abstract class tueUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? TueUnpaidTimeAp { get; set; }
    #endregion

    #region WedUnpaidTime
    public abstract class wedUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? WedUnpaidTimeAp { get; set; }
    #endregion

    #region ThuUnpaidTime
    public abstract class thuUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? ThuUnpaidTimeAp { get; set; }
    #endregion

    #region FriUnpaidTime
    public abstract class friUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? FriUnpaidTimeAp { get; set; }
    #endregion

    #region SatUnpaidTime
    public abstract class satUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? SatUnpaidTimeAp { get; set; }
    #endregion

    #region SunUnpaidTime
    public abstract class sunUnpaidTimeAp : PX.Data.IBqlField
    {
    }
    [PXDBInt()]
    [PXUIField(DisplayName = "Unpaid Break Time")]
    public virtual int? SunUnpaidTimeAp { get; set; }
    #endregion

enter image description here

Но я надеваю Мне не нравится это решение.

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

Буду благодарен за любую помощь или совет!

...