K
kilcher
Всем доброго дня!
Есть база,в которой отображается список людей(определенный отдел)из справочника организации.База представляет собой что то вроде To do. Т.е. загрузка сотрудников. Представления календарные.
Мне требуется агент,который будет создавать документики по людям,которых еще нет сегодня в загрузке. И так,например, на месяц вперед.
Создала настроечный документ(Profile),в котором задаются даты для заполнения.
вобщем приведу часть моего измученного кода(извиняюсь если он не совсем причесан)
Dim AltFullName As Variant,FullName1 As Variant
Dim keys( 1 To 2 ) As String
Dim gmt As Variant
Dim dat1 As NotesDateTime
Dim dat2 As NotesDateTime
Dim difference As Long
selection = {Form = "Stru" & kDept = "02" & kServ="2" & AltFullName!=""& work="Проверки"}'люди которые берутся из общего справочника
Set coll = db1.Search(selection, Nothing, 0)
Set doc = coll.GetFirstDocument
While Not doc Is Nothing
AltFullName=doc.GetItemValue( "AltFullName" )
Set coll1 = db.Search({Form = "Profile"}, Nothing, 0)'берем данные из настроечного файла
Set doc1 = coll1.GetFirstDocument
Set dat1 = New NotesDateTime( doc1.start(0) )
Set dat2 = New NotesDateTime( doc1.end(0) )
difference = dat1.TimeDifference( dat2 )
If difference <0 Then 'создаем документы на все дни
Do While dat1.TimeDifference( dat2 ) <= 0
gmt = dat1.LSGMTTime
keys(1) =gmt 'дата загрузки
keys(2) =doc.AltFullName(0)' имя сотрудника
Set view = db.GetView("Загрузка1" )
Set pdoc = view.GetDocumentByKey( keys )' ищем есть ли данный сотрудник в загрузке на этот день
If Not ( pdoc Is Nothing ) Then' если нет данного сотрудник,то создаем
Msgbox("Создаем")
Set docB = New NotesDocument( db )
Call docB.AppendItemValue( "Form", "LoadingUser" )
Call docB.AppendItemValue( "date_loading", gmt)
Call docB.AppendItemValue( "member", doc.AltFullName(0))
Call docB.AppendItemValue( "Status", "" )
Call dat1.AdjustDay( 1 )
Call docB.Save(True,True,True)
End If
Loop
End If
Set doc = coll.GetNextDocument(doc)
Wend
Есть база,в которой отображается список людей(определенный отдел)из справочника организации.База представляет собой что то вроде To do. Т.е. загрузка сотрудников. Представления календарные.
Мне требуется агент,который будет создавать документики по людям,которых еще нет сегодня в загрузке. И так,например, на месяц вперед.
Создала настроечный документ(Profile),в котором задаются даты для заполнения.
вобщем приведу часть моего измученного кода(извиняюсь если он не совсем причесан)
Dim AltFullName As Variant,FullName1 As Variant
Dim keys( 1 To 2 ) As String
Dim gmt As Variant
Dim dat1 As NotesDateTime
Dim dat2 As NotesDateTime
Dim difference As Long
selection = {Form = "Stru" & kDept = "02" & kServ="2" & AltFullName!=""& work="Проверки"}'люди которые берутся из общего справочника
Set coll = db1.Search(selection, Nothing, 0)
Set doc = coll.GetFirstDocument
While Not doc Is Nothing
AltFullName=doc.GetItemValue( "AltFullName" )
Set coll1 = db.Search({Form = "Profile"}, Nothing, 0)'берем данные из настроечного файла
Set doc1 = coll1.GetFirstDocument
Set dat1 = New NotesDateTime( doc1.start(0) )
Set dat2 = New NotesDateTime( doc1.end(0) )
difference = dat1.TimeDifference( dat2 )
If difference <0 Then 'создаем документы на все дни
Do While dat1.TimeDifference( dat2 ) <= 0
gmt = dat1.LSGMTTime
keys(1) =gmt 'дата загрузки
keys(2) =doc.AltFullName(0)' имя сотрудника
Set view = db.GetView("Загрузка1" )
Set pdoc = view.GetDocumentByKey( keys )' ищем есть ли данный сотрудник в загрузке на этот день
If Not ( pdoc Is Nothing ) Then' если нет данного сотрудник,то создаем
Msgbox("Создаем")
Set docB = New NotesDocument( db )
Call docB.AppendItemValue( "Form", "LoadingUser" )
Call docB.AppendItemValue( "date_loading", gmt)
Call docB.AppendItemValue( "member", doc.AltFullName(0))
Call docB.AppendItemValue( "Status", "" )
Call dat1.AdjustDay( 1 )
Call docB.Save(True,True,True)
End If
Loop
End If
Set doc = coll.GetNextDocument(doc)
Wend