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

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

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

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

Hide Action

  • Автор темы mindwalker
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

mindwalker

Есть shared action Сохранить
@Command( [FileSave] );
@Command([EditDocument]; "0" )

В его свойствах стоят галки hide action
Previewed for reading
Previewed for editing
Opened for reading

Создавая новую форму и нажимая этот экшн, в одной форме он прячется, как должен, а в другой остается :)

Код создания форм одинаковый, свойства формы и прочего вроде одинаковы. События postsave и прочие отсутствуют.
Почему работает по разному не пойму. Может это лаг лотуса, как с этим бороться?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
55
@Command([EditDocument]; "0" )
А зачем это?
Для "Сохранить" достаточно просто 1-й строки, а для "Сохранить и Закрыть":
Код:
@If(@Command([FileSave]);
@Command([FileCloseWindow]);"")
Такое бывает.. сразу в свойствах формы смотрю галку "Automatically refresh fields" и пытаюсь изменить эту опцию. Вообще, желательно, без острой необходимости :) её не включать.
Было несколько раз, что это не помогало... и если "Код создания форм одинаковый, свойства формы и прочего одинаковы", то на Postmodechange чтобы формулы на действиях корректно перепросчитывались ставлю:
Код:
If Source.EditMode Then Call Source.Refresh() Else Call Source.RefreshHideFormulas()
 
A

alik86

@Command([EditDocument]; "0" )
А зачем это?
Так при @Command( [FileSave]) документ остается в режиме редактирования. А бывает "острая" необходимость перевести его в речим чтения... Правда, я для этого использую @If(@Command([FileSave]); @Command([EditDocument]; 0); @Return("")), что впринципе те же яйца :)
 
M

mindwalker

Убирание галки Automatically refresh и добавление кода рефреша в Postmodechange не помогает.
Формы точнее не одинаковы, просто для чистоты эксперимента я удаляю в них вообще все кроме этого экшна.

Изменил код экшна на
@If(@Command([FileSave]); @Command([EditDocument]; 0); @Return(""))
если повторно нажимать его в форме на которой он не прячется то выдается ошибка "Cannot execute specified command"
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
55
"Убирание галки Automatically refresh и добавление кода рефреша в Postmodechange не помогает"
Не помогает для чего? Ошибка выдаётся правильно, т.к. FileSave работает только в режиме редактирования.
Кнопка должна скрываться.
Строка на Postmodechange у меня работает при включеной галке "Automatically refresh". У меня только так скрывается кнопка "Редактировать".
 
M

mindwalker

Не помогает для чего? Ошибка выдаётся правильно
Не помогает кнопке скрыться. И с галкой и без нее экшн остается.
Документ переходит в режим чтения, и ошибка это подтверждает. Но кнопки не прячутся :D
PS делаю в 6м дизайнере
 
T

TIA

Создавая новую форму и нажимая этот экшн, в одной форме он прячется, как должен, а в другой остается sad.gif

Код создания форм одинаковый, свойства формы и прочего вроде одинаковы. События postsave и прочие отсутствуют.
Почему работает по разному не пойму. Может это лаг лотуса, как с этим бороться?

Можно уточнить, вы действительно создаёте "формы" (т.е. элементы дизайна типа "Form"), или же документы по данной форме?
Вы действительно создаёте "формы" кодом?

Работающая и не работающая форма/документ расположены в одной и той же БД?
 
M

mindwalker

Да, извините, правильнее говорить что я создаю документы.
В одной и той же БД, и документа создаются response к главному.
Есть 2 элемента дизайна типа Form - "sos" и "tperiod", по ним создаю документы:

Set uidoc=ws.CurrentDocument
Set docv = uidoc.Document
Set uidoc = ws.ComposeDocument(,,"sos")
Set doc = uidoc.Document
Call doc.MakeResponse(docv)

При создании и сохранении экшн не прячется. Хотя если потом открыть на редактирование и сохранить экшн прячется нормально.
 
T

TIA

Экшен не прячется на форме "sos", а нормально прячется, когда создаёте по форме "tperiod"?
При этом в обеих формах использован один и тот же шаред-экшен?
При отображении св-в этого шаред-экшена из формы, куда он вставлен, одинаковы ли галки скрытия (отображаются серым)?
Если попробовать удалить и вставить заново шаред-экшен в обоих формах, станет ли скрытие одинаковым?
 
M

mindwalker

Наоборот в tperiod не прячется, ну не суть :(
Экшн тот же, галки одинаковы, при вставке заново галки те же
Я так понимаю это тупо лаг лотуса и поможет мне только удаление форм и создание заного :discard:
 
H

hosm

Это конечно, не очень, но !@IsDocBeingEdited не поможет для скрытия?
 
M

mindwalker

Добавил Hide в Shared Action по формуле !@IsDocBeingEdited, галки в хайдах по режиму оставил.
Все равно при создании документа не прячется экшн :D
Может в advanced свойствах SA что не так поставлено про OLE?
 
T

TIA

mindwalker
Может, выложите БД с примером? Какие-то чудеса прям на ровном месте.
 
M

mindwalker

Вы новую базу перенес нужные куски.
В виде показываются основные документы. В основных документах в режиме редактирования есть кнопка создать. При !создании! записи о трудовом периоде и ее сохранении кнопка не прячется.
 

Вложения

  • example.rar
    31,4 КБ · Просмотры: 128

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
55
Блин, какая кнопка не прячется??? Кнопка "Сохранить" в "Трудовом периоде" (у меня она нормально прячется) или кнопка "Создать" в основном документе??
 
T

TIA

Вы новую базу перенес нужные куски.
Хм. Не воспроизводится. Notes 7.0.2
Открыл я первый документ.
Перешёл в редактирование
Нажал акцию "Создать\Запись о трудовом периоде"
Открылся новый документ с одной акцией в виде зелёной галки.
После нажатия акции, документ сохранился, акция виде зелёной галки скрылась, и отобразилась акция с карандашом.

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

Не может ли такой эффект быть связан с "дребезгом мыши". Когда вместо одного клика выполняется два. Первый клик переводит в режим чтения и показывает карандаш, а второй обратно в режим редактирования и показ зелёной галки. Ведь карандаш появляется на том же месте, что и галка. Попробуйте нажимать акцию через Alt+1.

Под какой версией Нотес проверяли вы, тоже под 6м, как и дизайнер?
 
M

mindwalker

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

Не может ли такой эффект быть связан с "дребезгом мыши"
Крайне маловероятно.
На одной форме прячется всегда, на другой никогда. И через клаву alt+1 тоже самое.
Версии 6.0 у обоих.

В общем судя по всему обсуждение пора заканчивать :KillMe: Видимо поможет тут только бубен или пересоздание заного :)
 
T

TIA

Под 6.5 воспроизвелось. Что наблюдаю:

Документ по форме tperiod при нажатии акции с галкой сохраняется.
У него есть $REF, ссылающийся на родителя, но документ в представлении не отображается.
Тип у $REF правильный.
В представлении без галки "Show response..." документ виден.

Если создавать документ через @Command([Compose]) глюк исчезает.
Если переключиться в представление без отображения респонсов и открыть "персональную карточку" из него, глюк исчезает.

Забавно.
 
T

TIA

Нашёл.
Глюк исчез, когда добавил в представление отбор документов по форме "tperiod" (не важно через @IsResponse или явно по имени формы). В этом и было его отличие от документа по форме "sos", который отбирался во вьюшку.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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