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

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

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

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

Programmable Tables: Как Узнать Какая Вкладка Таблицы Открыта У Пользо

  • Автор темы divankin
  • Дата начала
D

divankin

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
разве управляющее поле не содержит текущего значения, если оно CFD?
 
D

divankin

Пробовал ставить CFD. В качестве формулы само поле.
В результате оно стало только криво обновляться в режиме редактирования. В режиме чтения все так же нет обновления вообще.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
а Edit сделать?
а значения прописывать так
Код:
CurrDoc.ReplaceItemValue("$TableID","InfoTab").savetodisk = False
CurrDoc - NotesDocument, глобальный объект определяемый в PO.
При таком подходе можно будет получать значения, но после переоткрытия документа или его обновлении значение может сброситься.
Еще вариант в notes.ini прописать, это самое простое.
 
D

divankin

а Edit сделать?
а значения прописывать так
Код:
CurrDoc.ReplaceItemValue("$TableID","InfoTab").savetodisk = False
CurrDoc - NotesDocument, глобальный объект определяемый в PO.
При таком подходе можно будет получать значения, но после переоткрытия документа или его обновлении значение может сброситься.
Еще вариант в notes.ini прописать, это самое простое.
Перевод в режим редактирования невозможен.
Или вы предлагаете скрыть вкладки и подсунуть вместо них свои кнопки? Тогда все равно переключение работать не будет - документ-то нередактируем, изменения back-end не транслируются во front-end.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
ну здрасте...
используйте:
Код:
Call currUIdoc.RefreshHideFormulas
, а не Refresh.
Тогда и в режиме чтения будет работать и в редактировании.
И да, вкладки предлагаю скрыть и подсунуть свои кнопки.
 

Darkhan

Green Team
14.12.2012
99
2
BIT
0
Перевод в режим редактирования невозможен.
Или вы предлагаете скрыть вкладки и подсунуть вместо них свои кнопки? Тогда все равно переключение работать не будет - документ-то нередактируем, изменения back-end не транслируются во front-end.
Сталкивались с подобной проблемой, как ни странно помогло присваивание.... собаками... через Evaluate, в качестве параметра отправляли Source.Document
 
N

nvyush

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

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
как мелко вы мыслите :(

вставте на каждую вкладку ембедедвью а у виде на постопене в ини вносите название вкладки которая открылась и благодаря ини будете знать на какой вкладке ;)
ну это для настоящих хардкорщиков ;)

а на деле нарисуйте псевдовкладки - обманки а настоящие таблицы через формулы скрытия и тогда спокойно юзайте ини или профайл для сохранения какая вкладка у пользователя - тогда хоть для однотипным доков можно сразу нужную вкладку открывать
 
G

gpatron

на песевдокнопках код:
Код:
Dim ws As New NotesUIWorkspace
Dim uid As NotesUIDocument
Set uid = ws.CurrentDocument
Call uid.Document.ReplaceItemValue("$table", "имя нужной вкладки")
Call uid.RefreshHideFormulas

по крайней мере у меня работает корректно и никогда проблем не возникало
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
на песевдокнопках код:
Код:
Dim ws As New NotesUIWorkspace
Dim uid As NotesUIDocument
Set uid = ws.CurrentDocument
Call uid.Document.ReplaceItemValue("$table", "имя нужной вкладки")
Call uid.RefreshHideFormulas

по крайней мере у меня работает корректно и никогда проблем не возникало
вопрос был про Read режим (не Edit)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
если нужен персистент обжект (для формы) - то зачем писать в поле?
 
G

gpatron

ну вроде таким образом (через изменение поля) выводятся нужные вкладки программируемой таблицы
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
сори - понял схему :) (невтупил сразу про кнопки)
не знаю - согласится ли топикстартер на подобное изменение дизайна приложения
 
G

gpatron

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

ну а насчет согласится или нет.. так, как говорится "Хозяин - барин"
 
Мы в соцсетях:

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