Ошибка в Stampall

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 6 июл 2010.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Добрый день, что делать, если в строке Call argdoccol.stampall("deleted","1") ошибка: Notes erorr: Document has been deleted

    Код (Text):
    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
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    проверять каждый документ из коллекции перед использованием stampall на doc.IsDeleted и убрать из коллекции лишние (где doc.IsDeleted=True), или как-то обрабатывать эту ошибку (on error ... goto ... - например, в обработчике пройтись по всем неудаленным документам коллекции), или просто "гасить" (on error ... resume next)
     
  3. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Тогда уже StampAll использовать без особого толку :)
    Хотя, смотря в код, я вообще не понимаю, почему его использовали!

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

    K-Fire Гость

    А это нормально что в цикле идет перебор документов в коллекции и в каждой итерации делается stampall? :)
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Там есть выход при первом разе, я тож сначала не заметил :)
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ну, в моей первоначальной версии ответа была фраза "просто не использовать его". Думаю, можно обойтись обработчиком - если не получилось по-быстрому всё обработать StampAll, то в коде, вызываемом по "on error ... goto ... " делать это долго и нудно)
     
  7. wowa

    wowa Well-Known Member

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

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Та я про флуд в шутку :)

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    а что за баги-то, в чем проявляются?:)
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    У меня были какие-то баги с репликацией. Не реплицировался конкретный ответный документ, при этом в логе была запись, но я не помню какая именно ((
     
Загрузка...

Поделиться этой страницей