• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

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

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

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

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

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

dimat

Well-known member
31.07.2008
508
0
Всем привет.
Ситуация:
В БД включена блокировка документов
Пользователь открывает документ на редактирование, после некоторых действий(Собираются данные и рисуется таблица в 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 this document was saved while your were editing it. Save your changes also as a Save Conflict document? Да Нет.
Жмем Да - создается конфликтный документ, жмем Нет - данные не сохраняются вобще.
Что сделать чтобы данные сохранялись в том же документе?
 
dimat
скорее всего крому уишного сейва где-то используется еще и обычный сейв, в перед ним нужно делать лоченье или же добиться только одного сейва
 
После doccurr.Close(True) происходит разблокировка документа и изменяются поля в документе на диске. Но перед этим ты уже открыл заблокированный документ. Отсюда и конфликт. Значит, нужно делать принудительную разблокировку перед ws.EditDocument(True, doccurr.Document).
 
скорее всего крому уишного сейва где-то используется еще и обычный сейв, в перед ним нужно делать лоченье или же добиться только одного сейва
Сейвов кроме уишного по кнопке
@Command([FileSave]);
@Command([FileCloseWindow])
Нет
 
Натыкался на ситуацию, когда при наличии поля SaveOptions = "1" обновление рт-поля вызывало "несанкционированное" сохранение документа.
 
После doccurr.Close(True) происходит разблокировка документа и изменяются поля в документе на диске. Но перед этим ты уже открыл заблокированный документ. Отсюда и конфликт. Значит, нужно делать принудительную разблокировку перед ws.EditDocument(True, doccurr.Document).
Код:
		Call doccurr.Document.ReplaceItemValue("Form", "CheckOPO")
[b]Call doccurr.Document.UnLock[/b]
Call ws.EditDocument(True, doccurr.Document)
Call doccurr.Document.ReplaceItemValue("SaveOptions", "0")
Call doccurr.Close(True)

Не помогает
 
скорее всего крому уишного сейва где-то используется еще и обычный сейв, в перед ним нужно делать лоченье или же добиться только одного сейва
Натыкался на ситуацию, когда при наличии поля SaveOptions = "1" обновление рт-поля вызывало "несанкционированное" сохранение документа.
link removed
Возможно rt.Update также вызывает "несанкционированное" сохранение документа при наличии поля SaveOptions = "1". Проверьте наличие вышеуказанного поля на форме и, если оно присутствует, попробуйте без него.
 
link removed
Возможно rt.Update также вызывает "несанкционированное" сохранение документа при наличии поля SaveOptions = "1". Проверьте наличие вышеуказанного поля на форме и, если оно присутствует, попробуйте без него.
Поля SaveOptions на форме нет

Кстати, что за ерунда с форумом? Постаянно просит вводит логин и пасс
 
офф:
Кстати, что за ерунда с форумом? Постаянно просит вводит логин и пасс
о, еще один поймал ошибку Акупаки? - link removed
Ребята, давайте договоримся так: пишем ошибки в указанную выше тему в раздел Обсуждения сайта и форума, админ vital сейчас пхпшник, лотус-форум почти не смотрит, я тоже не всегда заглядываю во все сообщения и темы, чтоб дать ссылку виталу...
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">и указываем детали - что, где и как. диалог на работе(не мой,слегка отмодерировано:rolleyes:), автор смотрел под ие и фф:</div></div><div class="sp-body"><div class="sp-content">спорю с дизайнером
убрался сдвиг или нет
он дурак
я же точно знаю что убрался)
...
у него хром
...
качаю хром
 
Код:
Call doccurr.Close(True)
осторожно, данная команда всегда работает с вылетом лотуса
 
Код:
Call doccurr.Close(True)
осторожно, данная команда всегда работает с вылетом лотуса
Не заметил, чтобы от этой команды Лотус падал (на 7 и 8, меньше не пробовал). Также не заметил, чтобы она работала, как ожидается, т.е. сразу закрывала uidoc. Потому всегда и везде использую только uidoc.Close.
 
Не заметил, чтобы от этой команды Лотус падал (на 7 и 8, меньше не пробовал). Также не заметил, чтобы она работала, как ожидается, т.е. сразу закрывала uidoc. Потому всегда и везде использую только uidoc.Close.
без параметра срабатывает по дефоулу с параметром False а так эта команда работает нормально, только документ закрывается после выполнения всего кода
 
без параметра срабатывает по дефоулу с параметром False а так эта команда работает нормально, только документ закрывается после выполнения всего кода
Я имел ввиду, что в моих опытах вызов Call uidoc.Close(True), не закрывал документ сразу, как можно было бы ожидать, а только после завершения исполнения всего кода, т.е. ничем не отличался от Call uidoc.Close(False) или просто Call uidoc.Close. "А если не видно разницы — зачем писать больше?" :).
 
Call uidoc.Close(True) закрывает документ сразу только если это не текущий документ (текущий как раз-таки будет закрываться только после завершения исполнения всего кода).
Пример не текущего документа - регистрация пользователей в цикле. Действия одного цикла: в коде кнопки находим документ Person АК сервера, вносим в него изменения, открываем его с помощью EditDocument, сохраняем в UI (NotesUIDocument.Save), а затем закрываем с помощью uidoc.Close(True) - док закрывается немедленно.
 
Call uidoc.Close(True) закрывает документ сразу только если это не текущий документ (текущий как раз-таки будет закрываться только после завершения исполнения всего кода).
Вот и я о том же. Мои эксперименты ограничивались только текущим документом, код вызывался из кнопки формы.
 
Call uidoc.Close(True) закрывает документ сразу только если это не текущий документ (текущий как раз-таки будет закрываться только после завершения исполнения всего кода).
Пример не текущего документа - регистрация пользователей в цикле. Действия одного цикла: в коде кнопки находим документ Person АК сервера, вносим в него изменения, открываем его с помощью EditDocument, сохраняем в UI (NotesUIDocument.Save), а затем закрываем с помощью uidoc.Close(True) - док закрывается немедленно.
и что даже RedBox нету? ;)
 
это говорит лишь о моём неумении сделать так, чтобы они были :ithx: , хотя Close(True) используется ещё с 6-ки повсеместно :lovecodeby:

Добавлено:
Только что специально проверил, брал NotesUIDocument и из Source (на QO) и из NotesUIWorkspace - никаких красных окон нет, Лотус не вылетает.
Прим: у себя в проектах NotesUIDocument всегда беру из Source, правда этим обходятся совсем другие баги..
 
Мы в соцсетях:

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

Курс AD