Acumatica 从VendorMaint图形添加时,附件会覆盖现有附件

Acumatica 从VendorMaint图形添加时,附件会覆盖现有附件,acumatica,Acumatica,我正在将第三方应用程序中的数据和文档导入Acumatica 导入后,我将使用下面的代码和附件动态创建供应商 VendorMaint graph = PXGraph.CreateInstance<VendorMaint>(); VendorR row1 = null; row1 = new VendorR(); row1.AcctName = VendorName; row1.NoteID = noteid; // Existing - GUID created while

我正在将第三方应用程序中的数据和文档导入Acumatica

导入后,我将使用下面的代码和附件动态创建供应商

VendorMaint graph = PXGraph.CreateInstance<VendorMaint>();
VendorR row1 = null;
row1 = new VendorR();
row1.AcctName = VendorName;
row1.NoteID = noteid;      // Existing - GUID created while importing
graph.BAccount.Update(row1);
VendorMaint-graph=PXGraph.CreateInstance();
VendorR行1=null;
第1行=新供应商();
row1.AcctName=VendorName;
row1.NoteID=NoteID;//现有-导入时创建的GUID
graph.BAccount.Update(第1行);
如果附件已经存在,那么它应该更新而不是复制

在这种情况下,如果供应商已经存在并附加了文件,则“我的代码”将覆盖这些附件,并删除附加到该现有供应商的所有以前的文件


我想添加附件,而不是覆盖现有附件。有什么建议吗?

尝试使用插入视图方法:

VendorMaint graph = PXGraph.CreateInstance<VendorMaint>();
var row1 = new VendorR();
row1 = graph.BAccount.Insert(row1);
if (row1 == null) // already inserted or wasn't able to insert
{
      //some logic with newly created vendor
}
else
{
      //some logic with existed
}
row1.AcctName = "vendor name";
row1.NoteID = noteid;      // Existing - GUID created while importing
graph.BAccount.Update(row1);
VendorMaint-graph=PXGraph.CreateInstance();
var row1=新供应商();
row1=graph.BAccount.Insert(row1);
if(row1==null)//已插入或无法插入
{
//新创建的供应商的一些逻辑
}
其他的
{
//存在一些逻辑
}
行1.AcctName=“供应商名称”;
row1.NoteID=NoteID;//现有-导入时创建的GUID
graph.BAccount.Update(第1行);

我已经找到了这个问题的解决方案。下面的代码有助于创建新附件,并且不会覆盖现有供应商的任何现有附件

 // Getting the FileID of the attached file from DACClass
 UploadFile uf = PXSelectJoin<UploadFile,
    InnerJoin<NoteDoc, On<NoteDoc.fileID, Equal<UploadFile.fileID>>,
    InnerJoin<DACClass, On<DACClass.noteID, Equal<NoteDoc.noteID>>>>, 
    Where<DACClass.noteID, Equal<Required<DACClass.noteID>>>>.Select(this, noteid);

 if (uf != null)
 {
      PXNoteAttribute.SetFileNotes(graph.BAccount.Cache, graph.BAccount.Current, uf.FileID.Value);

      NoteDoc doc = new NoteDoc();
      doc.NoteID = uf.FileID.Value;
      doc.FileID = new Guid();
      graph.BAccount.Cache.Insert(doc);
 }
//从DACClass获取附加文件的FileID
UploadFile uf=PXSelectJoin.Select(这个,noteid);
如果(uf!=null)
{
PXNoteAttribute.SetFileNotes(graph.BAccount.Cache、graph.BAccount.Current、uf.FileID.Value);
NoteDoc doc=新的NoteDoc();
doc.NoteID=uf.FileID.Value;
doc.FileID=新Guid();
graph.BAccount.Cache.Insert(doc);
}

Hi Yura,很抱歉给您带来任何困惑。创建供应商对我来说是可以的,我也可以检查副本。问题在于该供应商的文件附件。如果供应商已经存在,并且已经附加了几个文件,那么我想用一个文件附件更新该供应商。您已经写了“如果供应商已经存在,那么它应该更新,而不是复制”。应该更新什么?小贩?也许你可以编辑你的问题?更新问题。希望现在更有意义。供应商和附件之间的关系是什么?一对一还是一对多?如果是1对多,我看不出代码的哪一部分分析了关系的数量?供应商和附件有1对多关系。我不是附加多个附件,而是只附加一个。这里我指的是现有的供应商,它已经有以前的附件,现在我又添加了一个附件。行row1.NoteID=NoteID,是实际替换所有附件而不是添加的代码。