Представление

Xalet

Well-Known Member
08.08.2008
410
0
Вильнюс. Литва.
#1
Здравствуйте.

Есть база данных в ЛН. В ней документы, в документах поле с датой. Надо сделать вьюшку в которой отобразить документы за выбранный период. Вроде все довольно просто, один но, надо в столбике отметить галочками документы, которые модифицировались после периода. Я так понимаю, надо сделать столбик с формулой, а потом эту формулу заменять. Или есть другие способы? Да и формулу пока менять у меня не особо то получается.

Заранее спасибо.
 

TIA

:-)
Lotus team
15.05.2009
790
1
#2
Чтоб отметить галками документы во вьюшке, можно сделать агент на @-формулах, указать его тип операции "Select documents in view" (в правом нижнем углу дизайнера) и в теле агента написать SELECT <условие отбора>.
Или надо иконку в виде галочки?
 

Xalet

Well-Known Member
08.08.2008
410
0
Вильнюс. Литва.
#3
Или надо иконку в виде галочки?
Именно. Зелененькую такую... Чтобы можно было отсортировать при желании или категоризировать.
Хотя вариант с обычными галочками тоже неплохо, как-то забыл я про него.
 

TIA

:-)
Lotus team
15.05.2009
790
1
#4
Аккуратней, опять пахнет выборкой и/или значениями, зависимыми от времени. :)
Тогда вопросы:
Как часто меняется период?
Могут ли несколько пользователей одновременно менять период?
Происходит ли это в общей или личной БД?
Допустимо ли применение приватных вьюх, хранимых на сервере (SPOFU)?
 
A

amigolinx

Гость
#5
Если и только если выполняются/избегаются все предостережения из поста TIA , то можно сделать требуемое следующим образом:
1. на нужный столбец, например, первый повесить свойство "Отображать значения как значки"
2. прописать в него формулу типа @If(@Date(@Modified) > @TextToTime("01.01.2009"); 82; 0)
3. создать кнопку для вьюхи с кодом
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace	

Dim view As NotesView	
Set view = ws.CurrentView.View

Dim vc As NotesViewColumn
Set vc = view.Columns(0)

Dim fd As String
fd = ws.Prompt(PROMPT_OKCANCELEDIT, "Date pick", "Enter date value", "01.01.2009")

If vc.IsFormula Then
vc.Formula = {@If(@Date(@Modified) > @TextToTime("} + fd + {"); 82; 0)}
End If
Call ws.ViewRebuild
End Sub
НО! При этом даже вьюха локальной базы с парой десятков документов перестраивается около 1 секунды. Можете себе представить, во что это выльется для сервака...
 

Xalet

Well-Known Member
08.08.2008
410
0
Вильнюс. Литва.
#6
Как часто меняется период?
Постоянно. Выбирается руками.

Могут ли несколько пользователей одновременно менять период?
Да. И отсюда ответы на осстальные вопросы. Только десктопный вариант мб.

Вроде разобрался, как это реализовать... Буде пробовать.

Спасибо за ответы.
 

TIA

:-)
Lotus team
15.05.2009
790
1
#9
Функции не работают в столбиках.
Как, вообще функции не работают? А мужики то и не знают... :)
Я имел ввиду механизм, который используется для условной раскраски строк вьюшки. Посмотри в почтовой БД фолдер "($Inbox).
 

TIA

:-)
Lotus team
15.05.2009
790
1
#11
Если мне не изменяет память, то профиль в данном случае будет один на всех
Смысле, один профиль на вьюшку - да. А вьюшка SPOFU. Т.е. одна на пользователя. Каждый пользователь свой профиль и пусть правит для установки периода. Точнее, формулы проверки, что @Modified > верхней границы периода.

Это конечно решение, но не нравится оно мне. Сервер прилично нагрузится. Лучше что-то типа поиска делать или отчёта.
 
S

sirin

Гость
#12
У меня тоже вопросик по теме: есть представление с документами кучи отделов. как открыть представление для пользователя, чтобы он видел документы только своего отдела? Очень прошу, помогите, но пожалуйста, пишите попроще, а то я не совсем понимаю ваш сленг :-(((
 

TIA

:-)
Lotus team
15.05.2009
790
1
#13
Сделать категоризированное представление. Первая колонка (категория) пусть содержит идентификаторы отделов. Делаем форму (или page), в ней встроенное представление. У представления есть св-во "Show single category". В это св-во пишем формулу, которая для текущего пользователя вычислит идентификатор его отдела. При открытии формы (страницы) пользователем, отобразятся значения из категории, соответствующей вычисленному идентификатору отдела. Ещё способ - посмотрите хелп по @SetViewInfo. По назначению она тоже подходит, только вот есть ряд неприятных глюков, из-за которых я не люблю ею пользоваться.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#14
Сделать категоризированное представление. Первая колонка (категория) пусть содержит идентификаторы отделов. Делаем форму (или page), в ней встроенное представление. У представления есть св-во "Show single category". В это св-во пишем формулу, которая для текущего пользователя вычислит идентификатор его отдела. При открытии формы (страницы) пользователем, отобразятся значения из категории, соответствующей вычисленному идентификатору отдела. Ещё способ - посмотрите хелп по @SetViewInfo. По назначению она тоже подходит, только вот есть ряд неприятных глюков, из-за которых я не люблю ею пользоваться.
В последнее время стал ловить странный глюк с внедрёнными представлениями. Заключается в том, что иногда начинает отображаться строка категории (пустая). Двойной клик по ней сворачивает категорию, все доки скрываются. Пользователь в шоке. Второй раз кликнуть не все догадываются.
Как лечить - не знаю, проявляется на клиенте 8.0.2.
 

TIA

:-)
Lotus team
15.05.2009
790
1
#15
А ещё если долго держать документ с внедрённым представлением открытым, а с БД параллёльно ведётся работа, иногда получается, что встроенная вьюшка начинает отображать не свою категорию :o