Агент по расписанию (изменение в другой базе)

01.03.2006, 11:14. Показов 19909. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть агент, который запускается по расписанию.
Он ищет просроченные доки и возвращает их авторам.
При этом должны меняться значения в связанных доках в другой базе, но почему-то ничего не меняется.
Базы лежат в одной папке. Агент подписан сервером и права на вторую базу имеет.


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Sub Initialize
On Error Resume Next
Dim session As New NotesSession
Dim db As NotesDatabase
Dim sdb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc, bdoc As NotesDocument
Dim ndoc As NotesDocument
Dim memo As NotesDocument
Dim view As NotesView
Dim sview As NotesView
Dim mail(1 To 3) As String
 
Set db = session.CurrentDatabase
Dim dateTime As New NotesDateTime("12/01/94")
SearchString$ = {Form = "Request" & Status="5" & Priznak_FS!="Признак наличия документов в ФС" & Visible!="0"}
Set collection = db.Search(SearchString$,dateTime,0)
Set db2=session.GetDatabase("","New EPS.NSF",False)
sums=Split(doc.GetFirstItem("RBudgetSum").text,";")
 
Msgbox collection.Count
If collection.Count>0 Then
Dim dateTimeNow As New NotesDateTime( Now )
tnow=dateTimeNow.DateOnly
tnow=Cdat(tnow)
 
Call dateTimeNow.AdjustDay( -6 )
tnext=dateTimeNow.DateOnly
tnext=Cdat(tnext)
Msgbox Str(tnow)+" "+Str(tnext)
 
For i=1 To collection.Count
Set doc = collection.GetNthDocument(i)
Dim dateTimeNow1 As New NotesDateTime( doc.BOKDate(0) )
cdate=dateTimeNow1.DateOnly
cdate=Cdat(cdate)
Msgbox Str(tnow)+" "+Str(tnext)+" "+Str(cdate)+" "+doc.BossName_Ok(0)+" "+Str(tnext-cdate)
 
If tnext>=cdate Then
Msgbox "Пошло"
Уведомление
Set mdoc = db.CreateDocument
mdoc.Form = "Memo"
mdoc.SendTo = doc.OwnerNotesName(0)
mdoc.BlindCopyTo = "Yulia Neverova/BWD@CORP"
Set rtitem = New NotesRichTextItem( mdoc, "Body" )
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Ссылка на документ -> ")
Call rtitem.AppendDocLink( doc, "документ " )
Call rtitem.AddNewLine(1)
If tnext-cdate=0 Then
mdoc.Subject = "Уведомление о скором истечении срока заявки"
Call rtitem.AppendText("Заявка находится в статусе <К оплате> 7 дней, документы в ФЭС отсуствуют.")
Call rtitem.AddNewLine(1)
Call rtitem.AppendText("При отсуствии документов, завтра заявка будет возвращена автору автоматически.")
Call rtitem.AddNewLine(1)
mail(1) = doc.ManagerNotesName(0)
Elseif  tnext-cdate>1 Then
mdoc.Subject = "Уведомление об истечении срока заявки"
Call rtitem.AppendText("Заявка находилась в статусе <К оплате> больше 7 дней, а документов в ФЭС на нее не поступало.")
Call rtitem.AddNewLine(1)
Call rtitem.AppendText("По этой причине она возвращена Вам на доработку.")
Call rtitem.AddNewLine(1)
value = Evaluate({FIELD Returned:="Возвращено";FIELD HistoryWhen:=@Now;FIELD HistoryWho:="автоматически";FIELD HistoryAction:="Возвращен";FIELD History:=History:(@Text(HistoryWhen) + " " + HistoryWho + ": "+HistoryAction+": истек срок ожидания документов в ФЭС");@SetField("Status";"0");@SetField("Priznak_FS";"Нет документов");},doc)
Call doc.Save(True, True)
 
