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

Тема в разделе "Lotus - Программирование", создана пользователем beloff, 5 фев 2013.

  1. beloff

    beloff Well-Known Member

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

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

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Queryopendocument(Source As Notesuiview, ...
    Source.CaretNoteID - это NoteId
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

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

    beloff Well-Known Member

    Регистрация:
    24 июл 2012
    Сообщения:
    103
    Симпатии:
    0
    OKEN вот спасибо!


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

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ой не зарекайся :rolleyes:
     
  6. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Сбоянил)
     
  7. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    Код (LotusScript):
    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
     
  8. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    либо база со скрытым дизайном, где не доступны список полей через Alt+Enter
     
  9. beloff

    beloff Well-Known Member

    Регистрация:
    24 июл 2012
    Сообщения:
    103
    Симпатии:
    0
    либо база со скрытым дизайном, где не доступны список полей через Alt+Enter

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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    beloff
    >Какие еще есть варианты передать в queryopendocument что док на котором курсор - он выбранный?

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    >либо (если галочек нет вообще) коллекцию из одного документа на котором стоит курсор.
    really? в 7ке не работало.
     
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Работало, во view actions и в событиях view, вот только надо было идти одним из 2-х путей:
    1. Делать для всей вьюхе глобальный UIView объект, определялся на PO вьюхи.
    2. В каждой кнопке делать ws.CurrentView
    Иногда слетал фокус если представление встроенное, от разметки формы зависит.
    UPD: LN 7.0.2 тогда использовал
     
  13. beloff

    beloff Well-Known Member

    Регистрация:
    24 июл 2012
    Сообщения:
    103
    Симпатии:
    0
    Omh вариант который предложил OKEN лучше. Мне нужно чтобы вместо открытия (2 клика по доку) одного дока вылазил диалогбокс с данными из этого же дока, а коллекции для этого, по моему разумению, не слишком подходят
     
  14. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    код кот. я запостил, работает и изнутря дока (дает коллекцию с открытым доком) и из вьюшки и по выделенным и по курсору
     
Загрузка...
Похожие Темы - Интересная Задача
  1. beloff
    Ответов:
    11
    Просмотров:
    2.410
  2. vbs
    Ответов:
    9
    Просмотров:
    4.031
  3. Янчик
    Ответов:
    0
    Просмотров:
    490
  4. TrishaRay
    Ответов:
    1
    Просмотров:
    783
  5. elzim
    Ответов:
    0
    Просмотров:
    932

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