Function CreateOU( OUInfo As Variant ) As Integer
Dim OUView As NotesView
Dim OUDocCollection As NotesDocumentCollection
Dim OUDoc As NotesDocument
Dim RefOUDoc As NotesDocument
Dim Ref As String
Set OUView = DB.GetView("OrgUnit:ProPeopleOrgUnitID")
If OUInfo( "OrgUnitREFID" ).Value ="-1" Then ' проверяем находится оргюнит на первом уровне
Set OUDocCollection = OUView.GetAllDocumentsByKey( "OUID_" + Trim( OUInfo( "OrgUnitREFID" ).Value ), True ) '!!!!!!!!!!!!!!!!!!!!!!!!!!!
Set OUDoc = DB.CreateDocument
OUDoc.Name = OUInfo( "CityName" ).Value + " №" + Cstr( OUInfo( "BranchNumber" ).Value ) + " (" + OUInfo( "BranchAdress" ).Value + ")"
OUDoc.City = OUInfo( "CityName" ).Value '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
OUDoc.CityEng = OUInfo( "OUCityEng" ).Value '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
If OUInfo( "BranchNumber" ).Value <> "н/д" Then
OUDoc.BranchNumber = Cint( OUInfo( "BranchNumber" ).Value )
End If
Else
' если да - то создаем респонс у родителя
Set RefOUDoc = OUView.GetDocumentByKey( "ID_" + Trim( OUInfo( "OrgUnitREFID" ).Value ), True ) '!!!!!!!!!!!!!!!!!!!!!!!!!!!
' если родитель отсутствует - то создаем
If RefOUDoc Is Nothing Then
Dim TmpRec As Variant
Set TmpRec = OUInfo
TmpRec.Find "OrgUnitID = '" + Trim( OUInfo( "OrgUnitREFID" ).Value ) + "' "
CreateOU = CreateOU( TmpRec )
Set OUInfo = OURecordSet ' [color="#FF0000"]ТУТ УЖЕ НЕ ПРАВИЛЬНОЕ ЗНАЧЕНИЕ ПРИ ВОЗВРАЩЕНИИ ИЗ РЕКУРСИИ
OURecordSet - глобальная переменная. причем в этом месте OURecordSet = TmpRec [/color]
Set RefOUDoc = OUView.GetDocumentByKey( "ID_" + Trim( OUInfo( "OrgUnitREFID" ).Value ), True ) '!!!!!!!!!!!!!!!!!!!!!!!!!!!
End If
OUView.Refresh
Set OUDocCollection = OUView.GetAllDocumentsByKey( "OUREFID_" + Trim( OUInfo( "OrgUnitREFID" ).Value ), True ) '!!!!!!!!!!!!!!!!!!!!!!!!!!!
Set OUDoc = DB.CreateDocument
Call OUDoc.MakeResponse(RefOUDoc)
OUDoc.Name = OUInfo( "OrgUnitName" ).Value
End If
OUDoc.Type = OUInfo( "OrgUnitType" ).Value '!!!!!!!!!!!!!!!!!!!!!!!!!!!!
OUDoc.SubNumber = OUDocCollection.Count + 1
OUDoc.ProPeopleOrgUnitID = OUInfo( "OrgUnitID" ).Value
OUDoc.ProPeopleOrgUnitRefID = OUInfo( "OrgUnitREFID" ).Value
OUDoc.Form = "subdivision"
Call OUDoc.ComputeWithForm( False,False )
Call OUDoc.Save( True, False, True )
End Function