Как задать фильтр в представлении?

Тема в разделе "Lotus - Программирование", создана пользователем AlexeyStaf, 30 июн 2010.

  1. AlexeyStaf

    AlexeyStaf Гость

    Добрый день!
    Пользователю доступно N-е количество представлений (порядка 40-50), один документ может отображаться только в одном представлении или в нескольких. Например, открыв 1-е представление ему надо по какому-то дополнительному критерию отсеять записи в нем - задать фильтр: по дате, по имени вложения или по какому-то еще полю (критерий может задаваться по полю, которое в данном представлении не отображается). После перехода на другое представление фильтр сбрасывается, хотя если бы не сбрасывался то ошибка с поврежденным документом все равно осталась бы.
    Сейчас фильтр реализован через изменение поля View.SelectionFormula. При закрытии представления значение фильтра автоматически сбрасывается в исходное (вызывается View.SelectionFormula = "SELECT ..."). Все работает хорошо.
    Только при каждом открытии базы в статусбаре выводится "document has been modified or corrupted since signed! (data)". Если значение SelectionFormula не изменять, то все проходит хорошо.
    Поэтому вопрос: какие есть варианты реализации фильтра чтобы не было такой ошибки или же можно как-то "откатить" значение SelectionFormula в первоначальное состояние? И попутно: возможно ли генерировать формулу выборки для представления динамически? А то получается что некоторые представления отличаются одним полем всего, хотелось бы как-то это все упростить.
    Заранее благодарен.
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Всегда считал что данное сообщение выводится, когда подписанный документ затем модифицируется в бэкэнде, например, агентом. По крайней мере связи с формулой отбора не замечал.
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.077
    Симпатии:
    300
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    После изменения SelectionFormula, необходимо взять документ вида и выполнить метод .Sign(), потом не забыть .Save()
     
  5. AlexeyStaf

    AlexeyStaf Гость

    А если с базой работает много пользователей одновременно? Или же они будут подписывать каждый свое представление?

    Добавлено:
    Смысл в том, что пользователь перемещается по списку, где каждой записи должено соответствовать свое представление, в котором можно задать еще и фильтр. В каждом представлении может отображаться довольно-таки много документов (от десятков до нескольких тысяч). В какую сторону лучше тогда копать, чтобы производительность была пошустрее?
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Сообщение потому что меняешь элемент дизайна (view.SelectionFormula) и не подписываешь его потом.
    Решение годиться только для single-user базы.
     
  7. AlexeyStaf

    AlexeyStaf Гость

    Мне этот вариант сразу не понравился ;)
    Сам понимаю, что решение с огромным количеством вьюх выглядит некрасиво, поэтому и ищу какую-то альтернативу...
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Может список в Outline вынести? Обычно так делается. А фильтрацию можно штатную использовать, задействовать хранимые фильтры.
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Количество записей фиксировано?
    Если да, то кол-во записей = кол-во view
    Если нет, что-то вроде ShowSingleCategory


    db.Search/db.FTSearch + отображение по желанию: RichText, Html, внешний файл
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Посмотри @SetViewInfo(), может поможет
     
Загрузка...

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