Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lotus Notes/Domino: Программирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/269: Рейтинг темы: голосов - 269, средняя оценка - 4.60
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
1

Конфликтные документы

10.10.2010, 09:41. Просмотров 48384. Ответов 40
Метки нет (Все метки)

Всем привет.
Ситуация:
В БД включена блокировка документов
Пользователь открывает документ на редактирование, после некоторых действий(Собираются данные и рисуется таблица в Rich Text Field) документ рефрешится

Код
Call b2.Update
Call doccurr.Document.ReplaceItemValue("Form", "FormName")
Call ws.EditDocument(True, doccurr.Document)
Call doccurr.Document.ReplaceItemValue("SaveOptions", "0")
Call doccurr.Close(True)
Далее ползователь нажимает кнопку с действием
@Command([FileSave]);
@Command([FileCloseWindow])
Вываливается сообщение:
Another copy of thys document was saved while your were editing it. Save your changes also as a Save Conflict document? Да Нет.
Жмем Да - создается конфликтный документ, жмем Нет - данные не сохраняются вобще.
Что сделать чтобы данные сохранялись в том же документе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2010, 09:41
Ответы с готовыми решениями:

Конфликтные документы
Подскажите, как во вьюшке выбрать конфликтные документы?

Как можно отследить конфликтные документы?
Как можно отследить конфликтные документы кроме свойства isConflict в...

Как запретить сохранять конфликтные документы.
Есть документы по которые ночью правятся агентом - по другому не сделаешь что...

документы из View
Подскажите, как забрать все документы из view (как я понимаю, сделать...

Профильные документы
Хочу запретить изменение полей профиля. Т.е. чтобы юзер с администраторскими...

40
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
12.10.2010, 08:59 21
Цитата Сообщение от ToxaRat
Call doccurr.Close(True)


осторожно, данная команда всегда работает с вылетом лотуса
Это как то влияет на создание конфликтных доков?
0
Mydyvys
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
12.10.2010, 09:20 22
Откажись от блокировки и не будет конфликтов. :lovecodeby:
0
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
12.10.2010, 09:45 23
Цитата Сообщение от Medevic
Откажись от блокировки и не будет конфликтов. smile.gif
А если 2 одновременно будут редактировать док без включенной блокировки?
или это можно как то обойти без включения блокировки?
0
Mydyvys
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
12.10.2010, 10:49 24
Если конфликты так критичны, то пусть одновременно не редактируют.
0
mmykyshy
0 / 0 / 0
Регистрация: 16.03.2008
Сообщений: 49
12.10.2010, 12:31 25
Может не совсем в тему, как вариант можно попробовать программную лочку документов. Ее использовали еще до 6 сервера:

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

дальше точно не помню, кажется, то ли на QueryClose, то ли на Postmodechange (при условии что source.edytmode = false), а может и туда и туда вешается разлочка - обнуляется имя пользователя и время в системном документе.

Работает железно, даже если Лотус и грохается в процессе редактирования документа или при сохранении, и документ становится условно залочен долгое время, админ или продвинутый пользователь может разлочить документ вручную, найдя системный документ в спец виде по униду и обнулив поля.

Надеюсь что немного букв.
0
ToxoRot
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
12.10.2010, 13:35 26
Цитата Сообщение от nnikyshi
Работает железно, даже если Лотус и грохается в процессе редактирования документа или при сохранении, и документ становится условно залочен долгое время, админ или продвинутый пользователь может разлочить документ вручную, найдя системный документ в спец виде по униду и обнулив поля.
боги, неужто нельзя было через екшен сделать, а не лезть руками поля чистить :lovecodeby:
0
rymsk
0 / 0 / 0
Регистрация: 12.11.2009
Сообщений: 882
12.10.2010, 13:43 27
Цитата Сообщение от ToxaRat
боги, неужто нельзя было через екшен сделать, а не лезть руками поля чистить ;)
Не - эт они для приличия так написали... А на самом деле они лочку док-та напрямую в файле БД через HEX Editor снимают...
0
ToxoRot
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
12.10.2010, 13:59 28
Цитата Сообщение от rinsk
Не - эт они для приличия так написали... А на самом деле они лочку док-та напрямую в файле БД через HEX Editor снимают...
;)
0
mmykyshy
0 / 0 / 0
Регистрация: 16.03.2008
Сообщений: 49
12.10.2010, 15:42 29
ToxaRat, да нафига экшн, у каждого пользователя стоит лицензионный ScanEZ ;)

