Форма Поиска Документов Через Web Xpages

Тема в разделе "Lotus - Xpages", создана пользователем phantom76, 8 авг 2012.

  1. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    в клиенте есть форма для поиска документов на скрипте:

    все просто заполняется форма и дальше через db.Search - результаты вывожу ввиде таблицы через форму для результата. Нет не у кого ссылки на достойный пример реализации поиска под Xpages с параметрами и например выходом во view c фильтром?
     
  2. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Вот нашел, буду разбирать: - поиск интересовал по аналогии как здесь

    шаблон БД взял здесь

    еще пример от IBM

    если будут другие примеры, пожалуйста поделитесь ;)
     
  3. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    появился вопрос:
    каким образом под Xpages конвертируются дата\время в запрос?

    с текстовыми данными все понятно:

    поле на странице связываю с областью sessionScope.Subject_search,

    во view в search размещаю:

    Код (Text):
    var tmpArray = new Array("");
    var cTerms = 0;
    if(sessionScope.Subject_search != null & sessionScope.Subject_search != "") {
    tmpArray[cTerms++] = "(FIELD Subject = \"" + sessionScope.Subject_search + "\")";
    }
    ................................................................................
    .............
    qstring = tmpArray.join(" AND ").trim();
    sessionScope.queryString = qstring;
    return qstring
    с текстовыми полями все отлично работает, а как правильно конвертировать данные типа дата\время в запрос?
     
  4. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Код (Text):
    if(viewScope.search_birthday != null & viewScope.search_birthday != "") {
    var d = viewScope.search_birthday;
    tmpArray[cTerms++] = "(FIELD birthday > " + @Day(d)+"/"+@Month(d)+"/"+@Year(d) + ")";
    }
     
  5. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Спасибо, все еще не как не привыкну к коктейлю JavaScript + @формулы :)
     
  6. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    А подскажите, если FIELD Subject не Subject а $17 - почему не работает, может в этом случае указывать не columnName?
     
  7. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Указывать нужно поле из документа и не из вьюхи, поиск производится полнотекстовый по всем полям (summary) документов отобранных через представление, а потом это может быть даже формула
     
  8. Mitya

    Mitya Well-Known Member

    Регистрация:
    13 июн 2012
    Сообщения:
    111
    Симпатии:
    0
    да, спасибо большое!!!
     
  9. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    коллеги, где у меня ошибка?

    - успешно получаю Ids выбранного документа из view через кнопку:

    Код (LotusScript):
    var viewPanel=getComponent("picklistView");
    sessionScope.pickledIds = viewPanel.getSelectedIds();
    sessionScope.selID = sessionScope.pickledIds[0];
    далее по ids пытаюсь получить документ:

    в вычисляемом поле и далее из него значение из поля (до поля не дохожу, падаю..):

    Код (LotusScript):
    var db1 = session.getDatabase(session.getServerName(),"app\\main.nsf")
    id = sessionScope.selID
    //var doc = db1.getDocumentByID(id)
    //return "Выбранный ID= "+ sessionScope.selID
    return db1.getFilePath()
    как только раскоментирую строчку с doc , страница падает. Объект БД проверял получаю, ids тоже живой.

    спрятал весь код по вычислению документа к кнопку выбора выделенных в представлении элементов:

    var viewPanel=getComponent("picklistView");
    sessionScope.put("pickledIds", viewPanel.getSelectedIds());
    var db1 = session.getDatabase(session.getServerName(),"app\\main.nsf")
    docid = sessionScope.pickledIds[0];
    var d1 = db1.getDocumentByID(docid);
    unid = d1.getUniversalID();
    sessionScope.put("Unid2", unid);

    в итоге в вычисляемом поле получил Unid документа:
    return "UNID = " + sessionScope.Unid2

    проделал все на версии сервера 8.5.2 , завтра проверю на 8.5.1 - где до этого не получилось...
     
  10. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    походу заработало, но так и не понял в чем был косяк ;)
    сделал ребилд, перепрописал пару скриптов, работает стабильно!
     
Загрузка...

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