eScriptbcActionクエリを介して繰り返しアクションのすべてのインスタンスを取得したいと思います。
繰り返しの行動について私がすでに知ったこと:
- 繰り返しアクションを作成します、繰り返し間隔=毎日
- Siebelカレンダーアプレットで、このアクションの複数のインスタンスを確認できます。
- eScriptですべてのアクションをクエリすると、繰り返しアクションの1つの行が表示されます。これは、すべての繰り返しインスタンスの「テンプレート」のようなものです。
- Siebelカレンダーを介して特定のアクションインスタンスを変更すると、そのインスタンスに対して新しい行が作成されます。
- すべてのアクションを再度クエリすると、繰り返しアクションに関連する2つのアクションが得られます。「テンプレート」と変更されたインスタンス。
- Siebelカレンダーで変更されていない繰り返しアクションインスタンスを開き、メニューの[ヘルプ]-> [レコードについて...]を開くと、インスタンスの行IDが一時的なROWIDのように特別であることがわかります。
8SIA-81UT810/10/2010
ここまでは順調ですね。ここで、変更されているかどうかに関係なく、eScriptで繰り返しアクションのすべてのインスタンスを取得したいと思います。Siebelカレンダーアプレットと同じように。
Bookshelfで、私は有望な方法を見つけました。
CSSBCActivity.SetGridBeginEndDate(startDate, endDate)
ビジネスコンポーネントをカレンダーモードに設定する必要があります。これを行うことで、指定された時間枠のすべての繰り返しアクションインスタンスに対して、一時的なアクション行が作成され、クエリを実行できるようになることを願っています。
var args = new Array(2);
args[0] = "10/01/2010";
args[1] = "10/31/2010";
bcActivity.InvokeMethod("SetGridBeginEndDate", args);
...
bcACtivity.ExecuteQuery(ForwardOnly);
ただし、「00/00/0000はタイムスタンプに変換できません」という例外を除いて、クエリの実行は失敗します。クエリをトレースしたところ、次のことがわかりました。
SELECT ... FROM SIEBEL.S_EVT_ACT T1 ...
WHERE
((T1.APPT_REPT_FLG = 'Y' AND (T1.APPT_REPT_END_DT IS NULL OR T1.APPT_REPT_END_DT >= '00/00/0000') AND T1.TODO_PLAN_START_DT < '01/02/,)/.' OR T1.TODO_PLAN_START_DT >= '00/00/0000' AND T1.TODO_PLAN_START_DT < '01/02/,)/.' AND T1.APPT_REPT_FLG = 'N' OR T1.TODO_PLAN_START_DT < '00/00/0000' AND T1.TODO_PLAN_END_DT >= '00/00/0000' AND T1.APPT_REPT_FLG = 'N') AND
ここのいくつかの日付リテラルには明らかに何か問題があります。だから私は何か間違ったことをしているに違いない。それを正しく行う方法はありますか?ありがとう!