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

Тема в разделе "Lotus - Программирование", создана пользователем Cleric-Lviv, 26 окт 2009.

  1. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    всем привет!
    проблем вот в чем:
    агентом обробляю документ. вичисляю значение поля Сума. припустим = 7000
    далее ищу вю. далее колекция документов, и теперь самое оно:
    в колекции документов есть
    A(10000)
    B(25000)
    C(50000)
    как сделать чтоб если у меня значение поля Сума=< 10000 вибирался документ А(10000)
    если я просто сделаю поиск по ключу то dc = 0 получу.....
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    выбирай нужную колекцию типа
    set col = db.Search({a+b+c<10000}, nothing, 0)
     
  3. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    ToxaRat
    чтото не очень получается;)
    Код (Text):
    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
     
  4. Yakov

    Yakov Гость

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

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Yakov
    да ищет, сначала обрадовался......;) но потом понял, нашло то документ из которого я брал "SumaEnd" тоесть поточний документ........:(
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    что-то мне кажется что одним запросом тут не обойдешься.
    Не проще, если же есть коллекция документов, в цикле проходить коллекцию и найти нужный документ.
    Критерием нужного документа по идее должно быть наибольшее отрицательное значение между суммой исходного документа и документа из коллекции (т.е. приближающиеся к 0)
     
  7. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    NickProstoNick
    нету колекции......откуда она должна била взятся?
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    А это тогда что такое?
    Ты же сам написал что в коллекции есть документы
     
  9. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    NickProstoNick
    ето на будующее, написано...ето результат так сказать что должен бить
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Совсем запутался!? А что надо получить сначала?
    давай ты поэтапно напишешь чего надо делать
     
  11. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    NickProstoNick
    сорри вчера не смог отписать

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну тут только перебором/анализом коллекции.
    Если на выходе тебе нужна именно коллекция, то её можно создать так :
    Код (Text):
    Set Dc = Db.Search({@False}, Nothing, 0) 'сделал пустую коллекцию, есть вариант чуть быстрее, но для иллюстрации и этот покатит
    'Какой-то космический скрипт, который анализирует документы во view и в нужный момент делаем
    Call Dc.AddDocument(DesiredDoc)
    А вообще нафига коллекция?
    Идёшь по view и процессишь доки, которые удовлетворяют условию.
    Кагбэ всё.
     
  13. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Omh
    сделал
    Код (Text):
    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
    и без колекции.... просто не устраивает следующее:
    если добавить еще один маршрут придется менять/дописать скрипт.....
     
  14. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Cleric-Lviv
    Однако, какая-то жесть.
     
  15. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну думаю и с коллекцией тебе придется переписывать скрипт. Чтоб не переписывать - границы сумм надо параметризовать черед док какой нить
     
  16. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    Omh
    тоесть жесть?:)
     
Загрузка...

Поделиться этой страницей