Sub Click(Source As Button)
Dim session As New NotesSession
Dim cdb As NotesDatabase
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim dbname As NotesItem
Dim agamount As NotesItem
address= ws.Prompt(13,"Диалог выбора БД","") ' PROMPT_CHOOSEDATABASE (13), return массив(2) строк
Set db= Session.GetDatabase(address(0), address(1), False) ' Назначение выбранной БД
Set cdb = session.CurrentDatabase 'Назначение текущей БД "Расписание Агентов"
Set doc = New NotesDocument( cdb )
doc.Form = "Shedule Creation"
doc.dbname = address(2)
'Объявление переменной по типу AgentList, по которому будет идти заполнение файла
Const N=75 'Максимальное количество элементов выводимого списка
Dim agl (1 To N) As agentslist
Dim agl2 (1 To N) As agentslist
'Номер первого шага заполнения файла и массива переменной даты
i%=2
Dim intdata (1 To N) As Integer
Dim intdata2 (1 To N) As Integer
agl(1).AgentName$="Имя агента"
agl(1).AgentLastRun="Время"
Forall a In db.Agents ' следует добавить проверку на наличие таких агентов впринципе
If a.trigger=TRIGGER_SCHEDULED And a.IsEnabled Then
agl(i%).AgentName$=" "+a.name 'добавление пробела вначале, чтобы текстовый редактор
'notepad разделял agentlastrun[i-1] и agentname[i]
agl(i%).AgentLastRun=Right$(Cstr(a.lastrun),8)
'У нас может получится время agentlastrun в двух форматах (размерность 8): XX:XX:XX и X:XX:XX_.
'Для корректной обработки нужно второй формат нужно переделать в первый,
'добавив пробел в начале, в итоге получится: _X:XX:XX
If Mid$(agl(i%).agentlastrun,2,1)=":" Then
agl(i%).AgentLastRun=" "+agl(i%).AgentLastRun
End If
intdata(i%)=Cint(Left$(agl(i%).agentlastrun,2))*100+Cint(Mid$(agl(i%).agentlastrun,4,2)) ' Преобразование текстовой даты в числовой формат
Print "Добавление агента", agl(i%).AgentName$, "в список"
i%=i%+1
End If
End Forall
'Пузырьковая сортировка: сортируем по числовой (integer) дате, меняем местами элементы списка agl
'Итак, последний элемент списка имеет номер i-1, поэтому
Print "Сортировка списка агентов"
j%=i%-1
While j%>0
j%=j%-1
For k%=1 To i%-2
If intdata(k%)>intdata(k%+1) Then
temp%= intdata(k%+1)
intdata(k%+1)=intdata(k%)
intdata(k%)=temp%
temp1$=agl(k%+1).agentname$
temp2$=agl(k%+1).agentlastrun
agl(k%+1).agentname$=agl(k%).agentname$
agl(k%+1).AgentLastRun=agl(k%).AgentLastRun
agl(k%).agentname$=temp1$
agl(k%).agentlastrun=temp2$
End If
Next
Wend
Print "Построение таблицы расписания"
'Количество элементов списка= i%-1, 1-ая строчка: заглавие
Dim rti As New NotesRichTextItem(doc, "stable")
Call rti.AppendTable(i%-1,2)
Dim rtnav As NotesRichTextNavigator
Set rtnav = rti.CreateNavigator
Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)
For irow%=1 To i%-1 Step 1
For icolumn%=1 To 2 Step 1
Call rti.BeginInsert(rtnav)
If icolumn%=1 Then
Call rti.AppendText(agl(irow%).agentname$)
End If
If icolumn%=2 Then
Call rti.AppendText(agl(irow%).agentlastrun)
End If
'Call rti.AppendText("Row " & iRow% & ", _ Column " & iColumn%)
Call rti.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Next
Next
Print "Сохранение"
doc.agamount=Cstr(i%-2)
Call doc.Save( False, False )
Call ws.ViewRefresh 'Optional: Обновление вьюшки со свежесозданным документом внутри
End Sub