Конечно, есть уи интерфейс, я просто мысль показываю
0
ToxoRot
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
12.10.2010, 16:15 30
Цитата Сообщение от nnikyshi
у каждого пользователя стоит лицензионный ScanEZ
(в поиске смайла где колобок подавился попкорном...)
0
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
13.10.2010, 10:37 31
Решил попробовать сделать как написал nnikyshi, снял Allow documents locking. С 1 учетки открыл документ на редактирование, со второй пытаюсь открыть этот же документ на редактирование, пишет документ уже заблокирован пользователем таким то. Почему так?
И еще вопрос: для чего необходимо указывать Административный сервер, помимо блокировки документов?
0
mmykyshy
0 / 0 / 0
Регистрация: 16.03.2008
Сообщений: 49
13.10.2010, 13:17 32
База одна или есть реплики? Поменяйте свойство на админ сервере и дождитесь пока свойство отреплицируется если есть реплики
Админ сервер много для чего нужен, например, перебивать names поля...
Некоторые любят добавлять функцию в скедульный агент, чтобы агент отрабатывался только на админ сервере... т.е. в свойствах стоит run on any server, а программно работает только на админ сервере
0
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
13.10.2010, 13:27 33
База одна, реплик нет. Октрываю свойство бд в клиенте снимаю блокировку перезахожу в бд проверяю - блокировки нет, рядом стоят 2 компа с разными учетками на них пробую открывать док, результат такой как будто блокировка включена. Вот я и думаю может кэширование какое есть этих свойств?
0
hosm
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
13.10.2010, 13:31 34
Цитата Сообщение от dymat
И еще вопрос: для чего необходимо указывать Административный сервер, помимо блокировки документов?
Админ сервер можно использовать для обновления дизайна баз из шаблонов (задача design) только на админ.сервере (при установке соответствующей галки).

Добавлено:


Цитата Сообщение от dymat
Вот я и думаю может кэширование какое есть этих свойств?
перезайти в клиент/drop all помогает
0
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
13.10.2010, 13:54 35
Цитата Сообщение от OKEN
перезайти в клиент/drop all помогает
drop all выполнил, все равно документы блокируются
0
mmykyshy
0 / 0 / 0
Регистрация: 16.03.2008
Сообщений: 49
13.10.2010, 14:58 36
попробуйте откомпактить, некоторые свойства только после перекомпакта подхватываются
0
VtodSh
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
13.10.2010, 15:11 37
dymat
Галкой и админсервером вы включаете/отключаете HardLock, т.е. возможность блокировать в бэкэнде: NotesDocument.Lock() и NotesDocument.UnLock().
То, что доки всё равно блокируются при переводе в режим редактирования (в UI) - это называется SoftLock (не зависит от галки и админсервера, блокировка происходит на клиенте автоматически, т.е. это встроенная возможность клиента 6 и более), оно отключается в notes.ini.
См. LND65_SoftLock.pdf (благодарности за компиляцию принимает Mitka Akulov )
0
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
13.10.2010, 15:42 38
Цитата Сообщение от VladSh
Галкой и админсервером вы включаете/отключаете HardLock, т.е. возможность блокировать в бэкэнде: NotesDocument.Lock() и NotesDocument.UnLock().
То, что доки всё равно блокируются при переводе в режим редактирования (в UI) - это называется SoftLock (не зависит от галки и админсервера, блокировка происходит на клиенте автоматически, т.е. это встроенная возможность клиента 6 и более), оно отключается в notes.ini.
См. LND65_SoftLock.pdf (благодарности за компиляцию принимает Mitka Akulov wink.gif )
VladSh Спасибо за исчерпывающий ответ
и еще небольшее уточнение:


Цитата Сообщение от VladSh
То, что доки всё равно блокируются при переводе в режим редактирования (в UI) - это называется SoftLock (не зависит от галки и админсервера, блокировка происходит на клиенте автоматически, т.е. это встроенная возможность клиента 6 и более), оно отключается в notes.ini.
Notes.ini в папке клиента?

UPD: Вопрос снят.
0
VtodSh
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
13.10.2010, 17:15 39
dymat
Я усомнился в том, что Ваша проблема из-за блокировки, т.к. у меня куча форм, где есть Soft-locking, и это работает - реально переоткрываются доки для отображения изменений в ричтексте.. Сейчас проверил (LN 6.5.1, 8.5.1-8.5.2.) - всё работает нормально, никаких сообщений о конфликтах при сохранении нет.

Думаю, что возможно 2 варианта:
- док где-то сохраняется в бэкэнде, т.е. либо где-то на событиях документа или подформ либо SaveOptions="1" + NotesUIDocument.Refresh(True);
- док открывается пользователем в режиме для чтения, его изменяет какой-то другой агент, затем пользователь переходит в режим редактирования, делает изменения, сохраняет документ и получает сообщение о сохранении как конфликта. Я сам на такое натыкался, писал об этом здесь, но тупые американцы не хотят понимать...

Добавлено: P.S. Soft-Lock не советую отключать, блокировка хоть и косая, но зато самая быстрая; в пределах текущего сервера работает приемлемо.
0
dymot
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
13.10.2010, 17:35 40
VladSh
Моя проблема была из-за Hard locking, просто до Вашего поста о типах блокировок я о них не знал, сейчас убрал хард блокировку и оставил софт - все стало нормально
0
13.10.2010, 17:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2010, 17:35

Вырезать документы
Необходимо определенные документы вырезать и перенести в другую базу Ситуация...

Линки на документы
Доброго времени суток! Перерыл весь форум.... но так ничего не нашел, хотя...

Документы представления
Как вывести все идентификаторы документов из представления? Есть наверное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru