/ / Le code est-il en cours d'exécution dans le client ou en tant que travail par lots? - axapta, x ++, dynamic-ax-2009

Le code est-il exécuté dans le client ou en tant que travail par lots? - axapta, x ++, dynamic-ax-2009

Est-il possible de déterminer si le code est en cours d'exécution dans le client ou dans un travail par lots? J'ai pensé à utiliser curUserId et en vérifiant si l'utilisateur est celui que nous utilisons pour les travaux par lots, mais cette approche échoue si l'utilisateur est modifié.

J'essaie de modifier le update méthode de table VendTable avec une boîte de dialogue Oui / Non quand il est exécuté sur un client, mais je ne veux pas que cela se produise lorsque le code est exécuté par lots.

Des idées ?

Réponses:

3 pour la réponse № 1

Sur votre classe de lot qui s'étend runbasebatch, vous pouvez utiliser this.isInBatch(). Cela renverra true si le code s'exécute en batch et false s'il ne s'exécute pas en batch. Vous pouvez ensuite le transmettre en tant que paramètre à d'autres classes. (Je recommanderais de le faire de cette façon).

Une note cependant, vous ne devriez pas "montrer une boîte de dialogue dans le update méthode de la VendTable table parce que vous ne devriez jamais avoir d'interaction utilisateur dans une transaction qui, je suppose, sera le cas.

Si vous souhaitez avoir une interaction utilisateur lorsqu'un utilisateurécrit un enregistrement sur un formulaire, essayez d'écraser la méthode d'écriture de votre source de données de formulaire. Ceci sera exécuté quand un enregistrement est écrit (inséré, mis à jour). Vous pouvez demander la saisie de l'utilisateur ici. Pour un exemple, vérifiez le formulaire de commande (purchtable ds, write method), il devrait contenir quelque chose de similaire (il demande de copier les champs d'en-tête à ligne)