Как сделать, что бы открытый из формы док стал его респонсом

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

Статус темы:
Закрыта.
  1. Sandro

    Sandro Гость

    Понимаю, что наверняка идиотский вопрос, но с лотусом неделю всего общаюсь. Есть форма в форме встроенная вьюшка , кнопка 'Добавить'. При нажатии кнопки открывается форма (@Command([Compose];"";"f_plan")), как сделать что бы открытый из формы новый документ стал респонсом и как сделать что бы во вьюшке отображались только респонсы родительского документа ?

    Или как ещё можно реализовать такой функционал, что бы в документе была вьюшка со списком порождённых из этого документа документов ?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    1) В свойствах формы для ответного документа нужно установить тип Response или Response to Response (первая вкладка свойств).
    2) См. <a href="http://codeby.net/forum/threads/32816.html">Как лучше сделать в форме историю ответных документов?</a>
     
  3. Sandro

    Sandro Гость

    Пишет что не выделен документ на который надо сделать ответ ((( Я так понимаю, делая @Command([Compose];"";"f_plan"), что открывается новая форма не связанная с прежним документом
     
  4. Klido

    Klido Гость

    у меня именно в указанном тобой случае на кнопе висит @Command([ToolsRunMacro];"(АгентДобавить)")

    и код агента примерно такой (через диалог), не идеал, но как-то так :(

    Код (Text):
        Dim WS As New NotesUIWorkspace
    Dim ND As NotesDocument
    Dim Continue As Boolean
    Dim doc As notesdocument

    Set ND= ws.CurrentDocument.Document
    Set doc = New notesdocument(ws.currentdatabase.database)
    Call doc.MakeResponse(ND)
    Continue=ws.DialogBox("ФормаРеспонса",True,True,False,False,False,False,"Введите данные",doc,True,False,True)
    If Not Continue Then
    Call doc.RemovePermanently(True)
    Exit Sub       
    End If

    doc.form="ФормаРеспонса"  
    Call doc.ComputeWithForm(True,False)
    Call doc.Save(True,True)
    WS.CurrentDocument.Refresh
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Кнопку "Добавить" повесить на форму родительского документа или использовать ЛС-код типа приведённого выше.
    Родительский документ перед созданием респонсов следует сохранить
     
  6. Klido

    Klido Гость

    в случае кода можно и не сохранять сразу, данные с полей в респонсы можно с UIдока взять, но при закрытии родительского на сохранении лучше проверять и прописывать в респонсы по необходимости...
     
  7. Sandro

    Sandro Гость

    Спасиб , за ответ, но что то работает всё криво совсем (((
    Делаю так

    Код (Text):
    Sub Click(Source As Button)

    Dim WS As New NotesUIWorkspace
    Dim ND As NotesDocument
    Dim Continue As Boolean
    Dim doc As notesdocument

    Set ND= ws.CurrentDocument.Document
    Set doc = New notesdocument(ws.currentdatabase.database)
    Call doc.MakeResponse(ND)
    Continue=ws.DialogBox("f_plan")
    If Not Continue Then
    Call doc.RemovePermanently(True)
    Exit Sub
    End If

    doc.form="f_plan"
    Call doc.ComputeWithForm(True,False)
    Call doc.Save(True,True)
    WS.CurrentDocument.Refresh

    End Sub
    Респонс заполняем , жмём ОК , в результате Док во вьюху SELECT form="f_plan" не попадает, смотрю во вьюхе @All они там есть но поля пустые ((( Ничего не понимаю, как так может быть
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Из справки:
    flag = notesUIWorkspace.DialogBox( form$ , [autoHorzFit] , [autoVertFit] , [noCancel] , [noNewFields] , [noFieldUpdate] , [readOnly] , [title$] , [notesDocument] , [sizeToTable] , [noOkCancel] , [okCancelAtBottom] )

    notesDocument - NotesDocument. Optional. A document to be opened instead of the current document.

    Мне лень считать запятые, попробуй так (число запятых считай сам):
    Continue=ws.DialogBox("f_plan",,,,,,doc)
    Также следует проверить, нет ли на форме поля SaveOptions со значением "0"
     
  9. Klido

    Klido Гость

    вот эти явно следует проставить в false
     
  10. Sandro

    Sandro Гость

    Спасиб, за ответ , что то я ступил. Теперь правда новая трабла, нажимаю кнопочку ОК на DialogBox пишет "Команда документа не доступна", ну думаю ладно, делаю свою кнопку, делаю на клик @Command([FileSave]) - пишет База данных уже содержит документ с этим идентификатором (UNID), Док при этом создаётся но во вьюшке для этой формы я его не вижу, делаю @Command([FileSaveNewVersion]) -пишет "Команда документа не доступна"

    ЧЕЛОВЕКИ , может скинет кто базу с подобным функционалом? БУДУ НУ ООООЧЕНЬ благодарен
     
  11. Klido

    Klido Гость

    код из поста №4 работает 100%

    а что там на диалоговой форме? вычисляемые поля? что-то на событии сохранения/закрытия?
     
  12. Sandro

    Sandro Гость

    Да вот именно что я копипастом всё делаю, но пишет упорно "Команда не найдена" :lol:
    Да ничего такого нет всё вроде по умолчанию
     
  13. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Klido - замечание:
    Лучше получать базу по документу, тем более, что делаем его респонсом:
    Код (Text):
    Set doc = New notesdocument(ND.ParentDatabase)
    Sandro
    WS.CurrentDocument.Refresh работает в режиме редактирования, в режиме чтения документ берется по униду и переоткрывается.
    "Команда документа не доступна" иногда бывает при прогонке кода под отладчиком либо в случае, когда в данном контексте команда не работает и не применима. Обычно контекст применения команды описан в хелпе.
    "Команда не найдена" - это что-то новенькое :lol:
     
  14. Sandro

    Sandro Гость

    Ура заробило !!!! Точно нельзя объекты было обновлять. Всем спасиб
     
Загрузка...
Статус темы:
Закрыта.

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