Isvalid в 7ке и 8ке

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

  1. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Всем привет!

    Тут столкнулся со странной проблемой.

    Код в 7ке и 8ке работает по разному. В 7ке документ не проходит проверку If doc.IsValid And Not doc.IsDeleted Then, а в 8ке проходит :eek:oo:

    doc получен из коллекции, коллекция из FTSearch.

    Документ должен быть не видим пользователю, т.к. у него нет к нему доступа, соответственно в коллекции он с незаполненными полями.

    Кто-нибудь знает, что с этим делать? PMR что-ли заводить? :)
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  3. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Видимо, можно использовать проверку на doc.Size <> 0
     
  5. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    abbatik - проверяй на пустоту юнида. Так работает.
    nvy соррь, я забыла и так и не проверила (
     
  6. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Хм, вариант конечно..

    но это же бага...

    PMR все равно не помешает :eek:oo:

    Спасибо за советы :)
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Простите, а что есть PMR? :eek:oo:
     
  8. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Запрос в IBM...
     
  9. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    а чем не устраивает проверка на итем Form?
     
  10. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    не устраивает разная итерпритация одного действия в разных клиентах...
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.047
    Симпатии:
    18
    а если пофиксить базу?
     
  12. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Каким образом?

    Что-то не работает проверка ни на Size <> 0, ни на UniversalID <> "", ни doc.HasItem ( "Form" )... везде Type Missmatch

    Кстати отличие именно в IsValid. В 7ке оно False, в 8ке True.
     
  13. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    abbatik
    в топике писалось насчет IsValid, воркэраунды с проверкой на унид помогали.
    А версия сервера и клиента 8-ка какая (поточнее) у Вас?
     
  14. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    У меня проверка If doc.Size > 0 Then работает. Я правда невалидные документы получал не поиском, db.GetDocumentByUNID
     
  15. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    abbatik
    С коллекцией, полученной по фт-поиску, после получения документа из коллекции работала и такая проверка:
    Код (LotusScript):
    If doc.IsValid And Not doc.IsDeleted Then
    If doc.UniversalID <> "" Then
    приводи код :)
     
  16. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0

    Без проблем :) Соответственно, там где проверка на форму, подставлялись другие.

    Код (Text):
            Dim doc As NotesDocument
    Dim result As Long

    Set doc=collection.GetFirstDocument

    Do Until doc Is Nothing
    If doc.IsValid And Not doc.IsDelete And doc.HasItem ( "Form" ) Then
    Call Me.Add(doc)
    result&=result&+1
    End If

    Set doc=collection.GetNextDocument(doc)
    Loop
     
  17. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
     
  18. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    И что? Если вы про отрицание, то все так и должно быть.

    Собственно разница в том, что IsValid возвращает True в 7ке, и False в 8ке.

    При это проверки на поля возвращают тайа мистматч.
     
  19. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    и тайп миссматч )

    Добавлено: To get: flag = notesDocument.IsDeleted
    Legal values
    True indicates that the document is a deletion stub.
    False indicates that the document exists.
     
  20. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Оно False.
     

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