и сново о удалении документов

Тема в разделе "Lotus - Программирование", создана пользователем SkinGreek, 4 сен 2008.

  1. SkinGreek

    SkinGreek Гость

    Всем привет

    Возникла странный трабл, если коротко суть ее в том что UnprocessedDocuments не сбрасывается при отработки скрипта удаляющего документы.
    В похожей задаче DomDoc посмотрел что алгоритм удаления такой же как у меня, но они вызывают агента, а у меня он отрабатывает прямо в Action.
    Что за глюк такой? неужели ему надо обязательно в агенте отрабатывать?
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    почему глюк? а код то какой?
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    =я в бреду=
     
  4. SkinGreek

    SkinGreek Гость

    код прост до нельзя

    Код (Text):
        Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim parentDoc As NotesDocument
    Dim nextParentDoc As NotesDocument
    Dim workspace As New NotesUIWorkspace
    Dim collection As NotesDocumentCollection

    Set db = session.CurrentDatabase

    Set collection =db.UnprocessedDocuments

    Set parentDoc = collection.GetFirstDocument()

    While Not(parentDoc Is Nothing)    
    Set view = db.GetView(parentDoc.NoteID)
    If Not view Is Nothing Then    
    Set doc = view.GetFirstDocument()
    While Not(doc Is Nothing)
    Call doc.Remove(True)
    Set doc = view.GetFirstDocument()
    Wend           
    Call view.Remove
    End If
    Set nextParentDoc = collection.GetNextDocument(parentDoc)
    Call parentDoc.Remove( True )
    Set parentDoc = nextParentDoc
    Wend
    Call workspace.ViewRefresh
    Вставил в агента все норм сработало.
    Глюк был в следующем
    Есть 3 документа. Выделяю 2 дока нажимаю на кнопку. - В дебаге кол-во доков в колекции = 2. Удаляет без проблем.
    Курсор стоит на оставшемся.
    жму кнопку вылетает ошибка, в дебаге пишется что в колекции 2! документа. То есть кол-во ранее удаленых доков.
    Выделяю последний документ(пробелом чтоб галочка появилась).
    Жму на кнопку - вылетает ошибка, в дебаге пишется что в колекции 3! документа.

    Это по меньшей мере странное поведение, я ожидал что функция Remove сделает документ "обработанным".

    И еще сразу хотел бы спросить совета.
    Задача состоит в том чтобы к документу относились другие документы(как бы чилдрены). На главной форме есть кнопочка и по нажатию на нее чтоб появлялась view с возможностью добавления и удаления чилдренов.
    Задачу я решил через фолдеры, и имя фолдера есть noteid парентовского документа.
    Сейчас практически все работает(кнопка открывающая view срабатывает со второго раза, если фолдер еще не создан).
    Эту проблему я так и не решил, но мне интересно есть ли более изящное решение нежели плодить фолдеры для каждого документа-парента?


    Omh
    че так? )))
    не думайте что я считал вас телепатами))), просто посчитал что если я написал так же как в DomDoc созданном уважаемыми программерами лотуса, то код собсно не требовался. В общем то так и оказалось, по какой то причине он работает ТОЛЬКО в агенте. Это меня оч удивляет
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    это , возможно, из-за того что не вызвали УнпроцеседДок

    что то не понял зачем куча фолдеров.... почему нельзя всё хранить в одном виде?
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вот ужас. :)
    Обычно через встроенное представление делают.
     
  7. oxystile

    oxystile Гость

    добавь в конце Call notesUIView.DeselectAll
    (где Dim uiview As NotesUIView
    Set uiview = ws.CurrentView)
    и посмотри правильно ли он теперь будет брать количество доков
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    oxystile
    Не в бровь, а в глаз.
    Из Action'a надо вызывать DeselectAll, маладца!
     
  9. SkinGreek

    SkinGreek Гость

    а удалить документ, а отредактировать?
    Этот вариант рассматривался, но шустря по форуму я замечал такие темы как "как узнать какой документ выделен?" то есть в встроеных представлениях как я понял нельзя узнать выделенный документ, то есть не отредактировать не удалить их незя.Честно гвооря я не пробовал внедрять представление но судя по темам форума и ответам я понял что такое представление катит ток для отображения
    oxystile
    Ок спасиб погляжу завтра. Но согласитесь весьма странное поведение:)
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    SkinGreek
    В 6-ке и выше с embedded view всё в шоколаде: т.к. появилась возможность показывать кнопки из embedded view.
    Вместе с этим отпали многие проблемы.
     
  11. SkinGreek

    SkinGreek Гость

    Morpheus
    А блина ток сейчас до меня дошла идея при открытии одного фолдера "отображать только найденные".
    ладно если собирусь с мыслями переделаю, надеюсь затыков много не поймаю на нем.
    Сразу не додумался потому что у меня врезалось в голову такая аксиома "параметризованных view нет" И в принципе их действительно нет, а о этом методе я и забыл. и название его тоже, я ток разок его видел в документации:)

    Omh
    я специально проверял, у меня не показалось может я был совсем не прав?
    А отфильтровать его тогда можно? ладно попробую порыскать, но надежда на гугл уже совсем отпала про лотус он мне мало что выдает:blink:
    если не сложно тыкнете носом на примерчик похожей задачи?:$

    В лотусе профан полный, даже читая доки полной картины не сложится даже за 6 месяцев. по крайней мере у меня:(
     
  12. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    embettedview + showsinglecategory + F1
    тоесть вложенный вид в форме. у него есть свойство ПоказыватьОднуКатегорию, тоесть какую категорию в текстовом формате Вы зададите, то он (встр.вид) и покажет
     
Загрузка...

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