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

Тема в разделе "Lotus - Программирование", создана пользователем Anatoly, 27 апр 2011.

  1. Anatoly

    Anatoly Well-Known Member

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Anatoly
    Переоткрывать документ нужно в любом случае. Поищите по форуму, были примеры кода на лс.

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

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    @Command([SwitchForm]; "Имя формы") - отрабатывает нормально, сабформа пересчитывается.
    Только выводит диалог о сохранении документа.
    добавил перед ним @Command([FileSave]), но диалог не исчез :)

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Попробуйте
    Код (Text):
    @Picklist ...
    Field SaveOptions := "0";
    @Command([SwitchForm]; Form);
    Field SaveOptions := @DeleteField;
    Если не сработает, просто Field SaveOptions := " ";
     
  5. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Пока остановился на такой концовке:
    ---
    @Command([FileSave]);
    Field SaveOptions := "0";
    @Command([SwitchForm]; "Claim");
    Field SaveOptions := @DeleteField
    ---
    Вроде делается как надо...
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Field SaveOptions := "0"; — для подавления вывода сообщения о несохранении.
    Если документ сохранён (@Command([FileSave]):), то использование SaveOptions избыточно.
     
  7. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Может быть...
    Но даже в таком виде, за несколько минут активного нажимания кнопочки, получил предложение сохранить документ :)
    Кстати при запуске создания документа не из режима в клиенте, а из окна дизайнера - получаю ошибку при работе данного блока.
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Используемый мной вариант: выбирать доки из PickList до создания документа, т.е. из действия создания во вьюхе, естественно, будет загружаться нужная подформа. Переоткрывать док (кнопку перевыбора на форме никто не отменял) приходится реже, т.к. люди не часто ошибаются.
     
  9. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    Пробовал вставить выбор в события формы QueryOpen и PostOpen, что-то не пошло...
    Так, что-бы начать с уровня кнопки в представлении, можно, конечно, попробовать. Но как передавать выбор в форму? Через переменные окружения?
     
  10. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Делается на LS. Создаёте документ, выбираете подформу, сохраняете выбранное значение в поле, открываете.
     
  11. Anatoly

    Anatoly Well-Known Member

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    При создании документа в QueryOpen на лс бэк-документ ещё не доступен, скорее всего, на формулах также.
     
  13. Anatoly

    Anatoly Well-Known Member

    Регистрация:
    30 мар 2007
    Сообщения:
    204
    Симпатии:
    0
    А в PostOpen уже поздно, - сабформа уже открыта...
     
  14. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Есть notesUIWorkspace.ComposeDocument, кот орый также, как @Command "подхватывает" значения полей. Но для решения данной проблемы это не поможет, только notesDatabase.CreateDocument.

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

    Anatoly Well-Known Member

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    У меня так ни в одной версии (5.х-6.х, 7.0.1, 8.5.x), не получалось.
     
Загрузка...

Поделиться этой страницей