У нас есть класс расширения 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
имеет следующие поля: Представление выглядело так до обновления: Как это выглядит сейчас: Колонки «Неоплаченный перерыв» теперь рассеяны. Нет исключений.
В 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
Но я надеваю Мне не нравится это решение.
Мне кажется, что Acumatica внедрила функцию UnpaidTime для своих клиентов, и это должно быть стандартным решением для такой ситуации, когда я, клиенты платформы, должен разделить существующее расширение с новым решением Acumatica той же проблемы. , Должно быть правильное, стандартное и элегантное решение.
Буду благодарен за любую помощь или совет!