Интересная Задача

beloff

Well-known member
24.07.2012
113
1
#1
Всем привет. Есть интересная задача (сразу скажу что есть и 2 вариант, но хотелось бы понять почему не работает так как задумал)
Непосредственно описание задачи.
1. Есть БД персонал, там есть штатное расписание конторы (директор, бухгалтер, экономист и т.п. список должностей). Была поставлена задача создать телефонный справочник. Я решил сделать его на базе штатного расписания (автообновлением будет заниматься кадровики - уволили когото или взяли - сразу новая фамилия напротив старого телефона). Я посчитал это разумным.
2. Доступ в БД Персонал регламентирован, абы кто там шляться не может. Я создаю новую БД Тел справочник, в аутлайн пихаю вьюху из БД Персонал, все работает.
3. Хочу чтобы при 2клике на доке штатного расписания в БД Тел.справочник не открывался сам док штатного расписания (там много секретной инфо типа оклада и все такое. Приватность вобщем) а выскакивал маленький dialogbox на котором будут прописаны ФИО чела, его все телефоны и место где он сидит (инфа хранится в доке штатного расписания).
4. Для этого я пишу в queryopendocument вьюхи скрипт, для получения дока с инфой пишу

Set col = db.UnprocessedDocuments
Set doc = col.GetFirstDocument

т.е. док с инфой на котором стоит курсор. Как оказалось, дебагер выдает что col.count=0 что весьма удивительно, т.к. минимум 1 док в любой вьюхе выбран по дефолту, если там уже ляпали мышью хоть раз. Когда то же самое написано на кнопку а не на ляпанье мышью по доку - все работает как надо. Какие еще есть варианты передать в queryopendocument что док на котором курсор - он выбранный? в голову больше ничего не лезет. Вобщем, ай нид хэлп
 

hosm

* so what *
18.05.2009
2 442
6
#2
Queryopendocument(Source As Notesuiview, ...
Source.CaretNoteID - это NoteId
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#3
а объект базы не меняется в этих случаях?
А вообще - как по мне - метод не самый хороший.
Диалог оно конечно хорошо, но Alt+Enter еще никто не отменял.
Я бы делал (собственно так и делаю) отдельную синхронизацию ключевой информации.
Ну или же секъюрная инфа в защищенном респонсе
 

beloff

Well-known member
24.07.2012
113
1
#4
OKEN вот спасибо!


NickProstoNick оно конечно да, никто не отменял, но данные и так не закрыты а тут у нас про такой просмотр кроме меня ну точно никто не знает
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#7
Код:
Function SelectedDocsUI() As NotesDocumentCollection
On Error Goto ErrH
Dim uiview As NotesUIView
Dim doc As NotesDocument, NDC As NotesDocumentCollection, db As NotesDatabase
Dim wks As New NotesUIWorkspace, gses As New NotesSession

Set db = gses.CurrentDatabase
Set uiview=wks.CurrentView
If Not uiview Is Nothing Then
Set NDC=uiview.Documents
Set doc=NDC.GetFirstDocument
If doc Is Nothing Then
'			Set NDC= db.CreateDocumentCollection
Set doc=db.GetDocumentByID(uiview.CaretNoteID)
If doc Is Nothing Then Exit Function
Call NDC.AddDocument(doc)
Set doc=NDC.GetFirstDocument
End If
Else
Set NDC= db.CreateDocumentCollection
Set doc=gses.DocumentContext
If Not doc Is Nothing Then Call NDC.AddDocument(doc)
End If
Set SelectedDocsUI=NDC
Quit:
Exit Function
ErrH:
RaiseError
Resume Quit
End Function
 

yerke

Well-known member
28.08.2007
392
0
#8
а объект базы не меняется в этих случаях?
А вообще - как по мне - метод не самый хороший.
Диалог оно конечно хорошо, но Alt+Enter еще никто не отменял.
Я бы делал (собственно так и делаю) отдельную синхронизацию ключевой информации.
Ну или же секъюрная инфа в защищенном респонсе
либо база со скрытым дизайном, где не доступны список полей через Alt+Enter
 

beloff

Well-known member
24.07.2012
113
1
#9
либо база со скрытым дизайном, где не доступны список полей через Alt+Enter

я этим точно заниматься не буду, так было до меня и останется после меня, а иногда нужно очень быстро посмотреть значения скрытых полей.

Всем принявшим участие спасибо, особенно OKEN, все сделал, все работает
 

Omh

Lotus team
04.07.2007
2 210
1
#10
beloff
>Какие еще есть варианты передать в queryopendocument что док на котором курсор - он выбранный?

Семён Семёныч!!!
Пропертя
Код:
NotesUIView.Documents
отдаст тебе коллекцию документов у которых стоит галочка, либо (если галочек нет вообще) коллекцию из одного документа на котором стоит курсор.
И усэ!
 

hosm

* so what *
18.05.2009
2 442
6
#11
>либо (если галочек нет вообще) коллекцию из одного документа на котором стоит курсор.
really? в 7ке не работало.
 

savl

Lotus team
28.10.2011
2 136
105
#12
в 7ке не работало
Работало, во view actions и в событиях view, вот только надо было идти одним из 2-х путей:
1. Делать для всей вьюхе глобальный UIView объект, определялся на PO вьюхи.
2. В каждой кнопке делать ws.CurrentView
Иногда слетал фокус если представление встроенное, от разметки формы зависит.
UPD: LN 7.0.2 тогда использовал
 

beloff

Well-known member
24.07.2012
113
1
#13
Omh вариант который предложил OKEN лучше. Мне нужно чтобы вместо открытия (2 клика по доку) одного дока вылазил диалогбокс с данными из этого же дока, а коллекции для этого, по моему разумению, не слишком подходят
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#14
beloff
>Какие еще есть варианты передать в queryopendocument что док на котором курсор - он выбранный?

Семён Семёныч!!!
Пропертя
Код:
NotesUIView.Documents
отдаст тебе коллекцию документов у которых стоит галочка, либо (если галочек нет вообще) коллекцию из одного документа на котором стоит курсор.
И усэ!
код кот. я запостил, работает и изнутря дока (дает коллекцию с открытым доком) и из вьюшки и по выделенным и по курсору