Может ли кто-нибудь помочь мне со следующим кодом, который пытается ввести Отгрузку с использованием сочетания серийных и несерийных элементов. Ошибка, которую я получаю, говорит: «PX.Data.PXException: Ошибка # 246: Не удалось зафиксировать строку расщепления»., который будет иметь какое-то отношение к распределению Serial, но я не могу указать, откуда эта проблема.Введите серийный номер в документе о доставке (SO302000) В Acumatica с использованием API
SO302000Content SO302000 = oScreen.SO302000GetSchema();
oScreen.SO302000Clear();
SO302000.Actions.AddSO.Commit = true;
SO302000.AddSalesOrder.Selected.LinkedCommand = null;
SO302000.DocumentDetails.InventoryID.LinkedCommand = null;
List<Command> oCmds = new List<Command>();
//Create Header.
oCmds.Add(SO302000.Actions.Insert);
oCmds.Add(new Value { Value = sCardCode, LinkedCommand = SO302000.ShipmentSummary.Customer, Commit = true });
oCmds.Add(new Value { Value = sCardLocation, LinkedCommand = SO302000.ShipmentSummary.Location });
oCmds.Add(new Value { Value = sWhsCode, LinkedCommand = SO302000.ShipmentSummary.WarehouseID });
oCmds.Add(SO302000.Actions.Save);
//Create Lines.
foreach (DataRow dR in ds.Tables[0].Rows)
{
dPackQty = Convert.ToDouble(dR["QtyPacked"]);
if (sSONbr == dR["SONbr"].ToString() && sItemCode == dR["ItemCode"].ToString())
{
dCount = dCount + 1;
}
else
{
sSONbr = dR["SONbr"].ToString();
sItemCode = dR["ItemCode"].ToString().Trim();
dCount = 0;
//oCmds.Add(new Value { Value = "OK", LinkedCommand = SO302000.AddSalesOrderOperation.ServiceCommands.DialogAnswer, Commit = true });
oCmds.Add(new Value { Value = "SO", LinkedCommand = SO302000.AddSalesOrderOperation.OrderType });
oCmds.Add(new Value { Value = sSONbr, LinkedCommand = SO302000.AddSalesOrderOperation.OrderNbr });
oCmds.Add(new Value { Value = "OK", LinkedCommand = SO302000.AddSalesOrder.ServiceCommands.DialogAnswer, Commit = true });
oCmds.Add(new Key { Value = sItemCode, FieldName = SO302000.AddSalesOrder.InventoryID.FieldName, ObjectName = SO302000.AddSalesOrder.InventoryID.ObjectName });
oCmds.Add(new Value { Value = "True", LinkedCommand = SO302000.AddSalesOrder.Selected, Commit = true });
oCmds.Add(SO302000.Actions.AddSO);
oCmds.Add(new Key { Value = "='" + sSONbr + "'", FieldName = SO302000.DocumentDetails.OrderNbr.FieldName, ObjectName = SO302000.DocumentDetails.OrderNbr.ObjectName });
oCmds.Add(new Key { Value = "='" + sItemCode + "'", FieldName = SO302000.DocumentDetails.InventoryID.FieldName, ObjectName = SO302000.DocumentDetails.InventoryID.ObjectName });
oCmds.Add(new Value { Value = "0", LinkedCommand = SO302000.DocumentDetails.ShippedQty, Commit = true });
}
if (dR["IsSerial"].ToString() == "Y")
{
oCmds.Add(new Value { Value = "OK", LinkedCommand = SO302000.Allocations.ServiceCommands.DialogAnswer, Commit = true });
oCmds.Add(new Value { Value = dCount.ToString(), LinkedCommand = SO302000.Allocations.ServiceCommands.RowNumber, Commit = true });
oCmds.Add(new Value { Value = dR["Serial"].ToString(), LinkedCommand = SO302000.Allocations.LotSerialNbr, Commit = true });
oCmds.Add(new Value { Value = dPackQty.ToString(), LinkedCommand = SO302000.Allocations.Quantity, Commit = true });
}
else
{
oCmds.Add(new Value { Value = "OK", LinkedCommand = SO302000.Allocations.ServiceCommands.DialogAnswer, Commit = true });
oCmds.Add(new Value { Value = dPackQty.ToString(), LinkedCommand = SO302000.Allocations.Quantity, Commit = true });
}
}
oCmds.Add(SO302000.Actions.Save);
//oCmds.Add(PO302000.DocumentSummary.TotalQty);
//oCmds.Add(PO302000.DocumentSummary.TotalAmt);
oScreen.SO302000Submit(oCmds.ToArray());
При попытке изменить код, который обрабатывает не серийный элемент использовать SO302000.DocumentDetails.ShippedQty вместо SO302000.Allocations.Quantity, он возвращает другую ошибку: «PX.Data .PXRowPersistingException: Ошибка №4: «LineType» может быть пустым ». Не уверен, что это означает.
Помощь высоко оценили :) G