0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
1 | |
Нужен Агент10.11.2008, 08:42. Показов 24064. Ответов 16
Метки нет (Все метки)
Нужен Агент, который пробегает по всем документам в указанном представлении и считывает или устанавливает значение у поля
0
|
10.11.2008, 08:42 | |
Ответы с готовыми решениями:
16
Трабла, агент неправильно изменяет другой агент Java-агент Vs Ls-агент — кто быстрее? Агент по расписанию Серверный Агент |
0 / 0 / 0
Регистрация: 10.09.2005
Сообщений: 560
|
|
10.11.2008, 08:56 | 2 |
Код
Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim view As NotesView Dim doc As NotesDocument Set db = session.CurrentDatabase Set view = db.GetView("By Category") Set doc = view.GetFirstDocument While Not(doc Is Nothyng) a = doc.GetItemValue( "val" ) Call doc.ReplaceItemValue( "new_val", a ) Call doc.Save( False, True ) Set doc = view.GetNextDocument(doc) Wend End Sub
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
10.11.2008, 10:57 | 3 |
Немножко изменил агента. вот код:
Код
Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim view As NotesView Dim view2 As NotesView Dim st As String Dim doc As NotesDocument Dim doc2 As NotesDocument Set db = session.CurrentDatabase Set view = db.GetView("Текущие клиенты") Set view2 = db2.GetView("Физические лица") Set doc = view.GetFirstDocument st="клиент" While Not(doc Is Nothyng) Set doc2 = view2.GetFirstDocument While Not(doc2 Is Nothyng) If doc2.GetItemValue("PersonalWorkPlace") = doc1.GetItemValue("AgentShortName") Then Call doc2.ReplaceItemValue("klient_type",st) Call doc2.Save(False, True) End If Set doc2 = view2.GetNextDocument(doc2) Wend Set doc = view.GetNextDocument(doc) Wend End Sub на этой строчке Код
If doc2.GetItemValue("PersonalWorkPlace") = doc1.GetItemValue("AgentShortName") Then
0
|
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
|
|
10.11.2008, 11:09 | 4 |
Сообщение от dymat
if InStr( doc2.GetItemValue("PersonalWorkPlace")(0), doc1.GetItemValue("AgentShortName")(0) ) > 0 then ...
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
10.11.2008, 11:20 | 5 |
Такая же ошибка...
0
|
0 / 0 / 0
Регистрация: 13.03.2008
Сообщений: 234
|
|
10.11.2008, 11:32 | 6 |
А есть ли в документах эти поля? Проверку можно на doc.HasItem("FieldName") делать.
0
|
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
|
|
10.11.2008, 11:36 | 7 |
тьфу , блин заменить
doc1 на doc просто откуда взялсо док1 вообще не понятно, вот что значить не польозваться декларе оптионс
0
|
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
|
|
10.11.2008, 17:58 | 8 |
Сообщение от dymat
FIELD MeFld:=myValue
0
|
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
|
|
15.11.2008, 19:07 | 9 |
Код
Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim view As NotesView Dim view2 As NotesView Dim st As String Dim pn As String Dim sn As String Dim doc As NotesDocument Dim doc2 As NotesDocument Set db = session.CurrentDatabase Set view = db.GetView("Текущие клиенты") Set view2 = db.GetView("Физические лица") Set doc = view.GetFirstDocument st="клиент" While Not(doc Is Nothyng) Set view2 = db.GetView("Физические лица") Set doc2 = view2.GetFirstDocument While Not(doc2 Is Nothyng) If Instr( doc2.GetItemValue("PersonalWorkPlace")(0), doc.GetItemValue("AgentShortName")(0) ) > 0 Then Call doc2.ReplaceItemValue("klient_type",st) Call doc2.Save(False, True) End If Set doc2 = view2.GetNextDocument(doc2) Wend Set doc = view.GetNextDocument(doc) Wend End Sub
0
|
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
16.11.2008, 08:47 | 10 |
Оптимизировать можно взяв документы из представления "Физические лица" в коллекцию(NotesDocumentCollection или NotesViewEntryCollection) и при каждом проходе удалять из неё обработанные документы.
Set view2 = db.GetView("Физические лица") - это вынести из цикла. Поставить view.AutoUpdate = False и view2.AutoUpdate = False. А можно сделать массив значений "AgentShortName". Обход массива будет побыстрее обхода представления.
0
|
shomo2005
|
|
16.11.2008, 13:07 | 11 |
Всем привет!
Помогите разобраться с проблемкой…. Агент не шлет уведомление когда в значении «кому» указан не адресат, а имя поля, откуда нада его брать. Создал агента, который запускается каждые 5 минут и 1. Проверяет базу на наличие новых подписанных заявок (по значению полей statusrec –подписан ли документ и checkdocstat – не проработал ли агент этот документ ранее) 2. Если оба условия соблюдены, то агент отправляет указанному адресату уведомление и ссылку на эту заявку и меняет статус поля checkdocstat на ”1” – то есть просмотрен. Вот формула: @If(statusrec="1" & checkdocstat="0"; @MailSend("ADM Assystant/company"; ""; ""; "Подписи к данной заявке собраны"; "Запрос на создание счета к новой заявке."; "economist"; [IncludeDoclink]) & FIELD checkdocstat:="1"; ""); SELECT @All В таком виде работает, но хочется чтобы агент брал адресата из поля! В базе есть документ настроек, в нем поле формата «Names» - вот хочу чтобы агент брал адресата из этого поля! Вписываю вместо адресата имя поля: @If(statusrec="1" & checkdocstat="0"; @MailSend(economist; ""; ""; "Подписи к данной заявке собраны"; "Запрос на создание счета к новой заявке."; "economist"; [IncludeDoclink]) & FIELD checkdocstat:="1"; ""); SELECT @All Сохраняю….. сервак не ругается, типа формула верна, но ….. не работает!!! ЧЁ делать…. ??? |
0 / 0 / 0
Регистрация: 20.10.2008
Сообщений: 271
|
|
16.11.2008, 15:16 | 12 |
Ну, во-первых, странная у тебя структура.
Почему нельзя делать эту проверку и отсылать письмо в postsave? Ну, а если хочешь так, то попробуй @Text ( economist ), хотя было бы не плохо посмотреть какое значение в нем лежит.
0
|
mshomo
|
|
17.11.2008, 07:50 | 13 |
Сообщение от abbatik
Когда вставляю эту формулу в postsave или queryclose, то говорит "No SendTo field in document. Use Forward on the actions menu instead." По всей видимости он ищет указанное поле именно в документе заявки а не по всей базе. Что касается формы отображения адресата в поле, из которого его следует брать, - так и отображается "ADM Assystant/company". как сделать так чтоб он брал поле из нужного документа??? |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
17.11.2008, 15:17 | 14 |
Сообщение от nshoma
0
|
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
|
|
17.11.2008, 16:04 | 15 |
Сообщение от allex
после Код
Set view = db.GetView("By Category") Код
If view.EntryCount > 0 Then Call view.AllEntries.StampAll("itemName",value)
0
|
mshomo
|
|
19.11.2008, 08:39 | 16 |
Сообщение от Medevic
А как правильно формулу написать с использованием этих функций? Я не совсем программист, просто пришлось разобраться с этой задачкой! Заранее спасибо. |
0 / 0 / 0
Регистрация: 20.10.2008
Сообщений: 271
|
|
19.11.2008, 11:22 | 17 |
Сообщение от nshoma
@If(statusrec="1" & checkdocstat="0"; @MailSend( @GetDocField( <Сюда надо вставить UNID профайл-документа> ; economist ); ""; ""; "Подписи к данной заявке собраны"; "Запрос на создание счета к новой заявке."; "economist"; [IncludeDoclink]) & @SetField( "fcheckdocstat";"1" ); ""); SELECT @All Хотя, лично я не люблю использовать собаки для таких вещей. Собаки хороши для небольших операций в кнопках, которые не надо отлаживать...
0
|
19.11.2008, 11:22 | |
19.11.2008, 11:22 | |
Помогаю со студенческими работами здесь
17
Не отрабатывает агент Опять агент. Агент по расписанию Агент и время Агент И Embed_attachment Jar Агент Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |