Вложения переопределяют существующие при добавлении из графа VendorMaint

Я импортирую данные и документы из стороннего приложения в 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);

Если вложение уже существует, оно должно обновляться, а не дублироваться.

В этом случае, если поставщик уже существует с прикрепленными файлами, мой код переопределяет эти вложения и удаляет все предыдущие файлы, прикрепленные к этому существующему поставщику.

Я хочу добавить вложение вместо переопределения существующего вложения. Любое предложение?


person Krunal    schedule 12.05.2015    source источник
comment
Какая связь между Продавцом и вложением? 1 к 1 или 1 ко многим? Если от 1 до многих, я не вижу, какая часть кода анализирует количество отношений?   -  person Yuriy Zaletskyy    schedule 13.05.2015
comment
Поставщик и вложение имеют отношение 1 ко многим. Я не прикрепляю несколько вложений, а прикрепляю только одно. Здесь я имею в виду существующего поставщика, у которого уже есть предыдущие вложения, и теперь я добавляю еще один. Строка row1.NoteID = noteid, это код, который фактически заменяет все вложение вместо добавления.   -  person Krunal    schedule 13.05.2015


Ответы (2)


Попробуйте использовать метод вставки:

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);
person Yuriy Zaletskyy    schedule 13.05.2015
comment
Привет Юра, извините за сумбур, если таковой имеется. Создание поставщика подходит для меня, и я также могу проверить наличие дубликатов. Проблема заключается в прикреплении файла к этому поставщику. Если поставщик уже существует с уже прикрепленными несколькими файлами, я хочу обновить этого поставщика еще одним вложенным файлом. - person Krunal; 13.05.2015
comment
Вы написали, что если поставщик уже существует, он должен обновляться, а не дублироваться. Что следует обновить? Продавец? Может быть, вы можете отредактировать свой вопрос? - person Yuriy Zaletskyy; 13.05.2015
comment
Обновил вопрос. Надеюсь, теперь это более осмысленно. - person Krunal; 13.05.2015

Я нашел решение проблемы. Приведенный ниже код помогает создать новое вложение и не переопределяет существующие вложения для существующего поставщика.

 // 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);
 }
person Krunal    schedule 20.05.2015