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

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

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

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

@-формулы

  • Автор темы KatyaVm22
  • Дата начала
K

KatyaVm22

Добрый день!

Помогите, пожалуйста, разобраться с @-формулами.

Есть несколько Представлений (Электронная библиотека, Обучение, Материалы), данные забиваются с одной формы (ElectronicLibrary).

В Представление (Электронная библиотека) создаю действие (Добавить книгу).
Необходимо, чтобы при нажатии на Добавить книгу - открывалась форма (ElectronicLibrary) с вычисляемым при создании значением полем (Vid) - Электронная библиотека.

Делаю так:

@PostedCommand([Compose]; "ElectronicLibrary") & @SetField("Vid"; "Электронная библиотека")

Форма открывается, а в поле Vid значение Электронная библиотека не появляется.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
открываешь форму в дизайнере
ищешь поле Vid, слева находишь пункт DefaultValue, пишешь туда "Электронная библиотека"
Кнопку меняешь на @Command([Compose]; "ElectronicLibrary")
З.ы. Книги, книги, книги...
 
K

KatyaVm22

Поле Vid должно принимать разные значения - Электронная библиотека, Обучение, Материалы и т.д. в зависимости от того из какого представления создается.

При создание из представления Электронная библиотека - в поле Vid должно быть Электронная библиотека.
При создание из представления Обучение - в поле Vid должно быть Обучение.
При создание из представления Материалы - в поле Vid должно быть Материалы.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
А принимать значения не из этого списка может?
Скажем, принять значение "Заявки", если создается из представления "Документы" ?
 
K

KatyaVm22

Нет, нужна жесткая привязка к представлению из которого создается.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Хм... а форма везде разная? или только ElectronicLibrary?
Потому что если форма везде своя, то прописать это можно на форме и не мучаться:
Находим поле Vid, делаем его Computed When Compose, в разделе Value пишет текст который нам нужен для этой формы.

А вот если форма везде одинаковая, то там чуть подшаманить надо, через Notes.ini
 
K

KatyaVm22

Форма одна ElectronicLibrary.
А notes.ini на сервере править или у пользователя?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Пользователя, сервера не надо. Итак.
В каждом представлении делаем свою кнопку "Создать", это придется сделать.
На примере: Электронная библиотека.
Код:
@Environment("Vid";"Электронная библиотека");
@Command([Compose]; "ElectronicLibrary")

На форме:
Находим поле Vid, делаем его Computed When Compose, в разделе Value пишем:
Код:
res:=@Environment("Vid");
@Environment("Vid";"");
res

Попробуйте.
 
K

KatyaVm22

Большое спасибо :rolleyes:
Всё получилось
 
30.06.2006
141
5
BIT
0
Если можно заменить @PostedCommand на @Command (т.е. если это не нарушит логику кода) , то можно реализовать проще:

@Command([Compose]; "ElectronicLibrary");
@Command([EditGoToField]; "Vid");
@Command([EditInsertText]; "Электронная библиотека");

Также не надо забывать что на @Environment требуется разрешения в ECL, т.к. выполняется запись в notes.ini пользователя.
 
K

KatyaVm22

Если можно заменить @PostedCommand на @Command (т.е. если это не нарушит логику кода) , то можно реализовать проще:

@Command([Compose]; "ElectronicLibrary");
@Command([EditGoToField]; "Vid");
@Command([EditInsertText]; "Электронная библиотека");

Также не надо забывать что на @Environment требуется разрешения в ECL, т.к. выполняется запись в notes.ini пользователя.

А на форме полю Vid что задать?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Поле надо будет сделать тогда Editable, и не задавать никакого значения.
Но после этого его можно будет отредактировать.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Есть хорошая формула - @UpdateFormulaContext
А в примерах практически ваш случай.

@Command([Compose]; "ElectronicLibrary");
@UpdateFormulaContext;
@SetField("Vid"; "Электронная библиотека");
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Поле м.б. вычисляемым.
Проще 1 агент на LotusScript, и 1 SharedAction, встроенный во все необходимые виды с вызовом этого агента.
 
Мы в соцсетях:

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