-----------------------------------------------------------------------------------------------
sums=Split(doc.GetFirstItem("RBudgetSum").text,";")
j=0
ids=Arrayunique(Split(doc.GetFirstItem("RIDBudget").text," "))
Forall id In ids
Set bdoc=db2.GetDocumentByUNID(id)
If bdoc.GetFirstItem("RACHistory") Is Nothyng Then Call bdoc.AppendItemValue("RACHistory","")
Set item=bdoc.GetFirstItem("RACHistory")
Call item.AppendToTextList(Cstr(Now) +" возвращено "+Cstr(sums(j)+" "+session.UserName+" -> "+doc.GetFirstItem("RequestDescription").text))
Call bdoc.ReplaceItemValue("RARemainder",Cstr(Cdbl(bdoc.GetFirstItem("RARemainder").text)+Cdbl(sums(j))))
j=j+1
Call bdoc.Save(True, True)
End Forall
-----------------------------------------------------------------------------------------------
 
mail(1) = doc.ManagerNotesName(0)
End If
mdoc.CopyTo =  mail
Call mdoc.Send(False)
End If
Next
End If
End Sub
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2006, 11:14
Ответы с готовыми решениями:

Агент по расписанию.
Помогите, пожалуйста, разобраться почему не работает агент по расписанию. Раньше с агентами не работала, тонкостей не знаю. Есть база....

Агент по расписанию
Необходимо чтобы агент запускался три раза в день. Я выбрал &quot;More then once a day&quot;, выставил &quot;Run agent every&quot; = 3 hours и...

Агент по расписанию..
Всем здравствуйте! Столкнулся вот с такой штукой! У меня есть агент вот его код: Option Public Use &quot;LibID&quot; Sub...

10
06.03.2006, 10:54
Так никто не знает из-за чего может быть невыполнение таких команд как измениние значений в поле документа другой базы в агенте по расписанию?
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
06.03.2006, 11:19
Используй NotesLog, чтобы отследить действия агента.
Агент может свалится на какой-нибудь ошибке. Например, поле не найдет. Или при использовании метода notesDocument.Send на несуществующем адресате. Т.е. в поле может быть имя, а реально этого человека уже нет.
0
06.03.2006, 13:55
Для: Medevic
Сообщения-то как раз отлично высылаются.
Единственное, что не работает (причем все прекрасно работает если запускаешь агент вручную) - это изменение во второй базе данных.
Ок. Попробую.
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
06.03.2006, 14:28
Все таки глянь, что с правами. От имени кого запускается агент (свойство Run on behalf of) ?
Может не меняются только richtext поля ?
0
0 / 0 / 0
Регистрация: 28.10.2005
Сообщений: 32
09.03.2006, 10:05
Нужна помощь! Есть сервер на нем установлен Domino. клиент в котором есть локальная база с агентом этот агент не запускается по шедулу на локале от имени того кто запускает. Также не запускается по шедулу от имени админа на самом сервере. При запуске руками и тесте - все нормально!!!!
0
12.03.2006, 16:37
Может в агенте использоуются UI-классы?
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 154
29.04.2008, 23:28
привет Всем!
Не могу понять агент работает отлично когда я запускаю в ручную
когда я его поставила по рассписанию ругается на строчке
Set db=ses.GetDatabase("","Dep")
Dim query As String
query=(Form="Profile" & Status="1")
Set coll=db.Search(query, Nothyng, 0)

не понимаю почему, когда вручную запускаю все отлично срабатывает.
и как подписать агент что бы он от сервера работал?

Помогите разобратся плз.
0
0 / 0 / 0
Регистрация: 28.10.2005
Сообщений: 32
01.05.2008, 00:59
Цитата Сообщение от nila
привет Всем!
Не могу понять агент работает отлично когда я запускаю в ручную
когда я его поставила по рассписанию ругается на строчке
Set db=ses.GetDatabase("","Dep")
Dim query As String
query=(Form="Profile" & Status="1")
Set coll=db.Search(query, Nothyng, 0)

не понимаю почему, когда вручную запускаю все отлично срабатывает.
и как подписать агент что бы он от сервера работал?

Помогите разобратся плз.
попробуйте выделить значение строковой переменной query символами {},
query={(Form="Profile" & Status="1")}
0
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 154
01.05.2008, 05:28
Разобралась!
Взяла в профайл установила настроики пути на сервер где база находится.
А вот можете подскзать.
Это всегда надо полный путь прописывать... и что только выход--- в профайле задавать путь?
Или какие то еще другие обходы с этим есть...?




