Отображение ответа в Web

Тема в разделе "Lotus - Программирование", создана пользователем killa007, 22 май 2009.

  1. killa007

    killa007 Гость

    народ, помогите, пожалуйста!
    Необходимо из вьюшки создавать ответный документ по нажатию кнопки. Форма для ответа создана, Кнопка "response" на вьюшке тоже (@Command([ComposeWithReference]; ""; "resp"; 2)). Вопрос вот в чем: при нажатии в Internet explorer созданной мной кнопки, выскакивает ошибка 500! В чем же дело? причем если форму "resp" сделать простой, а не response, то все открывается без проблем...:)
     
  2. K-Fire

    K-Fire Гость

    Гмм, а как вы себе в вебе представляете определение кто для респонза является парентом? ;)
     
  3. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
     
  4. killa007

    killa007 Гость

    Видите ли, я всего лишь начинающий, а сделать нужно много за маленький промежуток времени...;)никак не представляю, как определить в вебе парента для респонза:) потому я сюда и написал
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    не отмазывайся, читай то, что тебе написали, думай, задавай вопросы! ;)
    с помощью кнопки и js можно открыть урл по форме (выше описание из справки)
    http://host/database/form?OpenForm&ParentUNID=mainunid
    документ, который создается при этом будет "думать", что он дочерний от того, чей унид указан параметром ParentUNID
     
  6. killa007

    killa007 Гость

    2 akupaka.
    Спасиба, но @Command([Compose],"resp"); работать тоже не хочет. В content help есть указание на то, что необходимо в form formula у вьюшки написать следующую команду: @If(@IsNewDoc; @Return(Form); @IsResponseDoc;"Response";"MainTopic"), однако это тоже не возымело эффекта...
    Кста, а как работать с UNIDами? назначать или ...?
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну, чтение хелпа это хорошо, но ты куда-то не туда ушел :)

    итак, формулы!
    объяснять буду просто, не используя ничего лишнего! рекмендую сначала тоже создать минимум для примера, чтобы понять как работает, а потом переделывать существующее приложение под веб.

    1) создай на сервере (лучше) базу для тестов, дай доступ Anonymous - Author (чтобы без аутентификации работать)
    2) создай форму для основного (родительского дока), тип Document, имя/alias "WebMain"
    - помести на ней поле "thisUnid" тип text - computed when composed, формула @Text(@DocumentUniqueID)
    - помести кнопку Save: @Command([FileSave])
    - помести кнопку Compose Resp: @Command([Compose]; "WebResp")
    3) создай форму для ответного (дочернего дока), тип Response или Response to Response, имя/alias "WebResp"
    - помести на ней поле "thisUnid" тип text - computed when composed, формула @Text(@DocumentUniqueID)
    - помести кнопку Save: @Command([FileSave])

    теперь попробуй создать в веб новый родительский документ, зайдя по урлу
    http://servername/dbname.nsf/WebMain?OpenForm
    откроется форма с полем и двумя кнопками. в виду описанной выше особенности в поле будет некоторое значение-унид, но после нажатия на кнопку сохранения он изменится. именно после сохранения дока (в веб) значение будет реальным унидом, до сохранения - фигня.
    (если нажать на кнопку Compose Resp до сохранения, то будет ошибка 500 - сервер попытается создать дочерний док к несуществующему, где-то там у него возникнет исключение и браузер покажет сообщение об 500-й ошибке)
    теперь, после сохранения, нажми на кнопку Compose Resp. откроется (в текущем окне) новая форма - дочернего дока. как и прежде поле с унидом будет содержать фигню.
    но нам интересно, что URL открытого дока будет иметь не просто вид http://servername/dbname.nsf/WebResp?OpenForm,
    а там появится еще параметр http://servername/dbname.nsf/WebResp?OpenForm&ParentUNID=хххххххххххххххххххххххххххххххх
    где хххххххххххххххххххххххххххххххх будет иметь значение такое же, как в предыдущем документе в поле (т.е. реальный унид родительского документа!).
    единственное, что получить его в дочернем доке с помощью привычной формулы @InheritedDocumentUniqueID нельзя.
    нужно распарсить URL такой формулой @UrlQueryString("ParentUNID")

    теперь добавь на форму WebResp еще поле "ParentUNID" text, computed when composed с формулой @UrlQueryString("ParentUNID")
    и попробуй создать снова новый родительский док, сохранить его, потом нажать Create Resp. в новом родительском доке будет второе поле, с тем же значением, что и в URL-параметре ParentUNID.

    все. у тебя есть простой механизм создания основного и ответного к нему документа.

    зы: к сожалению, такой простой способ не всегда самый удобный. но для понимания принципов лучше начинать с простого.
    зы2: ты javascript знаешь? веб-страницы умеешь делать? в домино-приложениях полный новичек или под нотес умеешь писать?..
     
  8. killa007

    killa007 Гость

    спасибо, Akupaka, за простой и понятный пример:) в нем-то я разобрался. JS, Perl знаю немного, web-странички писать умею, и скрипты к ним, а вот в Lotus - новичек, только в рамках учебного курса в институте владею.
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну, раз разобрался, то спрашивай дальше :)
     
  10. killa007

    killa007 Гость

    Возник новый вопрос - чтобы сделать респонз из вьюшки, необходимо ParentUnid куда-нить записать, а затем вставить оттуда в адресную строку(этго если я все правильно понимаю). Так вот, есть ли какие @commands, позволяющие помещать и извлекать текст из, скажем, поля?
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    вообще, я из стандартных средств не помню возможности создать в вебе ответный по выделенному в виде...
    чтобы из вида в вебе создать дочерний придется поиграться с JS и, возможно, вид определенным образом подстроить...
    посмотри, что твой вид генерит в html, можешь ли ты оттуда вытащить унид дока, который выделяешь для создания дочернего?

    если включить возможность выделения доков в вебе (свойства вида, 5-я закладка, Web Access / Allow selection of documents), то каждый "док" будет содержать чекбокс (<INPUT TYPE=checkbox NAME="$$SelectDoc" VALUE="EE433F6647FBD158C22575C1002B19F8">) из которого можно достать унид. т.е. можно написать скрипт, который будет определять выделенный док и открывать урл
    т.е. тут чистый JS-скрипт.
    вот пример, возможно не самый лучший, но рабочий :)
    в виде две кнопки:
    Create Main: Client/Formula:
    Код (Text):
    @Command([Compose]; "WebMain")
    Create Resp: Web/java script:
    Код (Text):
    var selDoc = document.getElementsByName("$$SelectDoc");
    var parentUNID = "";
    var respURL = "";
    if (selDoc.length > 0) {
    for (var i = 0; i < selDoc.length; i++) {
    if (selDoc[i].checked) {
    parentUNID = selDoc[i].value;
    break;
    }
    };
    };
    respURL = "WebResp?OpenForm&ParentUNID=" + parentUNID;
    //alert(respURL);
    window.open(respURL);
    если поставить галочку в виде и нажать на Create Resp, то откроется новое окно с новым дочерним доком к первому выделенному в виде...
     
  12. killa007

    killa007 Гость

    Офигеть....Пасиба:)
     
Загрузка...

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