<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Например, для 5 доков, изменяем код savl a так:... должны создаваться копии документа(сколько док-тов должно создаться будет оговорено позже, но точно ни один) ... поле organ в каждом последующем док-те возрастало на +1
n=5
For i=1 To n
Set childDoc = parentDoc.CopyToDatabase( ses.CurrentDatabase)
childDoc.Organ = Organ+i
Call childDoc.Save(True,False)
Next
Call ws.ViewRefresh
А что здесь не так? "1.документ" - это скорее всего док с которого делали копии, а остальные 2-6 это его копии.Проставил 5 копий (n=5)
2.документ
3.документ
4.документ
5.документ
6.документ
1.документ
Вот что получилось
Dim Data_sovet As Variant
Call doc.ReplaceItemValue("DateTimeField", CDat(Data_sovet))
Sub Click(Source As Button)
On Error Goto Handler ' Если будет ошибка в работе - перейдет на обработчик ошибок
'Объявление переменных
' _________________________________________
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim UIview As NotesUIView
Dim uidoc As NotesUIDocument
Dim view As NotesView
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim currNoteID As String
Dim parentDoc As NotesDocument
Dim childDoc As NotesDocument
'Поля
Dim Organ As Long
Dim Data_protokol As Variant
Dim Data_sovet As Variant
'Продолжать?
' _________________________________________
Dim askme As Variant
askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")
If askme=0 Then
Exit Sub
End If
' 'Создать окошко "Сколько копий документов вы хотите увидеть?"
' ' _________________________________________
' Dim kol As Variant
' kol = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Введите число копий")
' If kol=0 Then
' Exit Sub
' End If
' Заполняем Data_sovet
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_sovet))
' Заполняем Data_protokol
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_protokol))
'Подробней об CaretNoteID
currNoteID = ws.CurrentView.CaretNoteID
' документ из представления, копия которого будет сделана
Set parentDoc = session.CurrentDatabase.GetDocumentByID(currNoteID)
If parentDoc Is Nothing Then Error 5002, "Ошибка при получении основного документа"
'несколько копий дочернего документа
n=5
For i=1 To n
Set childDoc = parentDoc.CopyToDatabase( session.CurrentDatabase)
' получить значение, может быть ошибка, если пустое
Organ = parentDoc .GetItemValue ("Organ")(0)
Data_sovet = parentDoc .GetItemValue ("Data_sovet")(0)
Data_protokol = parentDoc .GetItemValue ("Data_protokol")(0)
' Call ws.EditDocument(True,childDoc) ' Открыть на редактирование
childDoc.Organ = Organ+i
childDoc.Data_sovet = Data_protokol+i
'прибавить 182 дня к Data_sovet
'childDoc.Data_protokol = Data_sovet +182
Call childDoc.Save(True,False)
Next
'Обновляем, чтобы сразу появился в виде
Call ws.ViewRefresh
Exit Sub
handler:
' Простейший обработчик ошибок
Msgbox "Error:" & Error$ & Chr(10) & Chr(13) & " in line:" & Erl,16
If Not sview Is Nothing Then sView.AutoUpdate = True ' Это чтобы вернуть автообновление при ошибке.
Resume endh
endh:
End Sub
' Заполняем Data_sovet
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_sovet))
' Заполняем Data_protokol
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_protokol))
полезно для отладки, если не дебажится код, или для обработки возможных ошибок в "боевом" коде.... нужен обработчик ошибок, так я и вставил код ....
PS. И пользуйся дебагером, что-бы понять, что накодил (Tools - Debug Lotus Script - поставить галочку)
Что-бы оно заработало, надо переоткрыть вид (или базу).
Organ = parentDoc .GetItemValue ("Organ")(0) вот здесь получаем данные из дока (из поля Organ и записываем в объявленную переменную Organ), у тебя путаница в голове из-за одинаковых названий переменной и поля.Data_sovet и Data_protokol - поля основного документа, вписываем их в поля childDoc.
savl, а поле organ же отрабатывает по такой же технологии.
(сервис - отладчик ls) - не дебагер?
' Заполняем Data_sovet
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_sovet))
' Заполняем Data_protokol
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_protokol))
Кажись он, лучше смени язык интерфейса на Английский.(сервис - отладчик ls) - не дебагер?
читать хэлп про типы данныхобъявлены типа дата/время, вот мне бы узнать как этот тип определить
Обучение наступательной кибербезопасности в игровой форме. Начать игру!