• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы beloff
  • Дата начала
B

beloff

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

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

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

hosm

Queryopendocument(Source As Notesuiview, ...
Source.CaretNoteID - это NoteId
 

NickProstoNick

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

beloff

OKEN вот спасибо!


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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
Код:
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
 
Y

yerke

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

beloff

либо база со скрытым дизайном, где не доступны список полей через Alt+Enter

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

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

Omh

beloff
>Какие еще есть варианты передать в queryopendocument что док на котором курсор - он выбранный?

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

hosm

>либо (если галочек нет вообще) коллекцию из одного документа на котором стоит курсор.
really? в 7ке не работало.
 

savl

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

beloff

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
beloff
>Какие еще есть варианты передать в queryopendocument что док на котором курсор - он выбранный?

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!