• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Antigo
  • Дата начала
A

Antigo

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
хэлп дизигнера - диалогбокс (NotesUIWorkspace.DialogBox)
 
A

Antigo

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
еще раз - диалогбокс
если мы говорим об "однопользовательском" режиме
если говорим о многопользовательской работе и отображении в реальном времени... - нотусня так не умеет (стандартным способом), и не должна уметь
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
ЗЫ. В "однопользовательском" режиме и при использовании Dialogbox не должно быть конфликтов сохранения. Вы часом не сохраняете ли первый док-т в бэкэнде после обновления в нем полей?
 
A

Antigo

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

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
BIT
2
1. isUIDocOpen работает правильно. notesDocument должен быть получен из notesUIDocument.
2. переносите данные ночью, когда документы открыты быть не могут.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
A

Antigo

это к первому ответу написал. а ко-второму, данные переносятся много раз в течение дня
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
какие еще могут быть варианты?
Не помню, поможет ли штатная блокировка документов.... В любом случае можно организовать свою.Соответственно, при открытии документ блокируется, и агент может проверить его статус...
 
A

Antigo

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

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
а как организовать свою?
При открытии доекумента в специальной базе создаем блокировочный документ с таким же UNID, при попытке повторного создания возникает ошибка - ее и обрабатываем как блокировку. При закрытии документа удаляем блокировочный. Ну и периодически чистим зависшие блокировочные...
 
A

Antigo

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

nvyush

Antigo
КМК, не совсем надёжно. Если два пользователя практически одновременно откроют документ, повторное помещение в папку ошибки не вызовет, в отличие от создания документа с тем же unid.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!