Как получить выделенный в Embedded View документ по кнопке на форме?

  • Автор темы susinmn
  • Дата начала
S

susinmn

Вот напиши, как во вью по выделению документа передать в очередь form+unid?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
форм зачем?
надо юнид выделенного дока (в данном контексте и ИД подойдет), в ф-ции клика (называется по др.), во вью
 
N

nvyush

Ещё один вариант

Во вьюхе создать переменную типа NotesUIDocument, повесить на QueryOpen её инициализацию UIWorkspace.CurrentDocumen, на OnSelect повесить обновление какого-либо поля этого документа значением CurrentID.

В форме по событию нажатия кнопки читаем в нужном поле значение CurrentID и далее делаем с ним то, что нужно.
 
S

susinmn

Заработало с @Environment( "testUNID" ; @Text(@DocumentUniqueID )) при поднятии флажка Editable column в колонке))

Напишите как в кнопке "Get" получить MQ по Name

Кнопка "Set":
Dim MQ As New NotesMessageQueue("ID")
MQ.Message = "Test"

Кнопка "Get":
Set MQ=???
Messagebox(MQ.Message)
 
O

Omh

Кнопка "Set":
Код:
Dim MQ As New NotesMessageQueue("ID")
MQ.Message = "Test"
MQ.Autoclose = False

Кнопка "Get":
Код:
Dim MQ As New NotesMessageQueue("ID")
Messagebox(MQ.Message)

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

susinmn

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

Хочется немного разобраться с очередями, может, где-то пригодятся)

Всем большое спасибо за помощь, все заслужили "+"
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
Хочется немного разобраться с очередями, может, где-то пригодятся)

Всем большое спасибо за помощь, все заслужили "+"
очереди годятся везде - где нужен обмен короткими сообщениями, с "неограниченным" временем (в пределах приложения) жизни коммуникационного объекта
в общем случае:
-"замусоривание" ини файла является злом, есть вероятность "нахлёста" переменных
-как я упоминал бывают случаи "локировки" ини файла на запись
-теоретически возможно повреждение файла, при сбоях
-невозможность контроля одновременного чтения и записи (нет штатных механизмов), в многопоточной среде

очереди используются на сервере, при подаче команд таскам, они попадают именно в очередь
по очередям таски отслеживают своё присутствие
да... на клиенте они существуют именно для Ад"инов :rolleyes:, но механизм можно заюзать и по своим нуждам (никто не запрещал) ;)

Ещё один вариант

Во вьюхе создать переменную типа NotesUIDocument, повесить на QueryOpen её инициализацию UIWorkspace.CurrentDocumen, на OnSelect повесить обновление какого-либо поля этого документа значением CurrentID.

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
да... забыл упомянуть
учитесь помнить о кроссплатформенности Домины, как это делают "взрослые" специалисты, за примером далеко ходить не нужно ;):
https://codeby.net/threads/12026.html?vi...ost&p=54205
 
A

amigolinx

Читал, читал и не сдержался, шобы пять копеек не вставить, не судите строго. Очень нехилый класс лежит на и при юзании делает вот чего: "The SelectedDocsList class provides a way to programmatically access the list of selected docs in a view that's currently open in the Notes client (open in a tab, a frame, or as an embedded view)...". А дальше работа с доками идет по принципу как в обычной документколекшн. Правда, есть предупреждение от автора (он же - Julian Robichaux, кстати) - пашет только локально, с сервера вроде падает... Но идея по-любому стоит внимания.
 
T

TIA

Но идея по-любому стоит внимания.
Посмотрел. У тебя работает? У меня нет. Посмотрел код. Класс не делает то, что обещано в аннотации к нему. Он просто перебирает иногда все документы. Иногда - т.к. не обрабатывает статус превышения размера буфера.
 
A

amigolinx

TIA , очень точное слово "иногда". У меня работает в 97% (бывают глюки на некоторых вьюхах - отдает только первый документ. После запуска на тех же доках, но на другой вьюхе отрабатывает почему-то по честному). Но юзаю я его в основном локально и на небольших количествах доков и тут он справляется аж бегом. Да и в сабже требовалось один док забирать, но чтоб типа красиво было. Я до того, как перевел свои агенты на SelectedDocs, тоже то через энвайрон, то через непонятно какие извраты пихался :))
 
T

TIA

amigolinx
Ага, у меня иногда заработало ;) . Надо было в примере имя вида поправить.
 
A

Akupaka

бывают глюки на некоторых вьюхах - отдает только первый документ
часом не категоризированные виды?.. ну, может быть ;)

у меня иногда заработало
а не в этом ли дело?
Please note that it does not seem to work on embedded views that have a selection filter applied
 
A

amigolinx

часом не категоризированные виды?.. ну, может быть smile.gif

говорю сам себе "Семен Семеныч..." :D - проверка с пристрастием показала - таки да! просто шуровал я этим классом по большей части на простых видах - для поиска по ключу и т.п.

...хотя не - рано обрадовался. не в этом дело, ну или не только в этом. только что бинго выпало и на простой вьюхе :(. наверное, потому что во всеуслышание заговорили за этот класс, он закапризничал. или замучил я его седня тестами всякими ;)
 
T

TIA

а не в этом ли дело?
Не, я эту животину по-другому замучил. Фреймсет с 2 фреймами. В обоих одна и таже вьюха, по которой работает животина. В первом фрейме выделяем 3 документа, во втором -- 2. Причём, один документ и там и там одинаковый. Любопытный эффект - животина рапортует о 4 выделенных документах, т.е. учитывает выделения во всех фреймах.
Если среди выбранных документов, хотя бы один "кривой", то код "спотыкается" и прочие документы не возвращает. Думаю, это устраняемая ущербность экземпла.
 
A

Akupaka

и такого я в своей практике не помню (мож и было) ;)
 
A

amigolinx

Не, я эту животину по-другому замучил. Фреймсет с 2 фреймами. В обоих одна и таже вьюха, по которой работает животина. В первом фрейме выделяем 3 документа, во втором -- 2. Причём, один документ и там и там одинаковый. Любопытный эффект - животина рапортует о 4 выделенных документах, т.е. учитывает выделения во всех фреймах.
Если среди выбранных документов, хотя бы один "кривой", то код "спотыкается" и прочие документы не возвращает. Думаю, это устраняемая ущербность экземпла.
Настолько, конечно, не углублялся. Зато пересмотрел парочку своих агентов и вот к чему пришел (как бы это объяснить по человечески): один док вместо всех выделенных возвращается обычно в тех случаях, когда между обращениями к методам этого класса (напр., в цикле в промежутках до GetNextDocument), выполняется куча кода на документе. Вот тогда стопудово отдаст только первый док. Переделал чуток агент, забив сначала массив из NoteID (по принципу как в примере нарисовано), а потом уже по этому массиву если прохожусь по документам - все отрабатывает отлично, в том числе и на категоризированных видах.
 
T

TIA

Вот тогда стопудово отдаст только первый док.
Тут наверняка таже грабля, что и у NotesDocumentCollection и у NotesView. Когда при переборе коллекции текущий документ удаляется. Тогда достаточно перед обработкой документа сразу получить следующий.
 
Мы в соцсетях:

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