Цитата Сообщение от Fan13tom
попробуйте выделить значение строковой переменной query символами {},
query={(Form="Profile" & Status="1")}
Да за это спасибо!!! буду знать... а то часто так пишу и оно на кавычки ругается!)
сенкс
0
0 / 0 / 0
Регистрация: 28.10.2005
Сообщений: 32
01.05.2008, 10:48
Цитата Сообщение от nila
Разобралась!
Взяла в профайл установила настроики пути на сервер где база находится.
А вот можете подскзать.
Это всегда надо полный путь прописывать... и что только выход--- в профайле задавать путь?
Или какие то еще другие обходы с этим есть...?

Да за это спасибо!!! буду знать... а то часто так пишу и оно на кавычки ругается!)
сенкс
На самом деле строка:
Set db=ses.GetDatabase("","Dep")
должна выглядеть так:
Set db=ses.GetDatabase(Name_of_server,DB_nam e,[Create_on_fail]),
где Name_of_server - имя сервера где лежит БД (может указываться "" если сервер, где выполняется данная сессия и где лежит файл БД, текущий), Domino/RU
DB_name - полный путь к базе (она должна лежать в папке или подпапке папки Data, каталога установки Notes (если код запущен на клиенте) или Domino (если код запущен на сервере)) (например Names.nsf)
[Create_on_fail]) создавать базу если ее нет в указанном месте. boolean true или false.
Советую также поставить Option Declare и явно объявлять все переменные.
Также нужно поставить в код on error.
И дополнительные проверки на непустоту переменных, например if (db is nothyng) then Goto End.
Что касается профайла, то это совсем не обязательно если код нужен для однократного выполнения, то можно все переменные захардкодить, хорошим же тоном useability приложений считается создание документа настроек, как вариант в виде профайла. можно и просто не профайл документ создавать и там указывать настройки. Либо в Нотес.ини (не самый лучший вариант). Все зависит от конкретной задачи.
Успехов в программировании
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.05.2008, 10:48
Помогаю со студенческими работами здесь

Агент по расписанию
Проблема вот такая: Есть агент который запускается по времени и делает backup БД(копирование БД), проблема в том что БД не копируются(так...

Агент по расписанию
Доброго времени!! Сталкнулся с такой проблемкой.Возникла необходимость запускать агента по расписанию. Все сделал,по идее должен...

Агент по расписанию
Необходимо создать агент, который будет запускаться только в последние 2 недели и только по средам и пятницам т.е. 2 среды и 2 пятницы ...

Не работает агент по расписанию
Добрый день! Есть агент, который отправляет файлы по адресу из папки. Так вот по расписанию он упорно работать не хочет,а когда руками...

Java агент по расписанию
Написал агентик который отправляет информацию из документа на ActiveMq сервер. С локальной машины все работает отлично: Тыкнул Run-...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Шаблоны и протоколы для создания устойчивых микросервисов
ArchitectMsa 19.04.2025
Микросервисы — архитектурный подход, разбивающий сложные приложения на небольшие, независимые компоненты. Вместо монолитного гиганта, система превращается в созвездие небольших взаимодействующих. . .
Изменяемые и неизменяемые типы в Python
py-thonny 19.04.2025
Python славится своей гибкостью и интуитивной понятностью, а одна из главных его особенностей — это система типов данных. В этом языке все, включая числа, строки, функции и даже классы, является. . .
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
Погружение в Kafka: Концепции и примеры на C# с ASP.NET Core
stackOverflow 18.04.2025
Apache Kafka изменила подход к обработке данных в распределенных системах. Эта платформа потоковой передачи данных выходит далеко за рамки обычной шины сообщений, предлагая мощные возможности,. . .
Коммуникация в реальном времени с SignalR в C# на примере создания чата
UnmanagedCoder 17.04.2025
Современный веб стремительно эволюционирует от статичных страниц к динамичным приложениям, где пользователи ожидают мгновенной реакции на свои действия. Представим, что вы отправляете сообщение. . .
Реализация CQRS с MediatR на C# .NET
stackOverflow 17.04.2025
Современная разработка программного обеспечения постоянно ищет пути повышения эффективности организации кода. Архитектурные паттерны появляются, эволюционируют, и те, что проявляют свою. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru