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

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

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

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

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

  • Автор темы Anatoly
  • Дата начала
A

Anatoly

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

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

nvyush

Anatoly
Переоткрывать документ нужно в любом случае. Поищите по форуму, были примеры кода на лс.

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

Anatoly

Anatoly
Переоткрывать документ нужно в любом случае. Поищите по форуму, были примеры кода на лс.

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

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

nvyush

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

Anatoly

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

nvyush

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

Anatoly

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

VladSh

начинающий
Lotus Team
11.12.2009
1 785
157
BIT
68
Используемый мной вариант: выбирать доки из PickList до создания документа, т.е. из действия создания во вьюхе, естественно, будет загружаться нужная подформа. Переоткрывать док (кнопку перевыбора на форме никто не отменял) приходится реже, т.к. люди не часто ошибаются.
 
A

Anatoly

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

nvyush

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

Anatoly

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

nvyush

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

VladSh

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

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

Anatoly

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

VladSh

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

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