D365 X++: 顧客の月次締め請求書 更新エラーの解決方法
{
"title": "D365 X++: 顧客の月次締め請求書 更新エラーの解決方法",
"description": "D365 X++ で顧客の月次締め請求書 (CustConsInvoice_JP) を更新する際に発生するエラー「顧客の月次締め請求書 のレコードを編集できません (CustConsInvoice_JP)。 更新するデータが選択されていないため、操作を完了できません。TTSBEGIN/TTSCOMMIT および FORUPDATE 句を確認してください。」の解決策を解説します。",
"keywords": "D365, X++, 顧客, 月次締め, 請求書, 更新, エラー, TTSBEGIN, TTSCOMMIT, FORUPDATE, CustConsInvoice_JP",
"content": ""D365 X++: 顧客の月次締め請求書 更新エラーの解決方法"\n\nこのエラーは、consInvoice.update(); が実行された際に、consInvoice オブジェクトに更新対象のデータが含まれていないために発生します。\n\nエラーの原因と解決策\n\n1. TTSBEGIN/TTSCOMMIT 句:\n - TTSBEGIN と TTSCOMMIT 句は、データベーストランザクションの開始と終了を定義します。\n - このエラーが発生した場合、トランザクションの開始と終了が正しく行われていることを確認してください。\n - 例えば、TTSBEGIN の後に TTSCOMMIT がない、または TTSCOMMIT の後に TTSBEGIN がある、などの問題がないか確認してください。\n\n2. FORUPDATE 句:\n - FORUPDATE 句は、更新対象のレコードをロックして、他のユーザーによる更新を防止します。\n - consInvoice オブジェクトが正しくロックされていることを確認してください。\n - 例えば、consInvoice オブジェクトを select forupdate ステートメントを使用して取得している場合、FORUPDATE 句が適切に指定されていることを確認してください。\n\n3. consInvoice オブジェクトの更新内容:\n - consInvoice.update(); が実行される前に、consInvoice オブジェクトに更新対象のデータが含まれていることを確認してください。\n - consInvoice オブジェクトの値を出力して確認することができます。\n - X++コードで以下のように実装できます: \n x++\n info(strFmt("consInvoice before update: %1", consInvoice.toString()));\n \n - これで、consInvoice オブジェクトの値がログに出力され、オブジェクトに更新対象のデータが含まれているかどうかを確認することができます。\n\n**consInvoice.update(); 以前のコード**\n\nx++\npublic void confirmByClosingSpecial()\n{\n boolean isRetry = false;\n \n try\n {\n ttsbegin;\n\n if (isRetry)\n {\n this.reLoadConsInvoice(true);\n }\n\n if (consInvoice.Status == CustVendConsInvoiceStatus_JP::Unconfirmed)\n {\n // 対象請求書の支払済み・取消確認\n // Ensures that no related invoice journal has been paid.\n if (this.mnkHasNoPaymTrans(consInvoice))\n {\n consInvoice.Status = CustVendConsInvoiceStatus_JP::Confirmed;\n consInvoice.CustVendConsInvoice_JP::setInvoiceAmount();\n\n // Recalculate consolidation date and due date.\n consInvoice.PaymTerm = consInvoice.CustVendConsInvoice_JP::getCustVendInvoiceJourWithSmallestId().Payment;\n\n consInvoice.update();\n \n CustConsInvoiceType_JP::MnkUpdateConsRefRecId_Confirm(consInvoice);\n }\n }\n else\n {\n // Only unconfirmed consolidated invoice can be confirmed.\n throw error("@GLS63323");\n }\n\n ttscommit;\n }\n catch (Exception::Deadlock)\n {\n retry;\n }\n catch (Exception::UpdateConflict)\n {\n if (appl.ttsLevel() == 0)\n {\n if (xSession::currentRetryCount() >= #RetryNum)\n {\n throw Exception::UpdateConflictNotRecovered;\n }\n else\n {\n isRetry = true;\n retry;\n }\n }\n else\n {\n throw Exception::UpdateConflict;\n }\n }\n}\n\n\nもし、consInvoice オブジェクトに更新対象のデータが含まれていない場合は、コードの他の部分を調べて、更新対象のフィールドに適切な値が設定されているかどうかを確認してください。\n\n追加のヒント\n\n- consInvoice オブジェクトの値をデバッグログに出力して、どのフィールドが更新されているのか確認してください。\n- 問題が解決しない場合は、Microsoft Dynamics 365 のサポートチームに問い合わせてください。\n
原文地址: https://www.cveoy.top/t/topic/qdsx 著作权归作者所有。请勿转载和采集!