Удалить все документы в категоризированной вью.

Тема в разделе "Lotus - Программирование", создана пользователем Jooz, 10 мар 2011.

  1. Jooz

    Jooz Гость

    Коллеги, имеется ли такая возможность?

    Есть вьюшка в которой тысячи категорий, в каждой категории может быть от 1 до 100 документов, внутри категории доки отсортированы по дате. Задача: в каждой категории оставить только 1 документ.

    Подскажите имена классов которыми можно порешать эту проблему.

    Делать циклом, т.е. проверять уникальность документа по отношению к другому это 20 000 на 20 000 операция, т.е. 2 суток работы агента. Нужно сделать быстрее. Для этого и создал вью, где уже нужно только пробежаться по категориям и шлепнуть хвост. А вот как, что не докумекаю.
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Для разовой задачи в качестве идеи - сделать вьюху с флагом Generate Unique Keys in Index и оставить только эти документы? (ну, кинуть их в папку или каким-то уникальным полем отметить)
     
  3. Jooz

    Jooz Гость

    К сожалению задача ежедневная.
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В этом случае, КМК, проще при добавлении новых документов проверять, нет ли уже таких же в категории и, если есть, помечать в спецполе как "подлежащий чистке". Сделать представление по данному спецполю и удалять агентом все документы в данном представлении.
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Поможет класс NotesViewNavigator.
     
  6. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    А зачем каждый к каждому? Делается в один проход. Уникальные значения скидывать в лист(как вариант). В каждом доке брать поле категории и смотреть, есть ли оно в листе. Если нет, то добавить в лист, док не трогать, если есть, док в мусор...
     
  7. Jooz

    Jooz Гость

    NotesViewNavigator - отличная идея, помогло!!!

    Добавлено:
    Тоже не быстро, когда у Вас массив вырастит до 1000 записей и более, каждый новый документ вы будите прогонять по этому массиву. Т.е. вначале ф-ия работать будет быстро, а потом начнет замедляться и "фактически" придет 1 к 1.
     
  8. rinsk

    rinsk Lotus team
    Lotus team

    Регистрация:
    12 ноя 2009
    Сообщения:
    799
    Симпатии:
    78
    если во вьюшке сделать Total то оч шустро будет...

    Код (LotusScript):
    %REM
    Agent $MessageID
    Удаляет из журнальной базы письма с одинаковыми $MessageID
    Created 20.03.2010 by Rinat N. Karimov/TAPB/RU
    Description: Comments for Agent
    %END REM

    Option Public
    Option Declare

    Sub Initialize()
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim v As NotesView
    Dim nv As NotesViewNavigator
    Dim en As NotesViewEntry
    Dim cl As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim cnt As Long
    Dim va (1) As String
    va(0)="$MessageID"
    va(1)="$MessageID2"
    Set db=s.Currentdatabase
    ForAll vn In va
    Set v=db.Getview(vn)
    Call v.Refresh()
    v.Autoupdate=False
    Set nv=v.Createviewnav()
    Set en=nv.Getfirst()
    Do While Not en Is Nothing
    ' Columnvalues(3) содержит totals категории...
    If en.Columnvalues(3)>1 Then
    'Print en.Columnvalues(0) & "--" &en.Columnvalues(3)
    Set cl=v.Getalldocumentsbykey(en.Columnvalues(0),True)
    Set doc=cl.Getfirstdocument()
    Call cl.Deletedocument(doc)
    Call cl.Removeall(True)
    End If
    cnt=cnt+1
    Set en=nv.Getnextcategory(en)
    Loop
    'Print "Done..." &cnt
    End ForAll
    End Sub
     
Загрузка...
Похожие Темы - Удалить все документы
  1. wowa
    Ответов:
    3
    Просмотров:
    2.890
  2. Вероника Эл
    Ответов:
    5
    Просмотров:
    199
  3. Ruslan737
    Ответов:
    5
    Просмотров:
    1.820
  4. k85
    Ответов:
    6
    Просмотров:
    156
  5. WebWare Team
    Ответов:
    3
    Просмотров:
    101

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