2017-03-17 24 views
0

我們有web服務集成和它所有的工作方式,但突然它創建時就開始拋出下面的錯誤RC型訂單。不明白到底發生了什麼問題。我們沒有更新任何內容,所以我認爲這是一些與數據相關的問題。創建SO通過基於屏幕的WebServices返回拋出錯誤[PXRowPersistingException:錯誤#4:「於RevisionId」不能爲空]

我試圖通過用戶界面相同的過程,它是不會放棄這個錯誤。請協助。您的幫助深表謝意。

PX.Data.PXRowPersistingException:錯誤#4: '於RevisionId' 不能是 空。

System.Web.Services.Protocols.SoapException:服務器無法 處理請求。 ---> PX.Data.PXRowPersistingException:錯誤#4: '於RevisionId' 不能爲空。在 PX.Data.PXDefaultAttribute.RowPersisting(PXCache發件人, PXRowPersistingEventArgs e)上 PX.Data.PXCache.OnRowPersisting(對象項,PXDBOperation操作) 在PX.Data.PXCache 1.PersistInserted(Object row) at PX.Objects.CS.SharedRecordAttribute.RowPersisting(PXCache sender, PXRowPersistingEventArgs e) at PX.Data.PXCache.OnRowPersisting(Object item, PXDBOperation operation) at PX.Data.PXCache 1.PersistInserted(對象行)在 PX.Data.PXCache 1.Persist(PXDBOperation operation) at PX.Data.PXGraph.Persist(Type cacheType, PXDBOperation operation) at PX.Data.PXGraph.Persist() at PX.Objects.SO.SOShipmentEntry.Persist() at PX.Data.PXSave 1.d__2.MoveNext()在 PX.Data.PXAction 1.<Press>d__31.MoveNext() at PX.Data.PXAction 1.d__31.MoveNext()在 PX.Api.SyImportProcessor.SyStep.a(對象A_0,PXFilterRow [] A_1, PXFilterRow [] A_2)at PX.Api.SyImportProcessor.ExportTableHelper.ExportTable()at PX.Api.ScreenUtils.Submit(String screenId,Command [] commands, SchemaMode schemaMode,PXGraph & grap小時,字符串& redirectContainerView, 字符串& redirectScreen,布爾移動,字典2 viewFilters)
at PX.Api.Services.ScreenService.Submit(String id, IEnumerable
1個 命令,SchemaMode schemaMode,布爾移動,PXGraph & forceGraph, 字符串& redirectContainerView,字符串& redirectScreen,字典2 viewFilters) at PX.Api.Services.ScreenService.Submit(String id, IEnumerable 1級的命令,SchemaMode schemaMode)在 PX .Api.Soap.Screen.ScreenGate.Submit(命令[]命令)

---內部異常堆棧跟蹤的結尾---

編輯

此訂單類型啓用自動編號,代碼如下。 Acumatica版本6.00.1384

正如前面提到的,此代碼正常工作。突然間行爲改變了,我不知道是什麼原因。

apitest.Screen context = BuisnessLogicACU.context; 
         SO301000Content SOSchema; 

         try 
         { 
          SOSchema = context.SO301000GetSchema(); 
         } 
         catch 
         { 
          BuisnessLogicACU.contextLogin(); 
          SOSchema = context.SO301000GetSchema(); 
         }    
         SOSchema.Actions.LSSOLineBinLotSerial.Commit = true; 
         SOSchema.Actions.CreateReceiptAction.Commit = true; 

         //HEADER INFO 
         AcumaticaInterface.apitest.Command[] commands = new AcumaticaInterface.apitest.Command[] 
        { 
         new Value 
         { 
          Value = returnInterfaceStatus.SalesOrderType, 
          LinkedCommand = SOSchema.OrderSummary.OrderType 
         }, 
         SOSchema.Actions.Insert, 

         new Value 
         { 
          Value = "false", 
          LinkedCommand = SOSchema.OrderSummary.Hold 
         }, 
         new Value 
         { 
          Value = OrderStatus == POSOrderstatus.Normal ? (ConfigValues.POSNormalCustomerID ?? CustomerID) : CustomerID, 
          LinkedCommand = SOSchema.OrderSummary.Customer 
         }, 
         new Value 
         { 
          Value = BizDate.HasValue ? ((DateTime)BizDate).ToLongDateString() : "", 
          LinkedCommand = SOSchema.OrderSummary.Date 
         }, 
         new Value 
         { 
          Value = BizDate.HasValue ? ((DateTime)BizDate.Value).ToLongDateString() : "", 
          LinkedCommand = SOSchema.OrderSummary.RequestedOn 
         },     
         new Value 
         { 
          Value = POSID, 
          LinkedCommand = SOSchema.OrderSummary.ExternalReference 
         },     
         new Value 
         { 
          Value = SIPosOrdrCreatedBy, 
          LinkedCommand = SOSchema.OrderSummary.POSOrdrBy 
         },     
         new Value 
         { 
          Value = CustomerTaxZone, 
          LinkedCommand = SOSchema.FinancialSettingsFinancialInformation.CustomerTaxZone 
         } 
        }; 

    AcumaticaInterface.apitest.Command[] commandline = new AcumaticaInterface.apitest.Command[] 
           { 
           SOSchema.DocumentDetails.ServiceCommands.NewRow, 
           new Value 
           { 
            Value = line.InventoryID, 
            LinkedCommand = SOSchema.DocumentDetails.InventoryID 
           }, 
           new Value 
           { 
            Value = SIOutletCode, 
            LinkedCommand = SOSchema.DocumentDetails.Warehouse 
           }, 
           new Value 
           { 
            Value = line.Quantity.ToString(), 
            LinkedCommand = SOSchema.DocumentDetails.Quantity, 
            Commit = true 
           },       
           new Value 
           { 
            Value = line.UnitPrice.ToString(), 
            LinkedCommand = SOSchema.DocumentDetails.UnitPrice 
           }, 
           new Value 
           { 
            Value = line.Uom, 
            LinkedCommand = SOSchema.DocumentDetails.UOM 
           }, 
           new Value 
           { 
            Value = (line.DiscTotal ?? 0).ToString(), 
            LinkedCommand = SOSchema.DocumentDetails.DiscountAmount 
           }, 
            new Value 
           { 
            Value = (line.LineTotal ?? 0).ToString(), 
            LinkedCommand = SOSchema.DocumentDetails.ExtPrice 
           }, 
           new Value 
           { 
            Value = line.DiscType ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.POSDiscType 
           }, 
           new Value 
           { 
            Value = line.LineType ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.POSLineType 
           }, 
           new Value 
           { 
            Value = line.VoucherSerial ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.POSVoucherSerial 
           }, 
           new Value 
           { 
            Value = line.PromoID ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.POSPromoID 
           }, 
           new Value 
           { 
            Value = line.PromoType ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.POSPromoType 
           }, 
           new Value 
           { 
            Value = (line.PromoPct ?? 0).ToString(), 
            LinkedCommand = SOSchema.DocumentDetails.POSPromoPct 
           }, 
           new Value 
           { 
            Value = line.PromoBaseItem ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.POSPromoBaseItem 
           }, 
           //new Value 
           //{ 
           // Value = SalesPerson, 
           // LinkedCommand = SOSchema.DocumentDetails.SalespersonID 
           //}, 
           new Value 
           { 
            Value = line.Remarks ?? "", 
            LinkedCommand = SOSchema.DocumentDetails.NoteText, 
            Commit = true 
           }, 
           new Value 
           { 
            Value = POSID, 
            LinkedCommand = SOSchema.DocumentDetails.PackUoM, 
            Commit = true 
           } 
          }; 
          commands = commands.Concat(commandline).ToArray(); 

    AcumaticaInterface.apitest.Command[] save = new AcumaticaInterface.apitest.Command[] { 
         SOSchema.Actions.Save      
        }; 
        commands = commands.Concat(save).ToArray(); 
    AcumaticaInterface.apitest.Command[] returnResult= new AcumaticaInterface.apitest.Command[] {     
       SOSchema.OrderSummary.OrderType, 
       SOSchema.OrderSummary.OrderNbr, 
       SOSchema.OrderSummary.Status 
      }; 
       commands = commands.Concat(returnResult).ToArray(); 

       var SOrder = context.SO301000Submit(commands)[0]; 
+0

您能否提供Acumatica版本以及您在Screen API調用中使用的命令? – samol518

+0

你能否提供你的代碼?如果您可以創建最小代碼,可以重現您的問題 –

+0

,請參閱最新的問題。 – Hybridzz

回答

1

幾次到目前爲止,我已經看到了這個錯誤信息,通常它是由不正確設置導致現有的傳輸指令,而不是一個新的創造更新的API命令造成的。

確保你通過Insert動作設置訂單類型TR後,如果自動編號爲編號的TR訂單類型的順序啓用:

Screen context = new Screen(); 
context.CookieContainer = new System.Net.CookieContainer(); 
context.Url = "http://localhost/StackOverflow/Soap/SO301000.asmx"; 
context.Login(username, password); 
try 
{ 
    Content salesOrderSchema = PX.Soap.Helper.GetSchema<Content>(context); 
    var commands = new Command[] 
    { 
     new Value 
     { 
      LinkedCommand = salesOrderSchema.OrderSummary.OrderType, 
      Value = "TR" 
     }, 
     salesOrderSchema.Actions.Insert, 
     new Value 
     { 
      LinkedCommand = salesOrderSchema.OrderSummary.DestinationWarehouse, 
      Value = "RETAIL" 
     }, 
     salesOrderSchema.Actions.Save, 
     salesOrderSchema.OrderSummary.OrderNbr 
    }; 
    var transferOrder = context.Submit(commands); 
} 
finally 
{ 
    context.Logout(); 
} 

或者,如果自動編號是禁用TR訂單類型的編號順序,您應該設置OrderNumber而不是Insert操作:

Screen context = new Screen(); 
context.CookieContainer = new System.Net.CookieContainer(); 
context.Url = "http://localhost/StackOverflow/Soap/SO301000.asmx"; 
context.Login(username, password); 
try 
{ 
    Content salesOrderSchema = PX.Soap.Helper.GetSchema<Content>(context); 
    var commands = new Command[] 
    { 
     new Value 
     { 
      LinkedCommand = salesOrderSchema.OrderSummary.OrderType, 
      Value = "TR" 
     }, 
     new Value 
     { 
      LinkedCommand = salesOrderSchema.OrderSummary.OrderNbr, 
      Value = "NEWNUMBER" 
     }, 
     new Value 
     { 
      LinkedCommand = salesOrderSchema.OrderSummary.DestinationWarehouse, 
      Value = "RETAIL" 
     }, 
     salesOrderSchema.Actions.Save, 
     salesOrderSchema.OrderSummary.OrderNbr 
    }; 
    var transferOrder = context.Submit(commands); 
} 
finally 
{ 
    context.Logout(); 
} 

下面是最近的一組SOAP命令,我可以在僅部署了Sales Demo的全新6.00.1384網站上運行。 它運行沒有任何問題。不知道如何在本地計算機上重現報告的問題,而無需執行您的確切步驟。

Screen context = new Screen(); 
context.CookieContainer = new System.Net.CookieContainer(); 
context.Url = "http://localhost/SOReturn/Soap/SO301000.asmx"; 
context.Login(Login, Password); 

var SOSchema = context.GetSchema(); 

SOSchema.Actions.LSSOLineBinLotSerial.Commit = true; 
SOSchema.Actions.CreateReceiptAction.Commit = true; 

//HEADER INFO 
var headerCommands = new Command[] 
{ 
    new Value 
    { 
     Value = "RC", 
     LinkedCommand = SOSchema.OrderSummary.OrderType 
    }, 
    SOSchema.Actions.Insert, 

    new Value 
    { 
     Value = "false", 
     LinkedCommand = SOSchema.OrderSummary.Hold 
    }, 
    new Value 
    { 
     Value = "ABARTENDE", 
     LinkedCommand = SOSchema.OrderSummary.Customer 
    }, 
    //new Value 
    //{ 
    // Value = BizDate.HasValue ? ((DateTime)BizDate).ToLongDateString() : "", 
    // LinkedCommand = SOSchema.OrderSummary.Date 
    //}, 
    //new Value 
    //{ 
    // Value = BizDate.HasValue ? ((DateTime)BizDate.Value).ToLongDateString() : "", 
    // LinkedCommand = SOSchema.OrderSummary.RequestedOn 
    //}, 
    new Value 
    { 
     Value = "TEST", 
     LinkedCommand = SOSchema.OrderSummary.ExternalReference 
    }, 
    //new Value 
    //{ 
    // Value = SIPosOrdrCreatedBy, 
    // LinkedCommand = SOSchema.OrderSummary.POSOrdrBy 
    //}, 
    //new Value 
    //{ 
    // Value = CustomerTaxZone, 
    // LinkedCommand = SOSchema.FinancialSettingsFinancialInformation.CustomerTaxZone 
    //} 
}; 

var commandline = new Command[] 
{ 
    SOSchema.DocumentDetails.ServiceCommands.NewRow, 

    new Value 
    { 
     Value = "AACOMPUT01", 
     LinkedCommand = SOSchema.DocumentDetails.InventoryID 
    }, 
    new Value 
    { 
     Value = "WHOLESALE", 
     LinkedCommand = SOSchema.DocumentDetails.Warehouse 
    }, 
    new Value 
    { 
     Value = "10.0", 
     LinkedCommand = SOSchema.DocumentDetails.Quantity, 
     Commit = true 
    }, 
    new Value 
    { 
     Value = "234.01", 
     LinkedCommand = SOSchema.DocumentDetails.UnitPrice 
    }, 
    new Value 
    { 
     Value = "EA", 
     LinkedCommand = SOSchema.DocumentDetails.UOM 
    }, 
    new Value 
    { 
     Value = "50.0", 
     LinkedCommand = SOSchema.DocumentDetails.DiscountAmount 
    }, 
    new Value 
    { 
     Value = "4500.00", 
     LinkedCommand = SOSchema.DocumentDetails.ExtPrice, 
     Commit = true 
    }, 
    //new Value 
    //{ 
    // Value = line.DiscType ?? "", 
    // LinkedCommand = SOSchema.DocumentDetails.POSDiscType 
    //}, 
    //new Value 
    //{ 
    // Value = line.LineType ?? "", 
    // LinkedCommand = SOSchema.DocumentDetails.POSLineType 
    //}, 
    //new Value 
    //{ 
    // Value = line.VoucherSerial ?? "", 
    // LinkedCommand = SOSchema.DocumentDetails.POSVoucherSerial 
    //}, 
    //new Value 
    //{ 
    // Value = line.PromoID ?? "", 
    // LinkedCommand = SOSchema.DocumentDetails.POSPromoID 
    //}, 
    //new Value 
    //{ 
    // Value = line.PromoType ?? "", 
    // LinkedCommand = SOSchema.DocumentDetails.POSPromoType 
    //}, 
    //new Value 
    //{ 
    // Value = (line.PromoPct ?? 0).ToString(), 
    // LinkedCommand = SOSchema.DocumentDetails.POSPromoPct 
    //}, 
    //new Value 
    //{ 
    // Value = line.PromoBaseItem ?? "", 
    // LinkedCommand = SOSchema.DocumentDetails.POSPromoBaseItem 
    //}, 
    new Value 
    { 
     Value = "Remarks", 
     LinkedCommand = SOSchema.DocumentDetails.NoteText, 
     Commit = true 
    }, 
    //new Value 
    //{ 
    // Value = POSID, 
    // LinkedCommand = SOSchema.DocumentDetails.PackUoM, 
    // Commit = true 
    //} 
}; 

var commands = headerCommands.Concat(commandline).ToArray(); 

Command[] save = new Command[] 
{ 
    SOSchema.Actions.Save 
}; 
commands = commands.Concat(save).ToArray(); 
Command[] returnResult = new Command[] 
{ 
    SOSchema.OrderSummary.OrderType, 
    SOSchema.OrderSummary.OrderNbr, 
    SOSchema.OrderSummary.Status 
}; 
commands = commands.Concat(returnResult).ToArray(); 

var SOrder = context.Submit(commands)[0]; 
+0

嗨,我已檢查並啓用自動編號,我也有插入命令。請檢查更新後的問題。感謝您的回覆。 – Hybridzz