KitAssemblyEntry 그래프에 새 INKitRegister 개체를 만들고 삽입 한 후 INRegister에 대한 확장 필드 값을 설정하려고합니다. 저장시 INKitRegister에는 키트 용 데이터베이스에 저장된 INRegister를 만드는 메서드가 있다는 것을 알고 있습니다. 저장 후에는 INRegister 데이터 테이블에 추가 한 확장 필드를 설정하는 코드를 실행하려고합니다. 이 코드를 실행하면, 나는 다음과 같은 오류가 발생합니다 :이 편집을 실행하기 때문에 데이터 테이블 항목이 완료된 후 왜INRegister의 확장 필드 값을 설정하려고 할 때 "업데이트 됨"오류가 발생합니다.
Error #78: Another process has updated the 'INRegister' record. Your changes will be lost.
잘 모르겠어요.
...//Code to create component children
INKitRegister kitHeader = new INKitRegister
{
//set header fields
};
//I also have this extended field on the INKitRegister DAC
INKitRegisterExt kitHeaderExt = PXCache<INKitRegister>.GetExtension<INKitRegisterExt>(kitHeader);
kitHeaderExt.UsrWOID = CurrentDocument.Current.Id;
INTranSplit kitParentAssembly = new INTranSplit
{
//Making INTranSplit entry for kit
};
...
//Do I need to get the graph's extension? set register view? do I need to get kitHeader's inserted refNbr and forward that to function to set woid?
KitAssemblyEntry graphKAE = PXGraph.CreateInstance<KitAssemblyEntry>();
graphKAE.Document.Insert(kitHeader);
graphKAE.Document.Current.KitRevisionID = "1";
graphKAE.Actions.PressSave();
foreach (INComponentTran ch in kitChildren)
{
ch.RefNbr = kitHeader.RefNbr;
graphKAE.Components.Insert(ch);
}
graphKAE.Actions.PressSave();
//Code in which I get the newly created INRegister and set the extended field.
string refNbr = graphKAE.Document.Current.RefNbr;
INRegister reg = PXSelect<INRegister, Where<INRegister.refNbr, Equal<Required<INRegister.refNbr>>, And<INRegister.docType, Equal<Required<INRegister.docType>>>>>
.Select(this, refNbr, "P");
INRegisterExt regExt = PXCache<INRegister>.GetExtension<INRegisterExt>(reg);
regExt.UsrWOID = CurrentDocument.Current.Id;
INRegisters.Update(reg);
this.Actions.PressSave();
PXRedirectHelper.TryRedirect(graphKAE, PXRedirectHelper.WindowMode.Popup);
어떤 제안 : 여기
내 코드? INKitRegister_RowPersisting 및 INKitRegister_RowUpdating 아래에있는 KitAssemblyEntry_Extension 클래스에 코드를 삽입 해 보았습니다. 또한 팝업 창이 닫힐 때 업데이트를 실행하는 방법을 살펴 보았지만이를 수행하는 방법을 모르겠습니다. 어떤 도움이 나에게 올바른 방향으로 나를 가리 키도록 환영합니다.
코드가 다음과 같이 변경되었습니다. string refNbr = graphKAE.Document.Current.RefNbr; INRegister reg = PXSelectReadonly> 및 >>>> .Select (this, refNbr, "피"); INRegisterExt regExt = PXCache .GetExtension (reg); regExt.UsrWOID = CurrentDocument.Current.Id; INRegisters.Update (reg); 그리고 여전히 같은 오류가 발생하고 있습니다. 다른 곳으로 변경해야합니까? –
추가하려면 PXSelectReadonly를 사용하려고 시도했습니다. KitAssemblyEntry에서 뷰를 만들 때 등록합니다. 그뿐 아니라 거기에서 작동하지 못했지만, 또한 내가 Register 뷰를 채울 수있는 유일한 방법이었습니다. PXSelect <> 만 사용하면 실패하고 레지스터는 항상 null입니다. –
업데이트 답변. 나는 하나의 그래프에 데이터의 지속성을 유지하려고합니다. 여러 개의 그래프와 동일한 DAC의 데이터를 유지하려고하면 약간 이상하게 느껴질 수 있습니다. 한 가지 일반적인 문제는 그래프 1이 테이블을 업데이트하고 그래프 2가 시도하고 업데이트 할 때받은 오류 일 것이지만 그래프 1 (따라서 오류)의 업데이트에서 최신 데이터를 가지고 있지 않습니다. – Brendan