• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

агент обновления документов

  • Автор темы wowa
  • Дата начала
W

wowa

Подскажите, я полный ноль в агентах.... Это мой первый агент
Мне нужно залезть во view, достать доки и обновить их
veiw содержит
|Уникальное название|Заглавие БД|Сервер|Имя БД|


Начал писать агент
Dim db As NotesDatabase
Dim vw As NotesView
Dim vwnav As NotesViewNavigator
Dim vwentryA As NotesViewEntry

Set vw = db.GetView ("vw-InformationDB" )
Set vwnav = vw.CreateViewNav()
Set vwentryA = vwnav.GetFirst

' берем один из доков
While Not(vwentryA Is Nothing)

' Открываем БД
Dim db1 As New NotesDatabase( "", "" )
stDBServer = vwentryA.ColumnValues(2)
stDBFileName = vwentryA.ColumnValues(3)
Call db1.Open(stDBServer,stDBFileName )

' Получаем список форм открытой БД
Forall form In db.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall

Set vwentryA = vwnav.GetNext(vwentryA)
Wend
Вообщем документ содержит еще поле со списком форм определенной БД(которую мы открыли). Мне нужно обновить документ, так как список форм мог измениться. Я получил новый список форм. НО как можно изменить документ(с обновленным полем, содержащим список форм) - не знаю
НО как я понимаю тут надо работать с doc, но я что-то не знаю....
 
W

wowa

Для: Medevic
я думаю не подойдет.
Я считаю что нужно написать почти тот же код, что и на кнопочке документа. Только как обновить и сохранить док - не знаю
 
W

wowa

Есть документ с двумя полями поле№1 и поле№2 , причем второе берет значение из первого через use formula for choices (поле№1)
Документ сохранен, вообщем все нормально,все заполнено

Далее вызываю агент
.....................
Call doc.ReplaceItemValue("поле№1",stMsgString)
Call doc.Save(True,True )

Т.е. обновилось поле№1
НО поле№2 не обновилось и оно пусто
Помогите, что можно сделать... Можно ли как-н обновить документ, или еще что-н?
 
O

Ogion7

Документ обновить надо, или галку поставь Refresh fields on keyword change
 
W

wowa

<!--QuoteBegin-Ogion7+12:04:2007, 16:06 -->
<span class="vbquote">(Ogion7 @ 12:04:2007, 16:06 )</span><!--QuoteEBegin-->Можно ли как-н обновить документ
[snapback]62276" rel="nofollow" target="_blank[/snapback]​
[/quote]
Для: Ogion7
вот я и не знаю как обновить
 
K

Kee_Keekkenen

Call doc.ReplaceItemValue("поле№1",stMsgString)
Call doc.ComputeWithForm(True, False)
Call doc.Save(True,True )
 
W

wowa

Для: Kee_Keekkenen
Все равно не заполняется то поле....((
Вот мой код на всякий случай
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim vw As NotesView
Dim vwnav As NotesViewNavigator
Dim vwentryA As NotesViewEntry
Dim stDBServer As String
Dim stDBFileName As String
Dim stMsgString As String

Set db = s.CurrentDatabase
Set vw = db.GetView ("vw-InformationDB" )
Set vwnav = vw.CreateViewNav()
Set vwentryA = vwnav.GetFirst

While Not(vwentryA Is Nothing)
Set doc = vwentryA.Document
' Открываем БД
Dim db1 As New NotesDatabase( "", "" )
stDBServer = doc.GetItemValue("GXE_InfD_d_DBServer_TX")(0)
stDBFileName = doc.GetItemValue("GXE_InfD_d_DBFileName_TX")(0)
If stDBServer = "Local" Then stDBServer=""
Call db1.Open(stDBServer,stDBFileName )
' Получаем список форм открытой БД
Forall form In db1.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall

Call doc.ReplaceItemValue("GXE_InfD_d_CandidListFormDB_TX",stMsgString)

Call doc.ComputeWithForm(True, False)
Call doc.Save(True,True )
Call vw.Refresh()

Set vwentryA = vwnav.GetNext(vwentryA)

Wend
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--QuoteBegin-wowa+13:04:2007, 07:23 -->
<span class="vbquote">(wowa @ 13:04:2007, 07:23 )</span><!--QuoteEBegin-->Все равно не заполняется то поле....((
[snapback]62316" rel="nofollow" target="_blank[/snapback]​
[/quote]
Не понятно, как оно должно заполнится.

Ты пишешь:
<!--QuoteBegin-wowa+12:04:2007, 14:50 -->
<span class="vbquote">(wowa @ 12:04:2007, 14:50 )</span><!--QuoteEBegin-->Есть документ с двумя полями поле№1 и поле№2 , причем второе берет значение из первого через use formula for choices (поле№1)
[snapback]62257" rel="nofollow" target="_blank[/snapback]​
[/quote]
Второе никак не может брать значение из первого через use formula for choices. Так ты только создаешь список возможных значений. Но значение поля должен проставить ты сам.
 
W

wowa

Начну все заново...В документе Мне нужно было занести в Listbox(поле№2) значения... Чтобы их туда занести , мне порекомендовали создать отдельное, скрытое Text поле(поле№1), и занести сначала туда значения,..
И прописать в поле№2, на второй закладки через use formula for choices (поле№1).....
https://codeby.net/threads/12348.html?hl=listbox
При работе агента скрытое, TEXT поле№1 обновляется, но ListBox (поле№2) - пусто
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--QuoteBegin-wowa+13:04:2007, 10:11 -->
<span class="vbquote">(wowa @ 13:04:2007, 10:11 )</span><!--QuoteEBegin-->При работе агента скрытое, TEXT поле№1 обновляется, но ListBox (поле№2) - пусто
[snapback]62324" rel="nofollow" target="_blank[/snapback]​
[/quote]
Пустое это как? Нет значения или нет списка вариантов?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Понятно, где ошибка.
Вот так, как ниже списки не делают.
<!--QuoteBegin-wowa+13:04:2007, 07:23 -->
<span class="vbquote">(wowa @ 13:04:2007, 07:23 )</span><!--QuoteEBegin-->Forall form In db1.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall[/quote]
У тебя как бы получается, что первое значение пустое.
Т.е. список вида (хотя это не список, а просто строка):
"
1
2"
В листбокс видно именно пустое значение, т.к. остальные на других строках.
Короче, делай правильно список. Например, через Split:
Код:
Call doc.ReplaceItemValue("GXE_InfD_d_CandidListFormDB_TX", Split(stMsgString, chr(10)))
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Кстати, Call doc.ComputeWithForm(True, False) можешь убрать.
 
W

wowa

Для: Medevic
Большое спасибо, Очень тебе благодарен!!!!!!

Единственно остается пустая первая строка...
 
W

wowa

<!--QuoteBegin-Medevic+13:04:2007, 10:05 -->
<span class="vbquote">(Medevic @ 13:04:2007, 10:05 )</span><!--QuoteEBegin-->Кстати, Call doc.ComputeWithForm(True, False) можешь убрать.
[snapback]62332" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот это кстати лучше оставить.... иначе не так работает как надо..
СПАСИБО!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!