@-формулы

20.08.2008
17
0
#1
Добрый день!

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

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

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

Делаю так:

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

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

savl

Lotus team
28.10.2011
2 135
104
#2
открываешь форму в дизайнере
ищешь поле Vid, слева находишь пункт DefaultValue, пишешь туда "Электронная библиотека"
Кнопку меняешь на @Command([Compose]; "ElectronicLibrary")
З.ы. Книги, книги, книги...
 
20.08.2008
17
0
#3
Поле Vid должно принимать разные значения - Электронная библиотека, Обучение, Материалы и т.д. в зависимости от того из какого представления создается.

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

savl

Lotus team
28.10.2011
2 135
104
#4
А принимать значения не из этого списка может?
Скажем, принять значение "Заявки", если создается из представления "Документы" ?
 
20.08.2008
17
0
#5
Нет, нужна жесткая привязка к представлению из которого создается.
 

savl

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

А вот если форма везде одинаковая, то там чуть подшаманить надо, через Notes.ini
 
20.08.2008
17
0
#7
Форма одна ElectronicLibrary.
А notes.ini на сервере править или у пользователя?
 

savl

Lotus team
28.10.2011
2 135
104
#8
Пользователя, сервера не надо. Итак.
В каждом представлении делаем свою кнопку "Создать", это придется сделать.
На примере: Электронная библиотека.
Код:
@Environment("Vid";"Электронная библиотека");
@Command([Compose]; "ElectronicLibrary")
На форме:
Находим поле Vid, делаем его Computed When Compose, в разделе Value пишем:
Код:
res:=@Environment("Vid");
@Environment("Vid";"");
res
Попробуйте.
 

Кирилл Шваб

Well-known member
30.06.2006
145
4
#10
Если можно заменить @PostedCommand на @Command (т.е. если это не нарушит логику кода) , то можно реализовать проще:

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

Также не надо забывать что на @Environment требуется разрешения в ECL, т.к. выполняется запись в notes.ini пользователя.
 
20.08.2008
17
0
#11
Если можно заменить @PostedCommand на @Command (т.е. если это не нарушит логику кода) , то можно реализовать проще:

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

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

savl

Lotus team
28.10.2011
2 135
104
#12
Поле надо будет сделать тогда Editable, и не задавать никакого значения.
Но после этого его можно будет отредактировать.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#14
Есть хорошая формула - @UpdateFormulaContext
А в примерах практически ваш случай.

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

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#15
Поле м.б. вычисляемым.
Проще 1 агент на LotusScript, и 1 SharedAction, встроенный во все необходимые виды с вызовом этого агента.