Обновление полей

Antigo

Active Member
16.02.2012
40
0
#1
Суть проблемы такова. Нужно обновить поля в открытом документе. То есть, я открываю этот документ и одновременно открываю второй документ. во втором делаю изменения и при сохранении его часть полей из него должно пронаследоваться в первый ПРИ ОТКРЫТОМ первом документе.
 

Antigo

Active Member
16.02.2012
40
0
#3
дело в том, что если первый документ открыт, а функция во втором документе меняет поля первого, то при сохранении первого выпадает предупреждение: "Во время работы с документом была сохранена другая его копия. Сохранить и ваши изменения как конфликтующий документ?" соответственно, мне нужно, чтобы при открытом первом документе, функция из другого в реальном времени могла изменить значения полей. и уже при сохранении первого поля уже были поменяны в нем. как-то так
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 433
351
homepage.mac.com
#4
еще раз - диалогбокс
если мы говорим об "однопользовательском" режиме
если говорим о многопользовательской работе и отображении в реальном времени... - нотусня так не умеет (стандартным способом), и не должна уметь
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 084
13
#5
ЗЫ. В "однопользовательском" режиме и при использовании Dialogbox не должно быть конфликтов сохранения. Вы часом не сохраняете ли первый док-т в бэкэнде после обновления в нем полей?
 

Antigo

Active Member
16.02.2012
40
0
#8
а вот такой вопрос еще: в одной БД запускаю агент, который переносит некоторые данные в поля документа другой БД. так вот, мне нужно проверить, если документ во второй БД ,куда я переношу данные открыт, то данные не переношу, в противном случае - переношу. пробовал брать документ второй БД и использовать ф-цию notesDocument.IsUIDocOpen , но она почему-то работает как-то криво(возвращает почему-то false, хотя документ открыт). какие еще могут быть варианты?
 

oshmianski

Достойный программист
Lotus team
25.04.2012
546
13
#9
1. isUIDocOpen работает правильно. notesDocument должен быть получен из notesUIDocument.
2. переносите данные ночью, когда документы открыты быть не могут.
 

Antigo

Active Member
16.02.2012
40
0
#10
1. isUIDocOpen работает правильно. notesDocument должен быть получен из notesUIDocument.
2. переносите данные ночью, когда документы открыты быть не могут.
у меня перенос осуществляется агентом, запущенном на сервере
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
Киев (Русь)
#11

Antigo

Active Member
16.02.2012
40
0
#12
это к первому ответу написал. а ко-второму, данные переносятся много раз в течение дня
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 084
13
#13
какие еще могут быть варианты?
Не помню, поможет ли штатная блокировка документов.... В любом случае можно организовать свою.Соответственно, при открытии документ блокируется, и агент может проверить его статус...
 

Antigo

Active Member
16.02.2012
40
0
#14
Не помню, поможет ли штатная блокировка документов.... В любом случае можно организовать свою.Соответственно, при открытии документ блокируется, и агент может проверить его статус...
совет хороший, но, к сожалению, способ со штатной блокировкой не подойдет :) а как организовать свою?
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 084
13
#15
а как организовать свою?
При открытии доекумента в специальной базе создаем блокировочный документ с таким же UNID, при попытке повторного создания возникает ошибка - ее и обрабатываем как блокировку. При закрытии документа удаляем блокировочный. Ну и периодически чистим зависшие блокировочные...
 

Antigo

Active Member
16.02.2012
40
0
#16
При открытии доекумента в специальной базе создаем блокировочный документ с таким же UNID, при попытке повторного создания возникает ошибка - ее и обрабатываем как блокировку. При закрытии документа удаляем блокировочный. Ну и периодически чистим зависшие блокировочные...
спасибо! придумал немного по другому. при открытии кидаю документ в общую папку, при закрытии его удаляю из папки. в агенте проверяю, есть ли документ в папке, и, если он там есть - значит он открыт и наоборот. вроде работает
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#17
Antigo
КМК, не совсем надёжно. Если два пользователя практически одновременно откроют документ, повторное помещение в папку ошибки не вызовет, в отличие от создания документа с тем же unid.