У меня есть кнопка действия, которая берет строку товара и создает новый товар на основе этой информации. Вот код:
public PXAction<CFBSCatalogHeader> ConvertToItem;
[PXButton()]
[PXUIField(DisplayName = "Convert to Item")]
protected void convertToItem()
{
CFBSCatalogDetail row = Details.Current;
if (row == null)
return;
InventoryItemMaint graph = PXGraph.CreateInstance<InventoryItemMaint>();
graph.Item.Current = graph.Item.Insert();
graph.Item.Current.InventoryCD = row.VendorPartID;
graph.Item.Current.Descr = row.Descr;
graph.Item.Current.ItemClassID = 526;
graph.Item.Current.ItemType = "M";
graph.Item.Current.ValMethod = "F";
graph.Item.Current.TaxCategoryID = "TAXDEFAULT";
graph.Item.Current.PostClassID = "INVDEFAULT";
graph.Item.Current.LotSerClassID = "LOTSNDEFAU";
graph.Item.Current.BaseUnit = "EA";
graph.Item.Current.SalesUnit = "EA";
graph.Item.Current.PurchaseUnit = "EA";
graph.Item.Update(graph.Item.Current);
graph.Actions.PressSave();
}
Я получаю эту ошибку:
Несмотря на ошибку, предмет все еще сохраняется. Я предполагаю, что запись пытается сохранить более одного раза, но я не уверен, почему.
EDIT:
Вот след для ошибки:
11/7/2018 8:21:48 Ошибка:
Ошибка: другой процесс добавил запись «InventoryItem». Ваши изменения будут >> потеряны.
в PX.Data.PXCache`1.PersistInserted (строка объекта)
в PX.Data.PXCache`1.Persist (операция PXDBOperation)
в PX.Data.PXGraph.Persist (Тип cacheType, операция PXDBOperation)
в PX.Data.PXGraph.Persist ()
в PX.Objects.IN.InventoryItemMaint.Persist () в F: \ Bld \ AC-FULL2018R112-JOB1 \ sources \ WebSites \ Pure \ PX.Objects \ IN \ NonStockItemMaint.cs: строка 2421
в JAMS.AEF.InventoryItemMaintAMExtension.Persist (Action del)
в CFBSModificationTSC.VendorCatalog.convertToItem () в d: \ Program Files \ Acumatica ERP \ TexasScenic \ App_RuntimeCode \ VendorCatalog.cs: строка 70
в PX.Data.PXAction`1. <> c__DisplayClass3_0. <. ctor> b__0 (адаптер PXAdapter)
в PX.Data.PXAction`1.a (PXAdapter A_0)
в PX.Data.PXAction`1.d__31.MoveNext ()
в PX.Data.PXAction`1.d__31.MoveNext ()
в PX.Web.UI.PXBaseDataSource.tryExecutePendingCommand (String viewName, String [] sortcolumns, логические [] нисходящие, поиски Object [], параметры Object [], аргументы PXFilterRow [], аргументы DataSourceSelectArguments, логические и адаптеры closeWindowReowStartTowToRTRALTOWTTROTTALTORTTALTRENTEALTORTINGTREINT, Int32 )
в PX.Web.UI.PXBaseDataSource.ExecuteSelect (аргументы String viewName, DataSourceSelectArguments, PXDSSelectArguments pxarguments)