Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/84: Рейтинг темы: голосов - 84, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 21.01.2008
Сообщений: 240

Написание агента

15.01.2009, 15:22. Показов 15393. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
возникла проблема в написании агента :unsure:
Этот агент должен просматривать все документы,которые проходят согласование. И если человек не согласовал какой то(в котором он в списке согласующих),то отправить ему письмо. Проблема в том,что в документе нет поля для тех кто не согласовал и согласовал. Люди проставляют отметку о согласовании,создавая новый документ "answer"(уже вью созданное по новому документу отображается в текущем).
Т. е. получается надо просмотреть коллекцию докментов.в каждом из которых взять значение поля с id,затем по id найти уже документы "ответы" с полями содержащими имена тех кто согласовал.
Вот такой кошмар! Для новых я уже создала три поля:должны согласовть,согласовали и не согласовал. Но вот старые придется обработать агентом,который пытаюсь написать ;) Вот код

Sub Initialize

Dim sess As New NotesSession
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection,col As NotesDocumentCollection
Dim doc As NotesDocument,doc1 As NotesDocument
Dim bodytext As Variant
Dim sss As String
Dim newDoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim ord As Variant, ans As Variant
Dim vDB As NotesView
Dim answers() As String

Set db = sess.CurrentDatabase
Set coll = db.Search({Form = "Order"}, Nothyng, 0)
Set doc = coll.GetFirstDocument

Set vDB= db.GetView("Answer")
While Not doc Is Nothyng

ord = doc.GetItemValue( "order_id ") берем id
Set col = vDB.GetAllDocumentsByKey(ord )ищем по нему
Set doc1= col.GetFirstDocument

While Not doc1 Is Nothyng
ans = doc1.GetItemValue( "answer_name")берем имя согласовавшего

Если подписал
Redym Preserve answers(Lbound(answers) To Ubound(answers) + 1)создаем список
answers(Ubound( answers)) = doc.soglasovaliзаносим его в поле согласовали



Set doc1= col.GetNextDocument(doc1)
Wend


Set doc = coll.GetNextDocument(doc)
Wend

End Sub


Пожалуйста помогите!!!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2009, 15:22
Ответы с готовыми решениями:

Написание агента
Нужна помощь в написании агента. Есть код представленный ниже, который берет приатачменный файл, который находится в кодировке OEM 866...

Mail написание агента "автоответчик"
Lotus 7.0.2 Подскажите как можно реализовать механизм авто ответа на входящие письма. Есть ли какие нибудь встроенные механизмы или...

вызов Ls-агента с показом диалогового окна из Java-агента
есть Java-агент, надо в нем показать диалоговое окно (картинку в нем показать и поле для ввода), попытался решить так: из Java-агента...

10
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
15.01.2009, 15:41
Ну не такой уж и кошмар. Нормально по-моему. :unsure:
Можно на собаках написать. Гораздо проще будет.
Что-то типа:

Code
1
@SetField("твое поле"; @Trim(@DbLookup("" : "NoCache"; ""; "Answer"; order_id; "answer_name"; [FailSilent])))
Но лучше не надо пихать всё в один документ. Каждому согласовывающему по копии. И пусть согласовывает.
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
15.01.2009, 15:45
+1 за "не кошмар"
0
0 / 0 / 0
Регистрация: 21.01.2008
Сообщений: 240
15.01.2009, 16:08
Спасибо!!!!!!!!! чего я сразу не догадалась :unsure: Только я да это можно сказать не согласование,а просто ознакомление с документом. Вот еще надо теперь подумать как копии им рассылать ;)
0
0 / 0 / 0
Регистрация: 21.01.2008
Сообщений: 240
28.01.2009, 09:51
Прошу о помощи все с тем же агентом. :lol: Пришлось писать скриптом конечно вычисления всех этих полей. Два я вычислила легко: кто должен согласовать answer1 и уже согласовал. А вот кто остался не вычисляется. В чем может быть ошибка?

Set coll = db.Search({Form = "Order"}, Nothyng, 0)
Set doc = coll.GetFirstDocument
Dim num As Integer


