在Acumatica中使用PXAction创建新项目的问题

在Acumatica中使用PXAction创建新项目的问题,acumatica,Acumatica,我在使用PXAction在Acumatica中创建新项目时遇到一个问题,非常感谢您的帮助 我在T200文档中的Acumatica官方文档示例“示例8.2:创建自定义自动编号属性”之后,在我的“文档”DAC中为“DocumentNbr”字段添加了自定义自动增量属性,如下所示 以下是“DocumentNbr”字段属性设置的代码片段: #地区文档br 受保护字符串_DocumentNbr; [PXDBString(15,IsUnicode=true,IsKey=true,InputMask=“>CC

我在使用PXAction在Acumatica中创建新项目时遇到一个问题,非常感谢您的帮助

我在T200文档中的Acumatica官方文档示例“示例8.2:创建自定义自动编号属性”之后,在我的“文档”DAC中为“DocumentNbr”字段添加了自定义自动增量属性,如下所示

以下是“DocumentNbr”字段属性设置的代码片段:

#地区文档br
受保护字符串_DocumentNbr;
[PXDBString(15,IsUnicode=true,IsKey=true,InputMask=“>CCCC”)]
[PX选择器(类型)(搜索),
类型(MABUIPDocument.文件编号),
类型(MABUIPDocument.documentDate),
类型(MABUIPDocument.status),
类型(MABUIPDocument.vendorID)
)]
[自动编号(typeof(MABUIPSetup.autoDocumentNbr),typeof(MABUIPSetup.lastDocumentNbr))]
[PXDefault()]
[PXUIField(DisplayName=“ID”)]
公共字符串文档
{
得到
{
归还此文件。\u文件nbr;
}
设置{this.\u DocumentNbr=value;}
}
公共类文档nbr:IBqlField{}
#端区
我可以正常添加、编辑和删除文档,工作正常,如下所示:

我有一个在点击按钮时创建一个新项目的需求,所以我创建了“测试创建新项目”按钮,包括如下创建新项目逻辑,据我所知,它将在点击“测试创建新项目”按钮后显示创建的项目

public px action btincreatingnew;
[PXButton(CommitChanges=true)]
[PXUIField(DisplayName=“testcreatingnewitem”,Visible=true)]
受保护的虚拟void btnCreatingNew()
{
MABUIPDocument行=文件。当前;
row.DocumentDesc=“Test”+DateTime.Now.ToString();
行=文档。更新(行);
操作。按Save();
}
实际情况是,虽然新行已插入到数据库中,并且如果单击“下一步”箭头将出现,但在单击按钮后,当前视图的表单内容被清除,我尝试了许多方法,如设置“Document.current=row”和“sender.SetValue(row,fieldName,fieldNewValue)”但无论我尝试了什么,单击按钮后内容一直保持空白。你能告诉我是什么原因导致了这个问题吗?多谢各位


因为只有在数据库中保存新文档时才会生成ID值,因此您必须相应地使用数据库中保存的实际ID值更新PXAdapter搜索集合:

public PXAction<MABUIPDocument> BtnCreatingNew;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Test Creating new item", Visible = true)]
protected virtual IEnumerable btnCreatingNew(PXAdapter adapter)
{
    MABUIPDocument row = Documents.Current;
    row.DocumentDesc = "Test" + DateTime.Now.ToString();
    row = Documents.Update(row);
    Actions.PressSave();

    adapter.Searches[adapter.Searches.Length - 1] = row.DocumentNbr;
    return adapter.Get();
}
public px action btincreatingnew;
[PXButton(CommitChanges=true)]
[PXUIField(DisplayName=“testcreatingnewitem”,Visible=true)]
受保护的虚拟IEnumerable btnCreatingNew(PXAdapter适配器)
{
MABUIPDocument行=文件。当前;
row.DocumentDesc=“Test”+DateTime.Now.ToString();
行=文档。更新(行);
操作。按Save();
adapter.Searches[adapter.Searches.Length-1]=row.DocumentNbr;
返回适配器Get();
}

由于您的ID值仅在新文档保存在数据库中时生成,因此您必须相应地使用保存在数据库中的实际ID值更新PXAdapter搜索集合:

public PXAction<MABUIPDocument> BtnCreatingNew;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Test Creating new item", Visible = true)]
protected virtual IEnumerable btnCreatingNew(PXAdapter adapter)
{
    MABUIPDocument row = Documents.Current;
    row.DocumentDesc = "Test" + DateTime.Now.ToString();
    row = Documents.Update(row);
    Actions.PressSave();

    adapter.Searches[adapter.Searches.Length - 1] = row.DocumentNbr;
    return adapter.Get();
}
public px action btincreatingnew;
[PXButton(CommitChanges=true)]
[PXUIField(DisplayName=“testcreatingnewitem”,Visible=true)]
受保护的虚拟IEnumerable btnCreatingNew(PXAdapter适配器)
{
MABUIPDocument行=文件。当前;
row.DocumentDesc=“Test”+DateTime.Now.ToString();
行=文档。更新(行);
操作。按Save();
adapter.Searches[adapter.Searches.Length-1]=row.DocumentNbr;
返回适配器Get();
}

Hi@RuslanDev,非常感谢,它工作得非常好!我可以知道我在哪里可以装备相关的知识吗?我检查了所有Acumatica文档T100、T200、T300,没有任何地方可以介绍它。嗨@ukalpa,我认为文档中没有介绍这种方法。嗨@RuslanDev,谢谢你的回复,所以下次出现另一个问题时我不得不再次打扰你和StackOverflow…:)嗨@RuslanDev,非常感谢,它工作得很好!我可以知道我在哪里可以装备相关的知识吗?我检查了所有Acumatica文档T100、T200、T300,没有任何地方可以介绍它。嗨@ukalpa,我认为文档中没有介绍这种方法。嗨@RuslanDev,谢谢你的回复,所以下次出现另一个问题时,我不得不再次打扰你和StackOverflow…:)
public PXAction<MABUIPDocument> BtnCreatingNew;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Test Creating new item", Visible = true)]
protected virtual IEnumerable btnCreatingNew(PXAdapter adapter)
{
    MABUIPDocument row = Documents.Current;
    row.DocumentDesc = "Test" + DateTime.Now.ToString();
    row = Documents.Update(row);
    Actions.PressSave();

    adapter.Searches[adapter.Searches.Length - 1] = row.DocumentNbr;
    return adapter.Get();
}