現象
Microsoft Dynamics GP の Project Time and Expense in Business Portal でタイムシートを送信または返送しようとするときに、次のエラー メッセージが表示されます。
Microsoft.Dynamics.Pma.PmaEntity.CostCategory [原因] データベース操作に不整合が生じ、データベース トランザクションが中止されました。 [修正]入力したデータを修正し、トランザクションを再試行します。
原因
原因 1
この問題は、以下の条件に該当する場合に発生することがあります。
-
Microsoft Dynamics GP の監査証跡がインストールされています。
-
PDK テーブルに対して監査が設定されます。
-
ビジネス ポータル のユーザーは、監査データベースにアクセスできません。
解決策 1 を参照してください。
原因 2
この問題は、プロジェクト ID を含むタイムシート テンプレートを作成し、Microsoft Dynamics GP の会計処理でプロジェクト ID Project削除した場合に発生する可能性があります。 解決策 2 を参照してください。
原因 3
この問題は、タイムシート テンプレート内のプロジェクトの状態が閉じている場合に発生する可能性があります。 解決策 2 を参照してください。
原因 4
この問題は、PDK10000 テーブルまたは PDK10001 テーブルに破損または重複したレコードが存在する場合に発生する可能性があります。 解決策 3 を参照してください。
原因 5
この問題は、従業員レコードに [位置] フィールドが設定されていない場合に発生する可能性があります。 これは、カナダの給与支払いを使用している場合に発生する可能性があります。 解決策 4 を参照してください。
原因 6
この問題は、PDK10000、PDK10001、PDK10500、または PDK10501 テーブルに不適切なトリガーがある場合に発生する可能性があります。 解決策 5 を参照してください。
原因 7
この問題は、ドキュメントに関連付けられているメモ インデックスが Billing Note Master テーブルに存在しない場合、またはタイムシートに存在しない [Billing Note Master] テーブルのノートがある場合に発生する可能性があります。 解決策 6 を参照してください。
原因 8
この問題は、未処理のタイムシートが存在する場合にタイムシートのセットアップでレポート期間が変更されている場合に発生する可能性があります。 以前に使用したのと同じ従業員 ID、年、レポート期間の組み合わせを持つタイムシートを BP で作成すると、文書番号の末尾に -2 が自動的に追加されます。 タイムシート設定の [レポート期間の最初の日] または [レポート期間] 自体がタイムシートの入力後に変更され、[従業員 ID]、[年]、および [レポート期間] の組み合わせが以前に使用されている場合は、通常のドキュメント番号 -1 をスキップし、代わりに最後に -2 のドキュメント番号を使用します。
タイムシート文書番号は、"従業員 ID-TS-Date" (つまり、1018-TS-011609) の手法を使用して作成されます。
上記の段落で重複するタイムシートに対して表示される相違点に注意してください。
そのため、現在の期間 #2 のタイムシートを入力すると (ただし、タイムシートのセットアップが変更される前は異なる期間でした)、ビジネス ポータルでは重複として表示されないので、-2 は後に表示されません。 その結果、タイムシート番号が既に PDK10000 テーブルに存在していたため、エラーが発生しました。
解決策 7 を参照してください。
解決策
解決方法 1
この問題を解決するには、監査データベースへのアクセス権を付与します。 この場合、次の手順を実行します。
-
[スタート]をクリックし、[すべてのプログラム]をポイントし、[Microsoft SQL Server] をポイントして、[Microsoft SQL Server Management Studio。
-
[Microsoft SQL サーバー]を展開し、[SQL Serverグループ] を展開し、Audit データベースが格納されている Microsoft SQL Serverのインスタンスを展開します。
-
[セキュリティ ] を展開し、[ログイン] をクリックします。
-
Business Portal ユーザーを右クリックし、[プロパティ] をクリック します。
-
[データベース アクセス ] タブを クリックし、[監査データベース] をクリック します。
-
[監査データベース] の [ 許可] チェック ボックスをオンにします。
-
[データベース ロール で許可] ボックスの一覧 で 、[DYNGRP] チェック ボックスを オンにします。
-
[OK]をクリックし、[マネージャー] Enterpriseします。
解決方法 2
この問題を解決するには、新しいタイムシート テンプレートを作成します。 これにより、既存の既存の値が上書きされます。 この場合、次の手順を実行します。
-
ビジネス ポータルで、[従業員]をクリックし、[Project] をクリックし、[新規] をクリックします。
-
新しいタイムシートを作成し、[テンプレートとして保存 ] をクリックします。
-
既存のテンプレートを置き換えるメッセージが表示されたら 、[OK]をクリックします。
既存のテンプレートをオーバーライドするために新しいテンプレートを再作成できない場合は、SQL を使用して、影響を受ける従業員 ID の PDK00300 と PDK00301 から既存のテンプレートを削除します。
解決方法 3
この問題を解決するには、Microsoft Dynamics および関連製品のテクニカル サポートにお問い合わせください。 サポートプロフェッショナルは、PDK10000 テーブルと PDK10001 テーブル内の破損したレコードまたは重複したレコードを削除するのに役立つ場合があります。 Microsoft Dynamics および関連製品のテクニカル サポートについては、次の Microsoft Web サイトを参照してください。
解決策 4
カナダの給与支払いを使用している場合でも、米国の従業員カードの [職位] (および [部署] フィールド) に入力する必要があります。 この問題を解決するには、従業員カード に [位置 ] フィールドを追加します。 この場合、次の手順を実行します。
-
Microsoft Dynamics GP で、[カード] を クリックし、[給与支払い] を ポイントし、[従業員] を クリックします。
-
エラー メッセージが表示される従業員 ID を入力します。
-
[位置] フィールドに有効な位置 を入力 します。
-
[保存] ボタンを クリックします。
解決策 5
既定では、PDK10000 PDK10001、PDK10500、および PDK10501 テーブルにはトリガーが含まれます。 このスクリプトを (テーブル名を置き換える) Microsoft SQL Server Management Studioテーブルにトリガーが存在するかどうかを確認します。 このトリガーを削除する必要がある場合があります。
sp_helptrigger PDK10000 トリガーが存在する場合は、このスクリプトを使用して削除し、Business Portal ドキュメントを
再度試してください。 この例では、トリガーの名前は PDK10000Update です。
ALTER TABLE PDK10000 DISABLE TRIGGER PDK10000Update
解決策 6
このMicrosoft SQL Server Management Studio使用して、会社のデータベースに対してこのスクリプトを実行して、PDK 課金メモマスター テーブルに存在しない請求メモがドキュメントに割り当てられているかどうかを判断します。
PDK_BILLING_NOTE_ID が存在しない PDK10001 から *を選択し (PDK01601 から PDK_Billing_Note_ID を選択)、PDK_Billing_Note_ID <> '' を選択します。次に、ドキュメント上に存在しない Billing Notes マスター テーブルにノートが存在する場合は、このスクリプトを実行します。
PDK01601 から * を選択します。ここで PDK_Billing_Note_ID が存在しない場合 (PDK10001 から PDK_Billing_Note_ID を選択)、PDK_Billing_Note_ID が存在しない (PDK10501 から PDK_Billing_Note_ID を選択) これらのスクリプトが結果を返す場合は
、SQL delete ステートメントを使用してレコードをテーブルから削除する必要があります。
必要に応じて、テクニカル サポートにお問い合わせください。
解決策 7
PDK10000 テーブルのタイムシート ドキュメントを確認して、現在使用されているドキュメント番号が以前に使用されていないか確認します。 既存のレポート期間の設定を使用する必要がある場合は、この新しいトランザクションを入力する前に、以前のタイムシートを PDK10000 テーブルと PDK10001 テーブルから削除する必要があります。 もう 1 つのオプションは、レポート期間の情報を以前の情報にリセットしてから、新しいタイムシートを作成する方法です。
その他のトラブルシューティング -
1. Microsoft SQL Server Management Studio で次のスクリプトを実行して、タイムシートに [開く] または [完了] 以外の状態のコスト カテゴリが含まれています。 [見積もり]、[終了]、または [保留] の状態で、コスト カテゴリのトランザクションを入力することはできません。
[a.PDK_TS_No、 a.PAPROJNUMBER, a.PACOSTCATID from PDK10001
a.PA01301 b on
a.PAPROJNUMBER = b.PAPROJNUMBER and
a.PACOSTCATID = b.PACOSTCATID
(b.PASTAT not in (1, 5)
2. 次のスクリプトを Microsoft SQL Server Management Studioして、タイムシートに [開く] または [完了] 以外の状態のプロジェクトが含まれています。 [見積もり]、[終了]、または [保留] の状態でプロジェクトのトランザクションを入力することはできません。
[a.PDK_TS_No、 a.PAPROJNUMBER from
PDK10001
a.PAPROJNUMBER a.PA01201 b on a.PAPROJNUMBER = b.PAPROJNUMBER where b.PASTAT not in
(1, 5)
3. ヘッダー (PDK10000) テーブルの合計数量フィールド (PDK_Total_Quantity) の値が、タイムシートのライン テーブル (PDK10001) の行数 (PDK_Quantity) の合計と一致する必要があります。 一致しない場合、タイムシートは破損し、タイムシートを使用してテーブルから削除SQL。 必要に応じて、テクニカル サポートにお問い合わせください。