Acumatica 如何在自定义屏幕上实现自动生成文档编号

Acumatica 如何在自定义屏幕上实现自动生成文档编号,acumatica,Acumatica,我需要创建一个类似opportunity的屏幕,但我不知道如何为新创建的文档自动生成文档编号 我期待有人在这个问题上帮助我 我使用了以下步骤,并附上了代码以供审阅。我在保存和不生成号码时出错 我已经为文档中的备忘录创建了编号顺序 我已经为序列号设置创建了一个DAC 区域记忆秩序 我在DAC中添加了自动生成序列号 ` 在配置屏幕中,我选择了用于文档中备忘录的编号顺序 在文档中保存备忘录时,我遇到以下错误 我注意到订单号没有初始化为“新建”,而是显示“选择” 我已经看过CASetup、CMSe

我需要创建一个类似opportunity的屏幕,但我不知道如何为新创建的文档自动生成文档编号

我期待有人在这个问题上帮助我

我使用了以下步骤,并附上了代码以供审阅。我在保存和不生成号码时出错

  • 我已经为文档中的备忘录创建了编号顺序

  • 我已经为序列号设置创建了一个DAC

    区域记忆秩序
  • 我在DAC中添加了自动生成序列号

  • `

  • 在配置屏幕中,我选择了用于文档中备忘录的编号顺序
  • 在文档中保存备忘录时,我遇到以下错误

    我注意到订单号没有初始化为“新建”,而是显示“选择”


    我已经看过CASetup、CMSetup、ARSetup DAC代码,但无法找出它们之间的区别。

    如果我们想使用编号顺序,在Acumatica中它是非常直接的。您应该在某个地方有一个设置/首选项字段,用于定义将用于文档编号字段的编号顺序

    以下是使用选择器选择编号顺序的设置字段示例:

    // Setup field indicating which numbering sequence to use.
    public abstract class myNumberingID : PX.Data.IBqlField
    {
    }
    protected String _MyNumberingID;
    [PXDBString(10, IsUnicode = true)]
    [PXSelector(typeof(Numbering.numberingID), DescriptionField = typeof(Numbering.descr))]
    [PXUIField(DisplayName = "My Numbering Sequence")]
    public virtual String MyNumberingID
    {
        get
        {
            return this._MyNumberingID;
        }
        set
        {
            this._MyNumberingID = value;
        }
    }
    
    接下来,在文档编号字段中,您将使用
    AutoNumberAttribute
    将该字段定义为编号序列的使用者。下面是一个数字字段示例,该字段使用在上面的设置表中配置的已定义的数字序列(假设DAC/表“MySetup”中存在“MyNumberingID”)

    编辑:确保在构建文档的图形中,将PXSetup视图包含到设置表中

    现在,当您在包含数字字段的DAC上插入并保留新记录时,将使用下一个编号顺序值(除非编号顺序配置为手动编号,否则用户必须提供一个值)

    对于基于特定条件/字段值使用多个编号序列时更复杂的配置,可以查看
    PX.Objects.IN.INRegister.RefNbr
    以获取示例。查看
    INDocType.number
    以及它如何根据register.docType中的
    更改编号顺序(如下所示)。另一个示例是与销售订单文档相关的销售订单类型

    public class NumberingAttribute : AutoNumberAttribute
    {
        public NumberingAttribute()
            : base(typeof(INRegister.docType), typeof(INRegister.tranDate),
                new string[] { Issue, Receipt, Transfer, Adjustment, Production, Change, Disassembly },
                new Type[] { typeof(INSetup.issueNumberingID), typeof(INSetup.receiptNumberingID), typeof(INSetup.receiptNumberingID), typeof(INSetup.adjustmentNumberingID), typeof(INSetup.kitAssemblyNumberingID), typeof(INSetup.kitAssemblyNumberingID), typeof(INSetup.kitAssemblyNumberingID) }) { ; }
    }
    

    无论您想要一个简单的整数计数器还是使用掩码/分段键的更复杂的格式,方法都会有所不同。你能提供一个你想要的序列的例子吗?你能在你的问题中包括这个字段的aspx页面条目吗?我同意您应该在字段中看到“”,而不是显示的“”。此外,Acumatica中的跟踪窗口中是否有关于此错误的其他详细信息?我还假设您在输入设置信息后刷新了页面。是否在设置表的页面中包含PXSetup,以备需要?PXSetup是必需的。我已经添加了该视图,现在它正在运行以获得帮助。有没有办法生成阿拉数字?我正在浏览源代码,但无法理解。我将尝试在编号顺序中使用前缀,并尝试字母数字自动顺序编号。您应该能够在字母数字编号顺序中使用前缀。让我们知道它是如何进行的。我在生成序列号方面有问题,我将用代码详细发布。谢谢,我缺少了“确保在图形中构建文档以将PXSetup视图包含到设置表中”这句话。
    // Setup field indicating which numbering sequence to use.
    public abstract class myNumberingID : PX.Data.IBqlField
    {
    }
    protected String _MyNumberingID;
    [PXDBString(10, IsUnicode = true)]
    [PXSelector(typeof(Numbering.numberingID), DescriptionField = typeof(Numbering.descr))]
    [PXUIField(DisplayName = "My Numbering Sequence")]
    public virtual String MyNumberingID
    {
        get
        {
            return this._MyNumberingID;
        }
        set
        {
            this._MyNumberingID = value;
        }
    }
    
    // Field using the numbering sequence...
    public abstract class myNumberField : PX.Data.IBqlField
    {
    }
    protected String _MyNumberField;
    [PXDBString(15, IsUnicode = true, IsKey = true, InputMask = ">CCCCCCCCCCCCCCC")]
    [PXUIField(DisplayName = "My Number", Visibility = PXUIVisibility.SelectorVisible)]
    [AutoNumber(typeof (MySetup.myNumberingID), typeof (AccessInfo.businessDate))]
    [PXDefault]
    public virtual String MyNumberField
    {
        get
        {
            return this._MyNumberField;
        }
        set
        {
            this._MyNumberField = value;
        }
    }
    
    public class NumberingAttribute : AutoNumberAttribute
    {
        public NumberingAttribute()
            : base(typeof(INRegister.docType), typeof(INRegister.tranDate),
                new string[] { Issue, Receipt, Transfer, Adjustment, Production, Change, Disassembly },
                new Type[] { typeof(INSetup.issueNumberingID), typeof(INSetup.receiptNumberingID), typeof(INSetup.receiptNumberingID), typeof(INSetup.adjustmentNumberingID), typeof(INSetup.kitAssemblyNumberingID), typeof(INSetup.kitAssemblyNumberingID), typeof(INSetup.kitAssemblyNumberingID) }) { ; }
    }