Public Sub createTaskDoc () 'универсальный
On Error GoTo ERROR_HANDLER
GoTo START
ERROR_HANDLER:
On Error GoTo 0
Error Err, Error$ & Chr(10) & GetThreadInfo(1) & " (" & Erl & ")"
Exit Sub
START:
Dim ws As New NotesUIWorkspace
Dim view As NotesView
Dim s As New NotesSession
Dim taskdb As NotesDatabase
Dim newDoc As NotesDocument
Dim tmpdoc As NotesDocument
Dim col As NotesDocumentCollection
Dim form As String
Set taskdb = getsettingmanager().crossGetDB("tasks")
Dim flag As Integer
Dim nam As NotesName
Dim staffDB As NotesDatabase
Dim staffdoc As NotesDocument
Dim pickDoc As NotesDocument
Dim db As NotesDatabase
'
Set newDoc = taskdb.Createdocument
If getstaffmanager().isUser(True) = False Then
Exit Sub
End If
If ws.Currentdocument Is Nothing Then
If Not ws.Currentview Is Nothing Then
'вызываем из представления
If Not ws.Currentview.View.Getfirstdocument() Is Nothing Then
'получаем форму выделенного документа
Set db = ws.CurrentDatabase.Database
Dim doc As NotesDocument
Set doc = db.GetDocumentByID(ws.CurrentView.CaretNoteID)
Dim Field As String
Field = doc.getitemvalue("Form")(0)
'/получили форму документа
'проверяем тип документа
'выделен документ
flag = MessageBox ("Хотите связать поручение с выделенным документом?", 4 , "")
If flag = 6 Then
'связать с документом
Select Case Field
Case "Task"
If (doc.Getitemvalue("TaskStatus")(0) <> "На исполнении") Then
MsgBox "Поручение можно создать только для поручений со статусом [На исполнении]"
Exit Sub
End If
'для поручения со статусом на исполнении
'создаем из поручения
newDoc.Form = "Task"
newDoc.TaskRegNumber = doc.Getitemvalue("TaskNum")(0)
newDoc.DocRegNumber = doc.Getitemvalue("DocRegNumber")(0)
newDoc.TaskAuthor = getstaffmanager().getName(False)
newDoc.TaskAuthorNotes = getstaffmanager().getNotesName(False)
newDoc.TaskStatus = "Черновик"
'индивидуальная часть
newDoc.DocUNID = doc.getitemvalue("DocUNID")(0)
Call newDoc.MakeResponse( doc )
Call newDoc.Save(True, True)
Call ws.Editdocument(True, newDoc)
'/
Case "Execution" 'документ исполнения приказа
If (doc.Getitemvalue("DocStatus")(0) <> "На исполнении") Then
MsgBox "Поручение можно создать только для документов со статусом [На исполнении]"
Exit Sub
End If
newDoc.Form = "Task"
newDoc.DocRegNumber = doc.Getitemvalue("ExecutionDocRegNumber")(0)
newDoc.TaskAuthor = getstaffmanager().getName(False)
newDoc.TaskAuthorNotes = getstaffmanager().getNotesName(False)
newDoc.TaskStatus = "Черновик"
'индивидуальная часть
newDoc.DocUNID = doc.getitemvalue("DocUNID")(0)
newDoc.DocDB = Mid(db.Filename, 1, (Len(db.Filename) - 4))
Call newDoc.Save(True, True)
Call ws.Editdocument(True, newDoc)
Case "Act", "Agreement", "CopyOrderAgreement" ,"CopyOrderExecution", "Order",_
"Protocol", "Signing"
MsgBox "К данному типу документов нельзя создавать поручения"
Exit Sub
Case Else
MsgBox "Добавьте документ в метод createTaskDoc"
Exit Sub
End Select
Else
'не связывать с документом
'стандартное создание
newDoc.Form = "Task"
'newDoc.DocRegNumber = curdoc.Getitemvalue("DocRegNumber")(0)
newDoc.TaskAuthor = getstaffmanager().getName(False)
newDoc.TaskAuthorNotes = getstaffmanager().getNotesName(False)
newDoc.TaskStatus = "Черновик"
Call newDoc.Save(True, True)
Call ws.Editdocument(True, newDoc)
'индивидуальная часть
'newDoc.DocUNID = ""
'/
End If
Else
'документ не выделен (пустое представление)
'стандартное создание
newDoc.Form = "Task"
'newDoc.DocRegNumber = curdoc.Getitemvalue("DocRegNumber")(0)
newDoc.TaskAuthor = getstaffmanager().getName(False)
newDoc.TaskAuthorNotes = getstaffmanager().getNotesName(False)
newDoc.TaskStatus = "Черновик"
Call newDoc.Save(True, True)
Call ws.Editdocument(True, newDoc)
'индивидуальная часть
'newDoc.DocUNID = ""
'/
End If
Else
MsgBox "Ошибка - createTaskDoc: в принципе не должна появляться"
'возможно, косяк может быть в отметках, но по идее - не должен быть
End If
Else
'создаем внутри документа
'получаем форму документа
Set doc = ws.Currentdocument.Document
If ( (doc.Getitemvalue("DocDB")(0) = "docs") Or (doc.Getitemvalue("DocDB")(0) = "office")) Then
Set db = getsettingmanager().crossGetDB(doc.Getitemvalue("DocDB")(0))
Else
Set db = ws.Currentdatabase.Database
End If
Field = doc.getitemvalue("Form")(0)
'/получили форму документа
Select Case Field
Case "Task"
If (doc.Getitemvalue("TaskStatus")(0) <> "На исполнении") Then
MsgBox "Поручение можно создать только для поручений со статусом [На исполнении]"
Exit Sub
End If
'для поручения со статусом на исполнении
'создаем из поручения
newDoc.Form = "Task"
newDoc.TaskRegNumber = doc.Getitemvalue("TaskNum")(0)
newDoc.DocRegNumber = doc.Getitemvalue("DocRegNumber")(0)
newDoc.TaskAuthor = getstaffmanager().getName(False)
newDoc.TaskAuthorNotes = getstaffmanager().getNotesName(False)
newDoc.TaskStatus = "Черновик"
'индивидуальная часть
newDoc.DocUNID = doc.getitemvalue("DocUNID")(0)
Call newDoc.MakeResponse( doc )
Call newDoc.Save(True, True)
Call ws.Editdocument(True, newDoc)
'/
Case "Execution" 'документ исполнения приказа
If (doc.Getitemvalue("ExecutionStatus")(0) <> "На исполнении") Then
MsgBox "Поручение можно создать только для документов со статусом [На исполнении]"
Exit Sub
End If
newDoc.Form = "Task"
newDoc.DocRegNumber = doc.Getitemvalue("ExecutionDocRegNumber")(0)
newDoc.TaskAuthor = getstaffmanager().getName(False)
newDoc.TaskAuthorNotes = getstaffmanager().getNotesName(False)
newDoc.TaskStatus = "Черновик"
'индивидуальная часть
newDoc.DocUNID = ws.Currentdocument.document.universalid
newDoc.DocDB = Mid(db.Filename, 1, (Len(db.Filename) - 4))
Call newDoc.Save(True, True)
Call ws.Editdocument(True, newDoc)
Case "Act", "Agreement", "CopyOrderAgreement" ,"CopyOrderExecution", "Order",_
"Protocol", "Signing"
MsgBox "К данному типу документов нельзя создавать поручения"
Exit Sub
Case Else
MsgBox "Добавьте документ в метод createTaskDoc"
Exit Sub
End Select
End If
End Sub