While Not doc Is Nothyng
обнуляем поля
doc.answer1=""
doc.soglasovali=""
doc.ne_soglasovali=""

Set item = doc.GetFirstItem( "answer1" )
Set item1 = doc.GetFirstItem( "soglasovali" )
заполняем поле именами тех,кто должен проставить отметку

Call item.AppendToTextList( doc.GetItemValue("order_dp") )
Call item.AppendToTextList( doc.GetItemValue("order_mp") )
Call item.AppendToTextList( doc.GetItemValue("member_name") )
если кто-то уже проставил независимость ищем документ "Answer"и берем от туда имя пользователя
Set view = db.GetView("Answer" )
Set dc = view.GetAllDocumentsByKey(doc.order_id, False)
Set doc1= dc.GetFirstDocument

While Not(doc1 Is Nothyng)
Call item1.AppendToTextList( doc1.GetItemValue("From") )

сравниваем значение полей кто должен проставить отметку и кто уже проставил.
f1 = doc.GetFirstItem("answer1").Values
f2 = doc.GetFirstItem("soglasovali").Values
f3 = Fulltrim(Arrayreplace(f1, f2, ""))
Call doc.ReplaceItemValue("ne_soglasovali", f3)
doc.ComputeWithForm False, False
doc.Save True, True
Set doc1 = dc.GetNextDocument (doc1)
Wend
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
28.01.2009, 15:55
Делай на собаках. Проще будет.

Code
1
2
3
@SetField("answer1"; @Unique(@Trim(order_dp : order_mp : ember_name)));
@SetField("soglasovali"; @Trim(@Unique(@DbLookup("" : "NoCache"; ""; "Answer"; order_id; "From"; [FailSilent]))));
@SetField("ne_soglasovali"; @Trim(@Replace(answer1; soglasovali; "")))
0
0 / 0 / 0
Регистрация: 21.01.2008
Сообщений: 240
28.01.2009, 17:30
Цитата Сообщение от Medevic
Делай на собаках. Проще будет.

Code
1
2
3
@SetField("answer1"; @Unique(@Trim(order_dp : order_mp : ember_name)));
@SetField("soglasovali"; @Trim(@Unique(@DbLookup("" : "NoCache"; ""; "Answer"; order_id; "From"; [FailSilent]))));
@SetField("ne_soglasovali"; @Trim(@Replace(answer1; soglasovali; "")))

Спасибо! Я уже разобралась почему не работал агент.
Я никогда не видела агента по рассписанию на собаках. На них разве можно коллекцию просмотреть доков?
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
29.01.2009, 08:19
Что значит коллекцию просмотреть доков?
0
0 / 0 / 0
Регистрация: 21.01.2008
Сообщений: 240
29.01.2009, 08:41
Как взять коллекцию я представлю на собаках,а как переходить по документам? Ну что то типа GetNextDocument
Или на собаках не так делается?
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
29.01.2009, 08:49
На собаках формула применяется ко всем отобранным документам.
0
0 / 0 / 0
Регистрация: 21.01.2008
Сообщений: 240
29.01.2009, 09:32
Здорово!
Вот к чему ведет не знание
Спасибо!!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2009, 09:32
Помогаю со студенческими работами здесь

Проблема запуска Агента из агента!
Доброго времени суток! Ситуация такова запускю агента из другого агента, при запуске в строке запуска агента от компилятора получаю Notes...

запуск агента
Добрый день! Подскажите как запустить агент (LotusScript) через MS FoxPro 8.0 ?? строка Call nAgent.RunOnServer не дает...

Статус агента.
Всем привет! Вот собственно вопрос... можно ли принудительно выставить статус агента при запуске RunOnServer? Деление на ноль не...

Log агента
Здравствуйте. Возник вопрос: как получить в скрипте лог агента (в частности, инфу об ошибках, произошедших при последнем запуске агента)....

Ошибка агента.
Добрый день! Есть ошибка в написании агента, как её отловить? Агент работает по времени. После его запуска в логах пишет: AMgr: Agent...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru