Siebel CSSBCActivity.SetGridBeginEndDate или как получить все экземпляры повторяющегося действия в eScript? - PullRequest
0 голосов
/ 29 сентября 2010

Я хотел бы получить все экземпляры повторяющегося действия с помощью запроса eScript bcAction.

Что я уже узнал о повторяющихся действиях:

  • Я создаю повторяющееся действие, повторяющийся интервал = ежедневно
  • Я вижу несколько экземпляров этого действия в Siebelапплет календаря.
  • Если я запрашиваю все действия по eScript, я получаю одну строку для повторяющегося действия, своего рода «шаблон» всех повторяющихся экземпляров
  • Если я изменяю конкретный экземпляр действияс помощью календаря Siebel для этого экземпляра создается новая строка.
  • Если запросить все действия снова, я получу 2 действия, которые относятся к повторяющемуся действию.«Шаблон» и измененный экземпляр.
  • Когда я открываю неизменный повторяющийся экземпляр действия в календаре Siebel и открываю Меню «Справка -> О записи ...», я вижу, что идентификатор строки экземпляракак-то особенный, как временный rowid: 8SIA-81UT810/10/2010

Пока все хорошо.Теперь я хочу получить все экземпляры повторяющегося действия в eScript, независимо от того, были они изменены или нет.Как и в апплете с календарем Siebel.

В Книжной полке я нашел многообещающий метод:

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

Здесь явно что-то не так с некоторыми литералами даты.Спорим, я делаю что-то не так.Есть идеи, как это сделать правильно?Спасибо!

1 Ответ

0 голосов
/ 29 сентября 2010

Я нашел ошибку.Параметры InvokeMethod должны передаваться следующим образом:

bcActivity.InvokeMethod("SetGridBeginEndDate", "10/01/2010", "10/31/2010");

Получение временных экземпляров повторяющегося действия работает так, как ожидалось.Круто!

...