• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы DNT
  • Дата начала
D

DNT

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

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

Omh

Забавная задача.
Я как раз недавно делал что-то похожее: писал анализатор Address book'a.

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

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

hosm

Недокументированная @ExpandNameList не поможет? - работала вроде до 4-го уровня вложенности групп.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
вот на скрипте:


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
Код:
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

а вот совмещенный класс
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!