Можно так:
1. Делаю вьюху примерно такую:
Тип задания = Исполнитель = Обработано (1/0)
2. Агент на LS, который проходит по всем документам вида и формирует в Excel готовый отчет
он идет последовательно по документам , проверяет, изменились ли первые 2 столбца
если не изменились - увеличивает счетчики пришедших и обработанных документов в зависимости от 3 столбца
если изменились - выводит в excel строчку с набранными счетчикам, обнуляет их, дальше считает следующий отдел или тип задания
Пример:
Sub Initialize
Dim view As NotesView
Dim column As NotesViewColumn
Dim viewentries As NotesViewEntryCollection
Dim viewnav As NotesViewNavigator
Dim viewentry As NotesViewEntry
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim curuser As String, curdate1 As NotesDateTime, curdate2 As NotesDateTime, curtype As String, curflag As Integer, curcount1 As Long, curcount2 As Long, curcount3 As Long, curcount4 As Long, curcount5 As Long, curcount6 As Long
Dim allcount1 As Long, allcount2 As Long, allcount3 As Long, allcount4 As Long, allcount5 As Long, allcount6 As Long
Dim date1 As NotesDateTime, date2 As NotesDateTime, inputdate1 As String, inputdate2 As String
Dim excelAppObject As Variant
Dim excelWorksheetObject As Variant
Dim excelLine As Long
On Error Goto processerror
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Set date1 = New NotesDateTime(uidoc.FieldGetText("date1"))
Set date2 = New NotesDateTime(uidoc.FieldGetText("date2"))
Print "Создание объекта MS Excel"
Set excelAppObject = CreateObject("Excel.Application")
If excelAppObject Is Nothing Then
Msgbox "Невозможно создать объект Excel"
Exit Sub
End If
Print "Подготовка таблицы Excel"
excelAppObject.Visible = False
Call excelAppObject.Workbooks.Add
Set excelWorksheetObject = excelAppObject.ActiveSheet
'форматирование
excelWorksheetObject.Name = "Отчет по видам услуг"
excelWorksheetObject.Cells.Font.Size = 8
excelWorksheetObject.Rows("1:2").Select
excelAppObject.Selection.Font.Bold = True
excelAppObject.Selection.VerticalAlignment = -4108
excelAppObject.Selection.HorizontalAlignment = -4108
excelAppObject.Selection.WrapText = True
excelWorksheetObject.Cells.EntireColumn.Autofit
'заголовок
excelWorksheetObject.Range( "A1:A2").Select
excelAppObject.Selection.MergeCells = True
excelAppObject.Selection.Value = "Наименование"
excelWorksheetObject.Range( "B1:B2").Select
excelAppObject.Selection.MergeCells = True
excelAppObject.Selection.Value = "Всего"
excelWorksheetObject.Range( "C1:E1").Select
excelAppObject.Selection.MergeCells = True
excelAppObject.Selection.Value = "В том числе:"
excelWorksheetObject.Range( "C2").Value = "Услуга 1"
excelWorksheetObject.Range( "D2").Value = "Услуга 2"
excelWorksheetObject.Range( "E2").Value = "Услуга 3"
Print "Экспорт данных отчета"
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView("(report7)")
Set viewentries = view.AllEntries
Set viewentry = viewentries.GetFirstEntry
curcount1 = 0
curcount2 = 0
curcount3 = 0
curcount4 = 0
allcount1 = 0
allcount2 = 0
allcount3 = 0
allcount4 = 0
curuser = ""
excelLine = 3
Set curdate1 = New NotesDateTime("")
While Not viewentry Is Nothing
If Not viewentry.ColumnValues(1) = "" Then
curdate1.LocalTime = viewentry.ColumnValues(1)
End If
If Not viewentry.ColumnValues(0) = curuser Then
If Not curuser="" Then
excelWorksheetObject.Range("A"&excelLine).Value = curuser
excelWorksheetObject.Range("B"&excelLine).Value = curcount1
excelWorksheetObject.Range("C"&excelLine).Value = curcount2
excelWorksheetObject.Range("D"&excelLine).Value = curcount3
excelWorksheetObject.Range("E"&excelLine).Value = curcount4
excelLine = excelLine+1
End If
curuser = viewentry.ColumnValues(0)
curcount1 = 0
curcount2 = 0
curcount3 = 0
curcount4 = 0
End If
If (Not viewentry.ColumnValues(1)="") Then
If curdate1.LSLocalTime>=date1.LSLocalTime And curdate1.LSLocalTime<=date2.LSLocalTime Then
curcount1=curcount1+1
allcount1=allcount1+1
If viewentry.ColumnValues(2)="Service1" Then
curcount2=curcount2+1
allcount2=allcount2+1
End If
If viewentry.ColumnValues(2)="Service2" Then
curcount3=curcount3+1
allcount3=allcount3+1
End If
If viewentry.ColumnValues(2)="Service3" Then
curcount4=curcount4+1
allcount4=allcount4+1
End If
End If
End If
Set viewentry = viewentries.GetNextEntry(viewentry)
Wend
excelWorksheetObject.Range("A"&excelLine).Value = curuser
excelWorksheetObject.Range("B"&excelLine).Value = curcount1
excelWorksheetObject.Range("C"&excelLine).Value = curcount2
excelWorksheetObject.Range("D"&excelLine).Value = curcount3
excelWorksheetObject.Range("E"&excelLine).Value = curcount4
excelLine = excelLine+1
excelWorksheetObject.Range("A"&excelLine).Value = "ИТОГО:"
excelWorksheetObject.Range("B"&excelLine).Value = allcount1
excelWorksheetObject.Range("C"&excelLine).Value = allcount2
excelWorksheetObject.Range("D"&excelLine).Value = allcount3
excelWorksheetObject.Range("E"&excelLine).Value = allcount4
excelWorksheetObject.Rows(excelLine & ":" & excelLine).Select
excelAppObject.Selection.Font.Bold = True
excelWorksheetObject.Columns("A:A").EntireColumn.AutoFit
excelWorksheetObject.Columns("B:B").EntireColumn.AutoFit
excelWorksheetObject.Columns("C:C").EntireColumn.AutoFit
excelWorksheetObject.Columns("D:D").EntireColumn.AutoFit
excelWorksheetObject.Columns("E:E").EntireColumn.AutoFit
excelWorksheetObject.Range("A1:E"&Cstr(excelLine)).Select
excelAppObject.Selection.Borders(5).LineStyle = -4142
excelAppObject.Selection.Borders(6).LineStyle = -4142
excelAppObject.Selection.Borders(7).LineStyle = 1
excelAppObject.Selection.Borders(8).LineStyle = 1
excelAppObject.Selection.Borders(9).LineStyle = 1
excelAppObject.Selection.Borders(10).LineStyle = 1
excelAppObject.Selection.Borders(11).LineStyle = 1
excelAppObject.Selection.Borders(12).LineStyle = 1
'return to cell A1 for tidyness
excelWorksheetObject.Range("A1").Select
excelAppObject.Visible = True
Exit Sub
processerror:
If Err = 208 Then
Messagebox "У вас нет установленного Microsoft Excel. "
Else
Messagebox "Ошибка! " & Error & " (" & Err & ")"
End If
Exit Sub
End Sub
разберетесь - сделаете любой по сложности отчет