Dim db As NotesDatabase
Dim doc, docST As NotesDocument
Dim collection As NotesDocumentCollection
Dim uidocST As NotesUIDocument
Dim session As New NotesSession
Set db = session.CurrentDatabase
Dim workspaceST As New NotesUIWorkspace
Set uidocST = workspaceST.CurrentDocument
Set docST = uidocST.Document
uidocST.Refresh
Dim Detal(40,20,2) As String 'собраные из док. за месяц данные
Dim VybDet(800,2) As String 'вспомогательный массив
'*** Коллекция документов за текущий месяц
Set collection = db.Search({Form = "Form_KC_SV1" &
(@Matches(@Text(@Month(KC_SV1_Date));"} + Cstr(Month(docST.KC_SV1_Date(0))) + {")) &
(@ToNumber(@Day(KC_SV1_Date)) < @ToNumber( "} + Day(docST.KC_SV1_Date(0)) + {" )) }, Nothing, 0)
n = collection.Count
'*** Перебор коллекции с бор данных в массив Detal
NumDoc=1
If n<=40 Then
While NumDoc <= n
Set doc = collection.GetNthDocument(NumDoc)
Print "Обработка информации в документе:" + NumDoc " из:" +n
'* Сбор всех деталей, принятой и забракованной продукции по ним
'* 0-Название детали,1-принято,2-Брак
For i = 1 To 20
Names1 = "KC_SV1_Det_" + Cstr(i)
Names2 = "KC_SV1_1_" + Cstr(i)
Names3 = "KC_SV1_3_" + Cstr(i)
Detal(NumDoc,i,0) =doc.GetItemValue(Names1)(0) 'заполнение массива Деталями
Detal(NumDoc,i,1) =Cstr(doc.GetItemValue(Names2)(0)) 'заполнение массива приными дет.
Detal(NumDoc,i,2) =Cstr(doc.GetItemValue(Names3)(0)) 'заполнение массива брак дет.
Next
NumDoc=NumDoc+1
Wend
'*** Обработка собраной информации, в массив VybDet, помещаем инф.о введённых дет.
z=1
For i=1 To 40
If Not (Detal(i,1,0)="") Then
For j=1 To 20
If Not (Detal(i,i,0)="") Then
VybDet(z,0)=Detal(i,j,0)
VybDet(z,1)=Detal(i,j,1)
VybDet(z,2)=Detal(i,j,2)
z=z+1
End If
Next
End If
Next
'Подсчёт принятой прод. и брака и вывод на форму
For m = 1 To 20
Tmp1=0
Tmp2=0
Name1 = "KC_SV1_Det_" + Cstr(m)'деталь
Name2= "KC_SV1_2_" + Cstr(m) 'принято за месяц
Name3= "KC_SV1_4_" + Cstr(m) 'брак за месяц
Name4= "KC_SV1_1_" + Cstr(m) 'принято текущий документ
Name5= "KC_SV1_3_" + Cstr(m) 'брак текущий документ
For i=1 To z
If Not (VybDet(i,0)="") Then
If (VybDet(i,0) = docST.GetItemValue(Name1)(0)) Then
Tmp1=Tmp1+Cint(VybDet(i,1))
Tmp2=Tmp2+Cint(VybDet(i,2))
End If
End If
Next
Call docST.ReplaceItemValue(Name2,Cint(Tmp1)+Cint(docST.GetItemValue(Name4)(0)))'вывод Принятой
Call docST.ReplaceItemValue(Name3,Cint(Tmp2)+Cint(docST.GetItemValue(Name5)(0)))'вывод брака
Next
Else
Messagebox("Чёта многовато в это месяце ежедневных сводок, больше 40!Непорядок!правим ошибки, потом рботаем дальше!")
End If
uidocST.Refresh