2010-09-29 4 views
0

Je voudrais obtenir toutes les instances d'une action récurrente via une requête eScript bcAction.Siebel CSSBCActivity.SetGridBeginEndDate ou comment obtenir toutes les instances d'une action répétitive dans eScript?

Qu'est-ce que je l'ai déjà découvert des actions répétitives:

  • -je créer une action à répétition, répéter intervalle = jour
  • Je peux voir plusieurs instances pour cette action dans l'applet de calendrier Siebel.
  • Si je fais une recherche toutes les actions de eScript, je reçois une ligne unique pour l'action répétitive, type de « modèle » de toutes les instances de répétition
  • Si je modifie une instance d'action spécifique via le calendrier Siebel, une nouvelle ligne est créée pour cette instance.
  • Si j'interroge à nouveau toutes les actions, j'obtiens 2 actions qui se rapportent à l'action répétée. Le "template" et l'instance modifiée.
  • Quand j'ouvre une instance d'action inchangée répéter dans le calendrier Siebel et Menu ouvert « Aide -> A propos de Record ... », je vois que l'ID de ligne de l'instance est en quelque sorte rowid spécial, comme un temporaire: 8SIA-81UT810/10/2010

Jusqu'ici, tout va bien. Maintenant, je veux obtenir toutes les instances de l'action répétée dans eScript, si elles ont été modifiées ou non. Tout comme dans l'applet calendrier Siebel.

Dans Bookshelf j'ai trouvé une méthode prometteuse:

CSSBCActivity.SetGridBeginEndDate(startDate, endDate) 

Il devrait définir le composant métier en mode calendrier. Mon espoir est que, ce faisant, pour toutes les instances d'action répétées de l'intervalle de temps donné, des lignes d'action temporaire seront créées, que je peux ensuite interroger.

var args = new Array(2); 
args[0] = "10/01/2010"; 
args[1] = "10/31/2010"; 
bcActivity.InvokeMethod("SetGridBeginEndDate", args); 
... 
bcACtivity.ExecuteQuery(ForwardOnly); 

Cependant, l'exécution de la requête échoue avec une exception « 00/00/0000 ne peut pas être converti en un horodatage ». Je traçais la requête et a trouvé ce qui suit:

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 

Il y a évidemment quelque chose de mal avec une date littéraux ici. Donc je parie que je fais quelque chose de mal. Une idée de comment le faire correctement? Merci!

Répondre

0

J'ai trouvé l'erreur. Les paramètres de InvokeMethod doivent être passés comme ceci:

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

Obtenir les instances temporaires des travaux répéter l'action de cette façon comme prévu. Cool!

Questions connexes