Сабформы по формуле

Anatoly

Lotus team
30.03.2007
222
0
#1
Есть форма.
на форме есть поле "Категория",
Пользователь через @Picklist выбирает выбирает нужную позицию из справочника
при этом в другое (скрытое) поле пишется алиас выбранной позиции справочника
на форме есть сабформа, имя которой зависит то данного алиса.

Как сделать так, что-бы при изменении выбранной позиции справочника изменялась сабформа на экране без закрыть/открыть док снова?
 

nvyush

Lotus team
22.04.2009
2 317
0
#2
Anatoly
Переоткрывать документ нужно в любом случае. Поищите по форуму, были примеры кода на лс.

Кажется, на собаках тоже можно через @Command([SwitchForm]; Form), только на форме должно быть вычисляемое поле Form с именем формы.
 

Anatoly

Lotus team
30.03.2007
222
0
#3
Anatoly
Переоткрывать документ нужно в любом случае. Поищите по форуму, были примеры кода на лс.

Кажется, на собаках тоже можно через @Command([SwitchForm]; Form), только на форме должно быть вычисляемое поле Form с именем формы.
@Command([SwitchForm]; "Имя формы") - отрабатывает нормально, сабформа пересчитывается.
Только выводит диалог о сохранении документа.
добавил перед ним @Command([FileSave]), но диалог не исчез :)

Замена @Command([SwitchForm]; ...), на @PostedCommand([SwitchForm];...) тоже ничего не дало - диалог появляется.
Может какую паузу вставить между этими 2 командами?
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
Попробуйте
Код:
@Picklist ...
Field SaveOptions := "0";
@Command([SwitchForm]; Form);
Field SaveOptions := @DeleteField;
Если не сработает, просто Field SaveOptions := " ";
 

Anatoly

Lotus team
30.03.2007
222
0
#5
Попробуйте
Код:
@Picklist ...
Field SaveOptions := "0";
@Command([SwitchForm]; Form);
Field SaveOptions := @DeleteField;
Если не сработает, просто Field SaveOptions := " ";
Пока остановился на такой концовке:
---
@Command([FileSave]);
Field SaveOptions := "0";
@Command([SwitchForm]; "Claim");
Field SaveOptions := @DeleteField
---
Вроде делается как надо...
 

nvyush

Lotus team
22.04.2009
2 317
0
#6
Пока остановился на такой концовке:
---
@Command([FileSave]);
Field SaveOptions := "0";
@Command([SwitchForm]; "Claim");
Field SaveOptions := @DeleteField
---
Field SaveOptions := "0"; — для подавления вывода сообщения о несохранении.
Если документ сохранён (@Command([FileSave]):), то использование SaveOptions избыточно.
 

Anatoly

Lotus team
30.03.2007
222
0
#7
Field SaveOptions := "0"; — для подавления вывода сообщения о несохранении.
Если документ сохранён (@Command([FileSave]):facepalm:, то использование SaveOptions избыточно.
Может быть...
Но даже в таком виде, за несколько минут активного нажимания кнопочки, получил предложение сохранить документ :)
Кстати при запуске создания документа не из режима в клиенте, а из окна дизайнера - получаю ошибку при работе данного блока.
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#8
Используемый мной вариант: выбирать доки из PickList до создания документа, т.е. из действия создания во вьюхе, естественно, будет загружаться нужная подформа. Переоткрывать док (кнопку перевыбора на форме никто не отменял) приходится реже, т.к. люди не часто ошибаются.
 

Anatoly

Lotus team
30.03.2007
222
0
#9
Используемый мной вариант: выбирать доки из PickList до создания документа, т.е. из действия создания во вьюхе, естественно, будет загружаться нужная подформа. Переоткрывать док (кнопку перевыбора на форме никто не отменял) приходится реже, т.к. люди не часто ошибаются.
Пробовал вставить выбор в события формы QueryOpen и PostOpen, что-то не пошло...
Так, что-бы начать с уровня кнопки в представлении, можно, конечно, попробовать. Но как передавать выбор в форму? Через переменные окружения?
 

nvyush

Lotus team
22.04.2009
2 317
0
#10
Пробовал вставить выбор в события формы QueryOpen и PostOpen, что-то не пошло...
Так, что-бы начать с уровня кнопки в представлении, можно, конечно, попробовать. Но как передавать выбор в форму? Через переменные окружения?
Делается на LS. Создаёте документ, выбираете подформу, сохраняете выбранное значение в поле, открываете.
 

Anatoly

Lotus team
30.03.2007
222
0
#11
Делается на LS. Создаёте документ, выбираете подформу, сохраняете выбранное значение в поле, открываете.
Не люблю я без особой необходимости создавать документы через скрипт, многие поля, заполняемые при создании через @Command "на лету", надо прописывать ручками. А тут, вроде, обошелся формулами. Правда остался вопрос: почему не сработало через формулы в QueryOpen или PostOpen.
Хотя с Post*, вроде ясно, там имя для сабформы уже определено. А в Query* что, еще рано? :)
При создании дока, код в QueryOpen
FIELD FName :=FName;
...
@SetField("FName"; FValue);
не присваивает значение полю
 

nvyush

Lotus team
22.04.2009
2 317
0
#12
А в Query* что, еще рано? smile.gif
При создании дока, код в QueryOpen
FIELD FName :=FName;
...
@SetField("FName"; FValue);
не присваивает значение полю
При создании документа в QueryOpen на лс бэк-документ ещё не доступен, скорее всего, на формулах также.
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#14
многие поля, заполняемые при создании через @Command "на лету", надо прописывать ручками.
Есть notesUIWorkspace.ComposeDocument, кот орый также, как @Command "подхватывает" значения полей. Но для решения данной проблемы это не поможет, только notesDatabase.CreateDocument.

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

Anatoly

Lotus team
30.03.2007
222
0
#15
Я не говорил, что предпочитаю формулы скритам, наоборот. Хотя и не всегда.
Но и .ComposeDocument, и .CreateDocument не работают так, как нужно ;)
Если создать документ в скрипте и потом его открыть:
- поля с прописанным "Default Value" будут пустыми;
- поля "Computed when composed" будут пустыми;
...
Мне это не нравиться.
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#16
Если создать документ в скрипте и потом его открыть:
- поля с прописанным "Default Value" будут пустыми;
- поля "Computed when composed" будут пустыми;
У меня так ни в одной версии (5.х-6.х, 7.0.1, 8.5.x), не получалось.