2017-03-17 6 views
0

webserviceとの統合が完了していて、途中で動作していました。 RCタイプの注文。正確に何が間違っているのか分かりません。私たちは何かを更新しなかったので、これはデータ関連の問題だと思う。画面ベースのWebサービスでエラーが発生しました。[PXRowPersistingException:エラー#4: 'RevisionID'は空ではありません]

UIで同じプロセスを試しましたが、このエラーは発生していません。手伝ってください。あなたの助けを深く感謝します。

PX.Data.PXRowPersistingException:エラー#4: 'RevisionID'を にすることはできません。

System.Web.Services.Protocols.SoapException:サーバーが プロセス要求にできませんでした。 ---> PX.Data.PXRowPersistingException:エラー#4: 'RevisionID'を空にすることはできません。 で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.OnRowPersisting(対象項目、PXDBOperation動作) でPX.Data.PXDefaultAttribute.RowPersisting(PXCache送信者、 PXRowPersistingEventArgs e)に PX.Api.SyImportProcessor.SyStep.a(オブジェクトA_0、PXFilterRow [] A_1、 PXFilterRowで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(AT) [] A_2)at PX.Api.SyImportProcessor.ExportTableHelper.ExportTable()at PX.Api.ScreenUtils.Submit(String screenId、Command []コマンド、 )スキーマモードschemaMode、PXGraph & grap時間、ストリング& redirectContainerView、 ストリング& redirectScreen、ブールモバイル、辞書2 viewFilters)
at PX.Api.Services.ScreenService.Submit(String id, IEnumerable
1つの コマンド、SchemaMode schemaMode、ブールモバイル、PXGraph & forceGraph、 ストリング& redirectContainerView、 PXに文字列& redirectScreen、辞書2 viewFilters) at PX.Api.Services.ScreenService.Submit(String id, IEnumerable 1コマンド、SchemaMode schemaMode) .Api.Soap.Screen.ScreenGate.Submit(コマンド[]コマンド)

---内部例外スタックトレースの終わり---

EDIT

この注文タイプで自動番号付けが有効になっており、コードは次のとおりです。 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

Screen APIコールで使用しているAcumaticaのバージョンとコマンドを教えてください。 – samol518

+0

あなたのコードも提供していただけますか?あなたの問題を再現できる最小限のコードを作成することができれば良いです –

+0

更新された質問をご覧ください。 – Hybridzz

答えて

1

私は数回、これまでに、通常はそれが代わりに新しいものを作るの既存の転送順序の更新に結果APIコマンドの不正確なセットによって引き起こされたこのエラーメッセージを見てきました。

自動番号がTRオーダータイプの番号シーケンスのために有効になっている場合、あなたはOrderType TR に設定した後、あなたが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" 
     }, 
     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オーダータイプの番号付けシーケンスで無効になっている場合は、Insertアクションの代わりにOrderNumberを設定する必要があります。

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(); 
} 

以下は、Sales Demoのみが展開された最新の6.00.1384 Webサイトで実行できるSOAPコマンドの最も近いセットです。 これは問題なく動作します。報告された問題をローカルマシンで再現する方法がわかりません。

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

関連する問題