Определение кол-ва пользователей в группе

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

  1. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Есть задача: перед сохранением/отправкой документа записать в переменную количество пользователей из поля "SendTo" текущего документа, чтоб знать скольким пользователям ушло письмо.
    Поле "SendTo" - мультивалю, выбор из адр. книги: таким образом в поле могут быть указаны группы пользователей.

    Как бы мне пробежаться по этому полю и посчитать пользователей в указанных группах? :blink:
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Забавная задача.
    Я как раз недавно делал что-то похожее: писал анализатор Address book'a.

    Я пошёл по ручному пути (там у меня всё в виде класса оформлено было): ищёшь все группы в names.nsf на серваке, и проходишься по полю Members, не забывая что там тоже могут быть указаны группы.
    Экспандишь это дело, до тех пор, пока не исчезнут вложенные группы и смотришь, сколько человечков насчиталось.
    Но забываем, что в группе могут быть указаны и сервера :blink:

    Есть методы, которые возвращаю группы юзера, но не юзеров группы :)
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Недокументированная @ExpandNameList не поможет? - работала вроде до 4-го уровня вложенности групп.
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.081
    Симпатии:
    300
    вот на скрипте:
    http://searchdomino.techtarget.com/tip/0,2...46_mem1,00.html

    This code generates a list of users from a group name from the NAB. The code will determine whether the name corresponds to a person or group, and if it's a group, then the code will break it down into all person members. The code works even if there are nested groups. However, the code is restricted by the Domino limit on recursive calls, which depends on the Domino Directory.
    Code
    Код (Text):
    Function getPersonMembers
    (groupName As String) As Variant
    Dim nab As New NotesDatabase("","names.nsf")
    Dim grpView As NotesView, personView As NotesView
    Dim doc As NotesDocument , doc2 As NotesDocument
    Dim namesList As Variant
    Dim memberList() As String
    Dim grpname As NotesName

    If nab.Server = "" Then
    Set nab = New NotesDatabase
    ("Servername","names.nsf")
    End If
    Set grpView = nab.GetView("Groups")
    Set personView = nab.GetView("($VIMPeople)")
    Set doc = grpView.GetDocumentByKey(groupName)

    Redim memberList(0) As String
    If Not doc Is Nothing Then
    Forall mbrs In doc.members
    Set grpname = New NotesName(Cstr(mbrs))
    Set doc2 = personView.GetDocumentByKey
    (grpname.Common)
    tmnE = Elements(memberList)
    x = 0
    If doc2 Is Nothing Then
    namesList = getPersonMembers(grpname.Common)

    If Ubound(namesList) > 0 Then

    Redim Preserve memberList(0 To tmnE +
    Ubound(namesList))
    Forall nms In namesList
    memberList(tmnE + x) = Cstr(nms)
    x=x+1
    End Forall
    End If
    Else
    Redim Preserve memberList(0 To tmnE + x)
    memberList(tmnE + x) = Cstr(mbrs)
    End If  
    End Forall
    Else ' entry is either a person or a mail in db.
    t = Elements(memberlist)
    Redim Preserve memberList(t)
    memberList( t) = Cstr(groupName)

    End If
    getPersonMembers = memberList
    End Function
    а вот совмещенный класс
    http://www.eknori.de/2008-04-27/is-user-a-...a-nested-group/
     
  5. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    lmike класс! то, что надо! спасибо
     
Загрузка...

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