Page 1 sur 3

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

MessagePublié: 18 Juil 2011 à 10:48
par MdmZ
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,

MessagePublié: 18 Juil 2011 à 11:12
par Raziel
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.

MessagePublié: 18 Juil 2011 à 12:53
par MdmZ
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

MessagePublié: 18 Juil 2011 à 13:03
par Raziel
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.

MessagePublié: 18 Juil 2011 à 13:35
par MdmZ
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..

MessagePublié: 18 Juil 2011 à 13:38
par Raziel
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.

MessagePublié: 18 Juil 2011 à 13:47
par MdmZ
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 ?

MessagePublié: 18 Juil 2011 à 13:56
par Raziel
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.

MessagePublié: 18 Juil 2011 à 14:05
par MdmZ
Je n'ai pas compris,
Comment modifier ce champs autrement ?

MessagePublié: 18 Juil 2011 à 14:09
par Raziel
Après ton : docUI.Save

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

MessagePublié: 18 Juil 2011 à 14:24
par MdmZ
sauf que si je modifie le champ "openFrmPostSave" après le docUI.Save, le fenetre de demande d'enregistrement de modifications s'ouvre ...

MessagePublié: 18 Juil 2011 à 14:33
par Raziel
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")

MessagePublié: 18 Juil 2011 à 14:45
par MdmZ
ca me sort l'erreur "Field value cannot be edited" ....

MessagePublié: 18 Juil 2011 à 14:46
par Raziel
Tu as bien mis ton champ en type texte modifiable ?

MessagePublié: 18 Juil 2011 à 14:55
par MdmZ
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..