ищем документ по ключу

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#1
всем привет!
проблем вот в чем:
агентом обробляю документ. вичисляю значение поля Сума. припустим = 7000
далее ищу вю. далее колекция документов, и теперь самое оно:
в колекции документов есть
A(10000)
B(25000)
C(50000)
как сделать чтоб если у меня значение поля Сума=< 10000 вибирался документ А(10000)
если я просто сделаю поиск по ключу то dc = 0 получу.....
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#3
ToxaRat
чтото не очень получается;)
Код:
wf =docwf.GetItemValue("SumaEnd")(0)
Set wfcol = db.Search({wf<10000}, Nothing, 0)
тут колекция =0

или пробовал иначе
Set wfcol = db.Search({docwf.GetItemValue("SumaEnd")(0)<10000}, Nothing, 0)
здесь пишет notes error, formula errore
 
Y

Yakov

Гость
#4
Нужно указывать формулу вроде той, что в отборе документов в представлении.
Set wfcol = db.Search({SumaEnd<10000}, Nothing, 0)
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#5
Yakov
да ищет, сначала обрадовался......;) но потом понял, нашло то документ из которого я брал "SumaEnd" тоесть поточний документ........:(
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#6
что-то мне кажется что одним запросом тут не обойдешься.
Не проще, если же есть коллекция документов, в цикле проходить коллекцию и найти нужный документ.
Критерием нужного документа по идее должно быть наибольшее отрицательное значение между суммой исходного документа и документа из коллекции (т.е. приближающиеся к 0)
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#9
NickProstoNick
ето на будующее, написано...ето результат так сказать что должен бить
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#10
NickProstoNick
ето на будующее, написано...ето результат так сказать что должен бить
Совсем запутался!? А что надо получить сначала?
давай ты поэтапно напишешь чего надо делать
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#11
NickProstoNick
сорри вчера не смог отписать

итак
1. вичисляем "ключ"
2. по ключу надо найти колекцию документов.
3. ключ практически всегда будет не совпадать с "ключем колекции"
4. вю, в которой ми будем искать нужную колекцию имеется 3 документа(с временем может бить больше)
4. ети документи отсортировани, и в первой колонке имеем
10000
25000
50000
итак как мне задать в скрипте, чтоб система меня поняла, что если я задаю ключ <=10000 то через колекцию мне будет возвращатся документ 10000, и так далее
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#12
Ну тут только перебором/анализом коллекции.
Если на выходе тебе нужна именно коллекция, то её можно создать так :
Код:
Set Dc = Db.Search({@False}, Nothing, 0) 'сделал пустую коллекцию, есть вариант чуть быстрее, но для иллюстрации и этот покатит
'Какой-то космический скрипт, который анализирует документы во view и в нужный момент делаем
Call Dc.AddDocument(DesiredDoc)
А вообще нафига коллекция?
Идёшь по view и процессишь доки, которые удовлетворяют условию.
Кагбэ всё.
 

Cleric-Lviv

Well-Known Member
Lotus team
03.01.2008
600
0
33
Lemberg
#13
Omh
сделал
Код:
wfs =docwf.GetItemValue("SumaEnd")(0)
If wfs<=10000 Then 
uniq= Evaluate("@if(SumaEnd<=10000; 10000; SumaEnd<=25000; 25000; 50000)", docwf)
Call docwf.Save(True, True)
End If
и без колекции.... просто не устраивает следующее:
если добавить еще один маршрут придется менять/дописать скрипт.....
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#15
и без колекции.... просто не устраивает следующее:
если добавить еще один маршрут придется менять/дописать скрипт.....
Ну думаю и с коллекцией тебе придется переписывать скрипт. Чтоб не переписывать - границы сумм надо параметризовать черед док какой нить