Помогите с скриптиком:)

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#1
Всем привет
вобщем дело обстоит так.

В базе есть справочник в котором заполняются следующие поля:

1. unittype - принимает занчения либо "U" либо "Р"
2. UnitNameUA - Название обєкта
3. UnitLocationUA - место нахождение обєкта
4. EOD - если "1" то имеет право
5. RegionOp - оператори региона

таких записей много будет

дальше пробую скриптом забацать документи ссилаясь на записи из справочника
но не сохраняет вискакивает Msgbox "Помилка збереження документа!"
ах да чуть не забил как мне запихнуть "RegionOp" из справочника в ново созданий документ и сделать ето поле "editors"


Sub Initialize
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim hrdb As NotesDatabase
Dim doc As NotesDocument
Dim rep As NotesDocument
Dim success As Variant

Set db = ses.CurrentDatabase

Set hrdb = ses.CurrentDatabase
If Not (hrdb Is Nothing) Then
Dim dc As NotesDocumentCollection
Set dc = hrdb.search(|form="region" & EOD="1"|, Nothing,0)
Print Cstr(dc.Count) & " документів відібрано для COB."
If dc.Count>0 Then
Set doc = dc.GetFirstDocument
While Not (doc Is Nothing)
Set rep = db.CreateDocument
rep.form = "CloseDay" --по етой форме хочу сделать документи

If doc.unittype(0) = "U" Then
rep.unitnameUA = doc.unitnameua(0) --вот так должен именоватся документ
Else
rep.unitnameUA = doc.PositionNameUA(0) --или так
End If

rep.unitRef = doc.UniversalID
success = rep.ComputeWithForm( False, False )
If success Then
Call rep.Save(True,False)
Else
Msgbox "Помилка збереження документа!"
End If
Set doc = dc.GetNextDocument(doc)
Wend
End If
End If

End Sub
 
#2
rep.unitRef = doc.UniversalID
success = rep.ComputeWithForm( False, False )
If success Then
Call rep.Save(True,False)
Else
Msgbox "Помилка збереження документа!"
End If
Ошибка вылетает из-за computewithform.
Насколько я понимаю - все равно сейчас идет отладка.
Сохрани документ несмотря на ошибку, открой его в клиенте. С высокой вероятностью он не откроется( скажет почему ). Если откроется - пересохрани, посмотри что скажет.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#3
Cleric-Lviv, WTF? RTFM!

flag = notesDocument.ComputeWithForm( doDataTypes, raiseError )
Parameters
doDataTypes
Boolean. The method ignores this parameter. Specify either True or False.
raiseError
Boolean. If True, an error is raised if the validation fails. If False, no error is raised; instead, the method returns False if validation fails.
дивися свою форму CloseDay, на ній якісь ValidationFormula не спрацьовують, тому твій success = FALSE

документів відібрано для COB
Гарі Поттер?! О_о

Сохрани документ несмотря на ошибку, открой его в клиенте. С высокой вероятностью он не откроется( скажет почему ). Если откроется - пересохрани, посмотри что скажет.
он не откроется только если будет ошибка вычисления формул в полях на форме, на логическую ошибку это врядли укажет.
а если сохранится, то что и кто должен сказать? :rolleyes:
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#4
ах да чуть не забил как мне запихнуть "RegionOp" из справочника в ново созданий документ и сделать ето поле "editors"
Dim doc As NotesDocument
Dim item As NotesItem
' ...set value of doc...
Set item = doc.GetFirstItem( "From" )
If item.IsAuthors Then
Call item.AppendToTextList( "Jeffrey Kinnamon" )
Call doc.Save( False, True )
End If
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#5
Ого как бистро:rolleyes:
Akupaka

я думаю лутше на руском писать все таки много украинского не понимает(ну и извиняюсь сразу за свой руский никогда не учил:()

так спасибки за ответи щас буду пробовать
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#7
Akupaka

ок !!!!

а що нема з ким побалакати на рідній мові ;) ?????


Так уже почучуть виходит:) уже документи создаются но вот с добавлением в права едитора ступор (сильно не пинайте я только-только начал програмировать)
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
31
Россея матушка!)
#8
Ну я там намудрил немного) Вот так нужно делать:

Dim item As NotesItem
Set item = rep.GetFirstItem( "RegionOp" )
item.IsAuthors = true
Call item.AppendToTextList( doc.GetItemvalue("RegionOp") )
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#9
Я тоже украинец (Деражня).
А вот мови не знаю.
Только из рекламы: шкира, процюю, космодиск :)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#10
Я тоже украинец (Деражня).
то-то у меня к тебе какая-то скрытая симпатия )))

с добавлением в права едитора ступор
че за проблемы-то? я так понял, что doc у тебя справочник?
тогда одной строкой
Код:
rep.ReplaceItemValue("RegionOp", doc.GetItemValue("RegionOp")).IsAuthors = True
если надо из нескольких документов, то
Код:
rep.ReplaceItemValue("RegionOp", ArrayAppend(rep.GetItemValue("RegionOp"), doc.GetItemValue("RegionOp"))).IsAuthors = True
вроде все, а то, что-то я не внимательный, с первого раза не получилось )
зы: нету поля "editors" есть "authors"
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#11
kizarek

почему намудрили??? дали мне правильний путь, куда смотреть:)
на If item.IsAuthors Then ошибка "object variable not set"
я вот пробую следующее

Set rep = db.CreateDocument
rep.form = "CloseDay"

If doc.unittype(0) = "U" Then
rep.unitnameUA = doc.unitnameua(0)
Else
rep.unitnameUA = doc.PositionNameUA(0)
End If

Set item = rep.GetFirstItem( "RegionOp" )
If item.IsAuthors Then
Call item.AppendToTextList( doc.GetItemvalue("RegionOp") )
End If

rep.unitRef = doc.UniversalID
success = rep.ComputeWithForm( False, False )
If success Then
Call rep.Save(True,False)


Omh

еще все впереди виучиш!!!!!!
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#13
Akupaka

Не повіриш але в мене є таке поле!!!!:) на форме CloseDay и оно Authors!!!!!!!!!
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#14
Akupaka

Не повіриш але в мене є таке поле!!!!:) на форме CloseDay и оно Authors!!!!!!!!!
я мав на увазі, якщо воно не авторс, то треба зробити, інакше при збереженні з ЮІ або компутвізформ ітем перестане бути авторс
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#15
інакше при збереженні з ЮІ або компутвізформ ітем перестане бути авторс

не понял.......


Akupaka
якщо ти не заперечуєш давай через аську.......349011758
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#18
kizarek
не переживай ми чуть-чуть:)

а кстати все работает благодаря вашим бистрим коментам :)
Но вот такой глюк есть

to run this agent you must have at lest one document selected

такая ошибка вискакивает когда на вю нету документов вобще...........а вот если я на вю справочника стою и запускаю агента тогда все ок!
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#19
такая ошибка вискакивает когда на вю нету документов вобще...........а вот если я на вю справочника стою и запускаю агента тогда все ок!
усе верно! у тебя агент Target стоит Selected Documents
если твоему агенту все-равно, что выделено в виде, т.е. нужные документы он сам находит, то поставь там None