• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Ls: Азы

  • Автор темы Автор темы Dimok-163rus
  • Дата начала Дата начала
Ага, а ещё надо брать последний ответ а не головной)

Нужно или хранить счетчик в "главном" документе или перебирать все ответы.

В общем или описывайте подробнее требования и условия или так и будет не пойми чем тут заниматься.
 
... должны создаваться копии документа(сколько док-тов должно создаться будет оговорено позже, но точно ни один) ... поле organ в каждом последующем док-те возрастало на +1
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Например, для 5 доков, изменяем код savl a так:
</div></div><div class="sp-body"><div class="sp-content">
Код:
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 к полю Organ.
Спасибо ребят!
 
1) Создал документ 1
2) Навел на него курсор -> кликнул кнопку свою
3) Создаются копии и в конце прописывается документ 1.

Когда курсор ставлю на копию - > кнопку, то создаётся все корректно ^_^

Проставил 5 копий (n=5)

2.документ
3.документ
4.документ
5.документ
6.документ
1.документ


Вот что получилось
 
Проставил 5 копий (n=5)
2.документ
3.документ
4.документ
5.документ
6.документ
1.документ

Вот что получилось
А что здесь не так? "1.документ" - это скорее всего док с которого делали копии, а остальные 2-6 это его копии.
А почему так расположены? Скорее всего такая сортировка в виде (или ее отсутствие)
Создай первую (можно скрытую) колонку с формулой Organ и отсортируй по ней "Ascenting"
 
Сортировка работает.

А как задается(тип) у поля, в котором храниться дата/время?(в ls не вижу типа Data)
Я поставил:
Код:
Dim Data_sovet As Variant
но это не корректно думаю, потому что операции в дальнейшем с этим полем не выполняются адекватно
 
Если поле на форме Date/Time, то надо/лучше преобразовать перед записью
Примерно так:
Код:
Dim Data_sovet As Variant
' Заполняем Data_sovet
Call doc.ReplaceItemValue("DateTimeField", CDat(Data_sovet))
 
Ругается на строчку
Код:
Call doc.ReplaceItemValue("DateTimeField", CDat(Data_sovet))
о5 с типами трабла
 
Data_sovet как заполняется?
Давай, код. kizarek прав, так и будем "тянуть кота за места"
Да мож и я налажал
 
Код:
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
 
А ещё вопрос уж до кучи, необходимо появление окна, который будет спрашивать нас о кол-ве копий дочерних документов.
Он вызывается с помощью prompt или как то иначе? В книге не могу найти по своей теме :)
 
n= Inputbox("Введите количество копий", "Создание копий документа", 1)

View.AutoUpdate = True ' Это чтобы вернуть автообновление при ошибке. в этом контексте - лишнее
почитай по View.AutoUpdate
PS и потом sview это что, откуда взялось?
PPS имей ввиду - все, что после On Error в дебагере не посмотриш, в твоем случае на время отладки это лишнее (смотри ошибки в дебагере, я вроде писал). Имхо.
PPPS что за Data_sovet и Data_protokol? Они-ж пустые, ты их ни где не получаеш - будут ошибки.
 
alexas, спасибо, про Inputbox не знал :)
..читаю

на первом этапе самом подсказали, что нужен обработчик ошибок, так я и вставил код,
думал что такой по умолчанию, просмотрел sView...
 
Код:
		' Заполняем Data_sovet
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_sovet))
' Заполняем Data_protokol
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_protokol))

У тебя doc = Nothing, он никак не задан. Его сначала задать надо. Что это за документ? Куда вписываем даты?
 
Data_sovet и Data_protokol - поля основного документа, вписываем их в поля childDoc.

savl, а поле organ же отрабатывает по такой же технологии.
Просто поля Data_sovet и Data_protokol объявлены типа дата/время, вот мне бы узнать как этот тип определить, чтоб с ними работать дальше...
Изначально проставил у этих полей ...As Variant

Добавлено: alexas, ниразу не работал с дебагером в лотусе...у меня lotus notes рус.версии,

PS. И пользуйся дебагером, что-бы понять, что накодил (Tools - Debug Lotus Script - поставить галочку)
Что-бы оно заработало, надо переоткрыть вид (или базу).

(сервис - отладчик ls) - не дебагер?
 
Data_sovet и Data_protokol - поля основного документа, вписываем их в поля childDoc.
savl, а поле organ же отрабатывает по такой же технологии.
(сервис - отладчик ls) - не дебагер?
Organ = parentDoc .GetItemValue ("Organ")(0) вот здесь получаем данные из дока (из поля Organ и записываем в объявленную переменную Organ), у тебя путаница в голове из-за одинаковых названий переменной и поля.

Ага - сервис-отладчик ls) это дебагер.

Ты пытаешся использовать Data_sovet и Data_protokol, значения, которых получаются ниже по коду, т.е. еще не определены.

А твой doc - это же parentDoc.
 
Dim-ok
тут дело в том, что вот эти строки:
Код:
		' Заполняем Data_sovet
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_sovet))
' Заполняем Data_protokol
Call doc.ReplaceItemValue("DateTimeField", Cdat(Data_protokol))
Обрабатываются раньше, чем есть документ, объект doc не опредлен. Закоментируй их.
Запись в ChildDoc у тебя идет в цикле.
Data_protokol это дата, никогда не пытался к ней прибавлять дни через суммирование :) хотя может я что не знаю...
Используй класс NotesDateTime, посмотри как его создать и как прибавлять дни (метод AdjustDay и потом тебе пригодится свойства DateOnly)
(сервис - отладчик ls) - не дебагер?
Кажись он, лучше смени язык интерфейса на Английский.
 
объявлены типа дата/время, вот мне бы узнать как этот тип определить
читать хэлп про типы данных :)
типа typename и иже с ним

Date/Time (кот. и используется в полях) можно получать через CDate (помимо указанного savl)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab