【问题标题】:Acumatica Numbering Sequence - cant default to the new symbolAcumatica 编号序列 - 不能默认为新符号
【发布时间】:2018-08-01 22:57:09
【问题描述】:

我有一个自定义表格,用于在固定资产中存储可维修的组件。使用 AssetMaint 屏幕上的网格访问该列表。

我设置了一个 ID 字段以使用编号顺序填充。我不确定如何设置默认值,因此该字段默认填充“”,然后在保存组件时按编号顺序更新。

这有点工作,但有一些问题。当我单击添加按钮时,ID 字段为空白,但当我再次单击添加时,它会填充“”符号。但是,如果我在点击保存之前添加第三条记录,则第二条记录不会填充“”。第二条记录也没有保存,除非我在 ID 字段中手动输入“”。

这是组件表的 DAC 的一部分:

 [Serializable]
public class FAServiceComponent : IBqlTable
{
    #region AssetID
    public abstract class assetID : IBqlField { }
    [PXDBInt(IsKey = true)]
    [PXDBDefault(typeof(FixedAsset.assetID), DefaultForUpdate = false)]
    [PXParent(typeof(Select<FixedAsset, Where<FixedAsset.assetID, Equal<Current<FAServiceComponent.assetID>>>>))]
    [PXUIField(DisplayName = "Asset ID", Visible = false, Enabled = false)]
    public virtual int? AssetID { get; set; }
    #endregion

    #region serviceComponentID
    public abstract class serviceComponentID : IBqlField { }
    [PXDBString(30, IsKey = true, IsUnicode = true)]
    [PXUIField(DisplayName = "Component ID")]
    [PXDefault(typeof(Search2<Numbering.newSymbol, 
        InnerJoin<FixedAsset, On<FixedAssetExt.usrServiceComponentNumberingSeq, Equal<Numbering.numberingID>, And<FixedAsset.assetID, Equal<Current<FixedAsset.classID>>>>>>))]
    [Numbering]
    public virtual string ServiceComponentID { get; set; }
    #endregion

    #region serviceComponentDescription
    public abstract class description : IBqlField { }
    [PXDBString(255)]
    [PXUIField(DisplayName = "Description")]
    [PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
    public virtual string Description { get; set; }
    #endregion

    public class NumberingAttribute : AutoNumberAttribute
    {
        public NumberingAttribute(): 
            base(typeof(Search<FixedAssetExt.usrServiceComponentNumberingSeq, Where<FixedAsset.assetID, Equal<Current<FixedAsset.classID>>>>), 
                 typeof(AccessInfo.businessDate)) {; }
    }
}

【问题讨论】:

  • 页面上有 InitNewRow="true" 吗? (像这样进入 PXGrid 内部...
  • ~是的,我已经启用了这个功能~我现在就启用了。我在发完这篇文章后启用了它。 在现在创建记录时填充,但如果我不在记录之间保存,我仍然会遇到第二条记录不填充的问题。

标签: acumatica


【解决方案1】:

Acumatica Open University 上查看 T200 课程。第 4 部分第 8 课向您展示如何使用 AutoNumberAttribute。

我首先建议删除以下代码,因为不需要使 符号起作用。

[PXDefault(typeof(Search2<Numbering.newSymbol, 
        InnerJoin<FixedAsset, On<FixedAssetExt.usrServiceComponentNumberingSeq, Equal<Numbering.numberingID>, And<FixedAsset.assetID, Equal<Current<FixedAsset.classID>>>>>>))]

您应该有一个设置屏幕,您可以在其中选择要使用的编号顺序。例如,Sales Orders Preferences 屏幕 (SO101000) 有 Shipment Numbering Sequence 字段,绑定到SOSetup.ShipmentNumberingID

在您的图表中,确保您有设置数据视图,例如public PXSetup&lt;Setup&gt; AutoNumSetup;。 PXSetup DAC 应该与您的设置屏幕匹配,例如PXSetup&lt;SOSetup&gt; ShipmentSetup

在您的 DAC 中,编号字段应具有引用设置表的 AutoNumberAttribute。例如

[AutoNumber(typeof(SOSetup.ShipmentNumberingID), typeof(SOShipment.shipDate))]

在编号顺序屏幕 (CS201010) 中,确保未选中 手动编号,并且您为正在使用的编号顺序设置了 新编号符号

【讨论】:

  • 感谢有关 [PXDefault] 属性的提示。我在 FixedAsset 用户字段中定义了编号 ID。我已经把它换成了你的方法,因为它更简单一些。清除 [PXDefault] 位后,该字段的填充速度更快。我仍然遇到只有第一个 填充的问题。如果我在不保存第一条记录的情况下添加第二条记录,则第二条 不会填充。
猜你喜欢
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2022-01-03
相关资源
最近更新 更多