2015-07-14 1 views
0

Может ли кто-нибудь помочь мне со следующим кодом, который пытается ввести Отгрузку с использованием сочетания серийных и несерийных элементов. Ошибка, которую я получаю, говорит: «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

ответ

0

Пожалуйста, обратите внимание

  Content SO302000 = context.GetSchema(); 
     context.Clear(); 

     Content[] result = context.Submit(
      new Command[] 
      { 
       new Value { Value = "001043", LinkedCommand = SO302000.ShipmentSummary.ShipmentNbr, Commit = true }, 
       new Value { Value = "000819", LinkedCommand = SO302000.DocumentDetails.OrderNbr, Commit = true}, 
       new Value { Value = "OK", LinkedCommand = SO302000.BinLotSerialNumbers.ServiceCommands.DialogAnswer, Commit = true }, 
       SO302000.BinLotSerialNumbers.ServiceCommands.NewRow, 
       new Value { Value = "0-_", LinkedCommand = SO302000.BinLotSerialNumbers.Subitem }, 
       new Value { Value = "WR01", LinkedCommand = SO302000.BinLotSerialNumbers.Location }, 
       new Value { Value = "17SNR000751", LinkedCommand = SO302000.BinLotSerialNumbers.LotSerialNbr }, 
       SO302000.Actions.LSSOShipLineBinLotSerial, 
       SO302000.Actions.Save 
      } 
     ); 
     Console.WriteLine();