• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Ошибка в Stampall

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

wowa

Добрый день, что делать, если в строке Call argdoccol.stampall("deleted","1") ошибка: Notes erorr: Document has been deleted

Код:
Function checkColConflicts(argdoccol As NotesDocumentCollection) As NotesDocumentCollection
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As notesdocument
Set db = session.currentdatabase

If argdoccol Is Nothing Then
Set checkcolConflicts = db.search("test",Nothing,0)
Exit Function
End If
If argdoccol.count = 0 Then
Set checkColConflicts = argdoccol
Exit Function
Else
Set doc = argdoccol.getfirstdocument
While Not doc Is Nothing
If doc.hasitem("$Conflict") Then
Call argdoccol.stampall("deleted","1") ' Notes erorr: Document has been deleted
Set checkcolConflicts = db.search("test",Nothing,0)
Exit Function
End If
Set doc = argdoccol.getnextdocument(doc)
Wend
Set checkcolConflicts = argdoccol
End If

End Function
 
проверять каждый документ из коллекции перед использованием stampall на doc.IsDeleted и убрать из коллекции лишние (где doc.IsDeleted=True), или как-то обрабатывать эту ошибку (on error ... goto ... - например, в обработчике пройтись по всем неудаленным документам коллекции), или просто "гасить" (on error ... resume next)
 
проверять каждый документ из коллекции перед использованием stampall на doc.IsDeleted и убрать из коллекции лишние
Тогда уже StampAll использовать без особого толку :)
Хотя, смотря в код, я вообще не понимаю, почему его использовали!

wowa, ты ж нафлудил уже на "мегагуру", а хелп читать ленишься! :)
Зачем ты использовал тут StampAll?! Ты же ранее пошел проверять каждый док из коллекции на $Conflict!
У тебя при наличии хотя бы одного документа-конфликта в коллекции все документы коллекции будут отмечены "deleted" = "1"!
Еще и search дублируется зачем-то, можно было бы просто в результат функции пихать ту же коллекцию. Либо условие поиска нам приведено неверное/нереальное. А, если реальное, то какое-то оно странное о.О
 
А это нормально что в цикле идет перебор документов в коллекции и в каждой итерации делается stampall? :)
 
ну, в моей первоначальной версии ответа была фраза "просто не использовать его". Думаю, можно обойтись обработчиком - если не получилось по-быстрому всё обработать StampAll, то в коде, вызываемом по "on error ... goto ... " делать это долго и нудно)
 
Тогда уже StampAll использовать без особого толку :)
Хотя, смотря в код, я вообще не понимаю, почему его использовали!

wowa, ты ж нафлудил уже на "мегагуру", а хелп читать ленишься! ;)
Зачем ты использовал тут StampAll?! Ты же ранее пошел проверять каждый док из коллекции на $Conflict!
У тебя при наличии хотя бы одного документа-конфликта в коллекции все документы коллекции будут отмечены "deleted" = "1"!
Еще и search дублируется зачем-то, можно было бы просто в результат функции пихать ту же коллекцию. Либо условие поиска нам приведено неверное/нереальное. А, если реальное, то какое-то оно странное о.О

Да я не писал эту ерунду. Свалили великие разработчики в отпуск, вот и замещаю их, времени вообще нет читать что-то.
Есть главный док, у него есть респонсы. Если хоть один респонс - конфликт, то удалить все респонсы. Насколько я понял.

Добавлено:
wowa, ты ж нафлудил уже на "мегагуру", а хелп читать ленишься! ;)

Не правда, все по делу. Пару дней назад пришло сообщение что я тут очень давно не появлялся, вот и решил зайти пару раз :)
 
Не правда, все по делу
Та я про флуд в шутку :)

Есть главный док, у него есть респонсы. Если хоть один респонс - конфликт, то удалить все респонсы. Насколько я понял.
А если другие респонсы являются результатом многочасового труда односельчан? Что-то тут не так. Может надо было из респосов только конфликты удалить?
Только в таком случае, "удаление" отметкой флагом не предотвращает от возврата потом этого помеченного документа в качестве ответного в коллекции, с помощью doc.Responses.
Поэтому, тут надо удалять либо совсем, либо отмечать док и удалять связь. А в случае восстановления документа и связь восстанавливать.
Только тут надо быть осторожным, иногда, т.е. по невыясненным причинам, при многократных сменах связей (doc.MakeResponse) появляются странные баги с документом.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab