Pb de conflit "Another copy of this document was saved..."

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Pb de conflit "Another copy of this document was saved..."

Messagepar MdmZ » 18 Juil 2011 à 10:48

J'ai un problème de conflit lorsque j'essaye d'envoyer un document deux fois de suite.
Le message d'erreur "Another copy of this document was saved while you were editing it. Save your changes also as a Save conflict document?" apparait, comme si une autre personne était sur le document, alors que ce n'est pas le cas.
Le problème ne se pose pas lorsque j'enregistre seulement le document.
Mon bouton d'envoi, appelle un agent qui ouvre une fenetre d'envoi du document.

Quelqu'un a une idée d'où peut venir le problème ?

Merci d'avance,
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 11:12

Bonjour,

est ce que ton agent ne ferai pas une modif en back en suite fait une sauvegarde du document front ?

Dans ce cas, tu vas avoir un conflit à tous les coups.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 12:53

Peux tu être plus clair ?

Mon agent enregistre le document et est censé ouvrir une autre fenêtre. L'erreur s'affiche avant l'ouverture de la fenêtre. Je suppose qu'elle se fait à cause de l'enregistrement.

Cet agent est appelé à l'aide d'un bouton.

Voici le code de l'action qui appelle l'agent :

@If(Condition
; @Prompt([Ok];"Not complete";"You have to ");@Do(@SetField("openFrmPostSave"; 1);@PostedCommand([ToolsRunMacro];"(Agent)")))

Et le code de l'agent :

Sub Initialize
//declaration

Dim docUI As NotesUIDocument

Set uiws = New NotesUIWorkspace

Set docUI = uiws.CurrentDocument

docUI.Save

'ouverture d'une fenêtre de dialogue dans laquelle se trouve la form permettant l'envoi d'un message
nSuccess = uiws.DialogBox( "form", ....)

End Sub
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 13:03

Je pense que ton problème provient dela ligne : (@SetField("openFrmPostSave"; 1). Cette commande modifie le document. ensuite, dans ton agent tu récupère via la classe frontale notesuiworkspace le document courant (document ouvert, visible de l'utilisateur). Lors de la sauvegarde du doc frontal, tu as un conflit de réplication ou de sauvegarde car tu as eu deux modifs.

Puisque les premières lignes de ton code cosiste juste à faire une sauvegarde du doc, pourquoi ne pas le faire avant l'appel à l'agent.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 13:35

J'ai ajouté @Command([FileSave]) dans le @Do de l'action, et du coup supprimer les lignes qui enregistrent le document dans l'agent mais le problème persiste et en plus de ça lorsque je souhaite fermer le document, ils me demandent de nouveau si je souhaite enregistrer la modification du document..
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 13:38

A quoi te sert ton agent ?
Peux tu dépalcer le code dans un bouton ?
Dans ce cas, tu n'a plus besoin du setfield. : le code du bouton fera la sauvegarde du doc et ouvrira la nouvelle fenêtre.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 13:47

J'ai tout déplacé dans le bouton.
Le problème reste le même.
Par contre je ne peux pas supprimer la commande @SetField. J'en ai besoin car si la personne enregistre le document sans l'envoyer, une fenêtre s'ouvre demandant s'il souhaite envoyer ses modifications (code qui se trouve donc dans l'evenement postSave), et je ne veux pas que cette fenetre s'ouvre lorsque l'utilisateur décide d'envoyer le document lui même, je le modifie donc à ce moment là.

C'est ce champ qui crée tous les problèmes ?
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 13:56

Je pense car il fait une modification sur la back alors que save de la ui fait un enregistrement de la front.
Lorsque tu enregistre ton doc à partir de la UI, DOmino détecte qu'une modification a été apporté au document depuis le moment où tu l'a ouvert.

Ton champ peut être alimenté à partir du code contenu dans ton bouton.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 14:05

Je n'ai pas compris,
Comment modifier ce champs autrement ?
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 14:09

Après ton : docUI.Save

Tu fais un truc du genre
call docUI.document.ReplaceItemValue("openFrmPostSave", "1")
call docUi.document.save(true, true, true)
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 14:24

sauf que si je modifie le champ "openFrmPostSave" après le docUI.Save, le fenetre de demande d'enregistrement de modifications s'ouvre ...
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 14:33

Das ce cas, dans ton masque crée un champ openFrmPostSave masqué en notes et avant le docUI.Save
tu fais : Call docUI.FieldSetText("openFrmPostSave", "1")
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 14:45

ca me sort l'erreur "Field value cannot be edited" ....
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Messagepar Raziel » 18 Juil 2011 à 14:46

Tu as bien mis ton champ en type texte modifiable ?
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Messagepar MdmZ » 18 Juil 2011 à 14:55

ca fonctionne mais j'ai toujours le même message d'erreur au niveau du problème de conflit..

Ce message n'apparait pas la premiere fois que j'essaye d'envoyer le document mais lorsque je l'ouvre ensuite et que j'essaye de le réenvoyer..
MdmZ
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 128
Inscrit(e) le : 16 Juin 2011 à 13:33

Suivant

Retour vers Développement

cron