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

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

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

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

Скрытие Action в EmbeddedView

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

SkinGreek

Всем привет.

Подскажите плз, можно ли скрыть кнопку в View, которая в последсвии будет внедрена в форму, в зависимости от поля определенного в форме-вндренца(форма в которую будет внедрено данное представление).

В действительности это поле конечно там не поределено, но текущий документ будет иметь значение этого поля:rolleyes:).(Речь идет о LWF поле ACTIVITYOS)
Но думаю это не принципиально важно, так как если смогу сослаться на поле определенное в форме-внедренца, то и к ACTIVITYOS смогу сослаться.

Не хочется создавать 2 одинаковых представления отличающихся лишь наличием Action'a:(
 
X

Xellos

Попробуйте прописать в свойствах action в разделе "Hide then" формулу скрытия, которая будет зависеть от свойств вашего документа. Не обращая внимания на содержание представления.
Обратитесь к полю просто по имени, как в любой формуле для формы. Например, напишите
Код:
ACTIVITYOS="Linux"&OSRELEASE="Debian"|ACTIVITYOS="MacOS"
 
S

SkinGreek

ага так и пробовал, а он не хочет. она ему пуста:(
Хотя в другом view action пишу
Код:
Sub Click(Source As Button)
Dim curdoc As NotesDocument
Dim newdoc As NotesDocument
Dim w As New NotesUIWorkspace

Set curdoc = w.CurrentDocument.Document
Set newdoc = w.CurrentDatabase.Database.CreateDocument

newdoc.form="InfoMng"

Call newdoc.ReplaceItemValue("txtParentInputDocId", curdoc.GetItemValue("txtInputDocId"))

Call w.EditDocument(True, newdoc)
End Sub
И он видит curdoc и его поле txtInputDocId, хотя Action поставлен на view(она конечно внедрена в форму)
 
X

Xellos

Ну там-то понятно, что он видит curdoc, потому что его на самом деле "видит" workspace. Скрипт не имеет таких ограничений как формулы, если получил workspace - делай с ним что хочешь. Всё, что видно - всё можно получить.
 
A

Akupaka

- прерывать выполнение кода видимой всегда кнопки в зависимости от значения поля в текущем документе;

- если кнопка лишь одна-две и скрываются они вместе, то можно одно и то же представление внедрить дважды, но в одном случае с видимыми кнопками, а в другом с невидимыми, и в зависимости от значения поля скрывать то одно, то другое;

- сделать кнопки на форме, над внедренным представлением чтобы было похоже на действия в виде.
 
X

Xellos

>сделать кнопки на форме, над внедренным представлением чтобы было похоже на действия в вид

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

Akupaka

>сделать кнопки на форме, над внедренным представлением чтобы было похоже на действия в вид
Возможно, самый простой способ. Но будет неудобно, если представление включается в несколько форм.
подформы не пробовал еще?.. :(
 
S

SkinGreek

Akupaka
кнопки надо скрывать и показывать не одновременно, причем 2 показывать - 1 скрывать и наоборот. 2 кнопки надо показать в одной активности Lotus Workflow, а другую в другой. Форма сама не меняется. Активности определяю по ACTIVITYOS. Сейчас сделал 2 представления и меняю их в формуле внедренной формы.

1 - В этой активности они вообще не должны видеть эту кнопочку
2 - кнопки чередуются, поэтому похоже не подойдет если я правильно понял
3 - сам не пробовал но слышал есть проблемы определения выделенного документа и решаются она как раз экшенами внутри view

В принципе я уже смирился что будет у меня 2 одинаковых view, просто теплилась надежда что можно все ж сделать управление кнопками в зависимости от полей формы-вндренца


Спасиб всем за советы.
 
A

Akupaka

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

Omh

SkinGreek
В зависимости от полей формы, в которую вложено view, кмк, нормально не сделать.
Можно попытатся пописать/почитать environment или профайлы, но это не джедайское решение.

А у тебя в нижних документах поля ACTIVITYOS нету?
Потому как в зависимости от выдеоленного документа в embedded view, кнопки прятать можно очень хорошо.
 
S

SkinGreek

ACTIVITYOS нет смысла добавить в те документы((, а Env юзать опасно.лучше копипаст сделаю))), то есть 2 вьюхи.

если полностью описать задачу то выглядит она так.

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

То есть для первой активности во вьюхе стандартные экшены(добавить редактировать удалить)
Во второй активности у вьюхи 1 экшен типа "создать/редактировать карточку"
Выделяется документ и по нажатию на экшен открывается на создание/(редактирование уже существующего) зависимого документа(по сути между ними связь "один к одному")

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

Спасиб большое за помощь
 
N

nor

SkinGreek

try hidden formulas with @GetDocField(docunid, fieldname)

docunid - UNID of a parent note
fieldname - target field's name of a parent note

in the view select option "Evaluate action for every document change"

as example:

actionExecutors := @GetDocField(parentUnid; "$EVAContactRemove");
@If(
@IsError(actionExecutors);
@Return(@True);
!(
@UserRoles *= actionExecutors | @IsMember(@UserName; actionExecutors)
)
)
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Всем привет!
Вот столкнулся с проблемой....
Есть форма... в ней Embedded View. У View есть Action... Action надо прятать при возведении определенного поля формы в "1".
Ну так вот... обычное условие <поле> = "1" не работает. :)
 
K

Klido

не работает... по крайней мере мне неизвестно :) делается вторая вьюха БЕЗ кнопок, а внедряется вьюха - по формуле относительно требуемого поля...
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Evaluate action on every document change
Это не помогает. Точнее не для этого случая.
Klido
Почти так и сделали. Только обошлись одним видом.
Создали еще один Embedded-элемент для того же самого View. А формулу повесили на Action bar

Вопрос снят!
Всем спасибо
 
K

Klido

ага, ща ещё ToxaRat заглянет и скажет перегружать вьюху через xml при изменении поля :)
 
A

Akupaka

о, а через переменные окружения никто не пробовал?.. интересно, схавает ли?..
 
Мы в соцсетях:

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