Проблема с агентом.

  • Автор темы kilcher
  • Дата начала
K

kilcher

#1
Добрый день,всем!
Возникла проблема в работе агента. Мне необходимо просмотреть все документы,затем выцепить из них id. По этим id я нахожу коллекцию документов ответов. И заношу значение из документа ответа в родительский документ. Все вроде функционирет,но почему то только для первого документа ответа. Как-будто коллекция не перебирается :)
Помогите пожалуйста ошибку найти.
Вот эта часть кода
Set item1 = doc.GetFirstItem( "soglasovali" )
Set view = db.GetView("Answer" )
Set dc = view.GetAllDocumentsByKey(doc.order_id, False)
If dc.Count =0 Then
doc.flag="1"
Else
Set doc1= dc.GetFirstDocument
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)
End If
 

alb

Well-known member
13.07.2005
212
0
#2
судя по куску кода все правильно
ты ведь не проходишь ведь по всем документам в коллекции

Set item1 = doc.GetFirstItem( "soglasovali" )
Set view = db.GetView("Answer" )
Set dc = view.GetAllDocumentsByKey(doc.order_id, False)
If dc.Count =0 Then
doc.flag="1"
Else
Set doc1= dc.GetFirstDocument
*******************************************************
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)
*******************************************************
End If


звездочкой выделенная часть кода должна быть в цикле
 
K

kilcher

#3
А разве Set doc1 = dc.GetNextDocument (doc1) это не переход к следующему документу коллекции? Что то торможу я :)
 

alb

Well-known member
13.07.2005
212
0
#4
да вы взяли этим следующий документ но чтоб его обработать нужно ведь вернутся и повторитьте действия которые делали предшествующим документом
 
K

kilcher

#5
да вы взяли этим следующий документ но чтоб его обработать нужно ведь вернутся и повторитьте действия которые делали предшествующим документом
Но ведь я не знаю сколько у меня документов. Т.е. не знаю когда остановить цикл.
 

alb

Well-known member
13.07.2005
212
0
#6
while not(doc1 is nothing)
*******************************************************
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

Но ведь я не знаю сколько у меня документов. Т.е. не знаю когда остановить цикл.
dc.count на что?
 
K

kilcher

#7
Ну если число документов в коллекции =0.
Спасибо за совет,все получилось. :)
 

abbatik

Lotus team
20.10.2008
277
0
#8
если кол-во 0, то doc сразу вернет nothing

хотя лично я пользуюсь do while - loop