Модификация документа через Action

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

  1. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Необходимо добавлять комментарии к доку без перевода его в режим редактирования пользователем, через Action с панели.

    Код (Text):
    Sub Click(Source As Button)
    On Error Goto handler
    Dim w As NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim subdoc As NotesDocument
    Dim docChanged As Boolean
    Dim db2 As NotesDatabase
    Dim ses As New NotesSession
    Set db2= ses.CurrentDatabase


    Set w = New NotesUIWorkspace
    Set uidoc = w.CurrentDocument
    uidoc.AutoReload = False
    Set doc = uidoc.document
    Set subdoc = New NotesDocument(db2)
    'Call w.EditDocument(True)
    docChanged = w.DialogBox("(comments)", True, True, False, False, False, False, "Введите комментарии", subdoc,False,False)
    If docChanged Then
    If subdoc Is Nothing Then
    ' ничего
    Msgbox "Empty"
    Else

    Call doc.ReplaceItemValue("sub_com",subdoc.GetItemValue("sub_com2")(0))
    Call doc.Save (True, True)
    'Call uidoc.save
    'Call w.EditDocument(False)
    Call uidoc.refresh
    'Call uidoc.Reload
    End If

    End If
    Exit Sub
    handler:
    Messagebox "Ошибка :" & Error & " в строке " & Cstr(Erl()),16, "Ошибка"
    Exit Sub
    End Sub
    после внесения изменений хотелось бы сделать рефреш открытого документа, но появляется ошибка - говорящая о том что нельзя использовать эту команду..
    вариант типа:

    Call w.EditDocument(True)
    .....................................
    Call uidoc.save
    Call w.EditDocument(False)

    как-то не очень кажется "красивым" , что можно придумать?
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    придется закрыть уидок и открыть заново
     
  3. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    а как это сделать из кнопки?


    спасибо нашел...
     
  4. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    set doc = uidoc.Document

    uidoc.Close

    call notesUIWorkspace.EditDocument ( true, doc )

    Если не хочешь чтобы спрашивало про сохранение нужно еще сохранить и прописать SaveOptions
     
  5. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    про сохранение не спросит, т.к. док был в режиме чтения
     
  6. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Я на всякий случай, дабы в будущем избежать стандартного вопроса :)
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а я бы советовал не делать этого по-умолчанию, т.к. контролируемое сохранение не всегда предусмотришь, а пользователи случайно могут закрыть документ по Esc и начать волать, что во всем виноваты программисты ))
     
  8. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Обрати внимание на начало предложения: "Если не хочешь чтобы спрашивало...", слово если дает право выбора делать или не делать автору разработки :)
     
  9. Akupaka

    Akupaka А че я?.. О.о

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

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    а его бы и не было, ибо этот момент был уже пройден без вопросов :)

    по такому же принципу возможно организовать добавление атачментов к документу? Как сделать это с формы вопросов не вызывает, а вот из Action, пока не представляю полностью..
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    приатачить файл в бэкэнде можно, но будет криво отображаться (серая иконка файла, а не иконка файла в системе)
     
  12. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    про кривое отображение я помню, а какие есть еще альтернативы? делить на управляемые секции форму и давать модифицировать только свои области?
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    есть конструктивные альтернативы, например, вложения хранить в отдельных документах, которые вообще не открываются на УИ, при открытии такого дока, открывается вложение. отображать эти доки во внедренном виде основного документа. там свой гемор, но в общем удобно, а если вложения занимают много места, то можно их совсем в отдельную БД вынести...
     
  14. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Угу, этот способ особо хорош в базах где много документов и тяжелые формы.
     
  15. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    а что посоветуете насчет архитектуры?
    коротко:
    база некоторых заявок - оператор однократно создает ее и заполняет - здесь все понятно...
    далее заявку последовательно обрабатывают несколько сотрудников, при этом они имеют право вносить только комментарии и прикреплять файлы - с внесением комментариев и логированием все ясно, присоединять файлы можно и через спец. поле с последующим перебросов в поле хранения, но просят чтобы прикрепленные файлы можно было ассоциировать с владельцами,
    т.к. оптимальная структура типа: дата - автор - комментарий - файлы(если есть).

    по части с файлами как реализовать? закинуть всю эту структуру в RT поле как строку? и это поле хранить непосредственно в основном доке.
    второй вариант: коменты делать респонсами и через ембедед вью в основной док?
     
  16. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Делать респонсами. После завершения обработки, можно слить всё в один документ.
     
  17. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    я бы предложил вариант хранения вложений в отдельных доках, причем не используя стандартной связи (дочерних), а связывать их по своему ключу, например по униду документа, к которому создается вложение...
    это если не нужно городить иерархии ответов на вложения... если же нужно иметь "ответить" на вложение, то тогда можно сделать дочерние связи только между вложениями, но к основному доку не связывать...
    правда, при репликации это будет немного сложнее формулой описывать (если используется избирательная репликация), но при правильно организованных полях доступа и ключах репликации, сложностей не должно возникнуть...
    почему лучше не использовать связи - могут порушиться (по непонятных мне причинах), и из-за этого может не работать репликация всей базы...
    сталкивался на практике, найти причину не смог, повезло, что формулу репликации удалось переделать без правки документов...
     
  18. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    Спасибо за рекомендации!

    Как тогда если не респонсы лучше отобразить из в основном документе? еще момент прямые ссылки на вложения как я понимаю не удастся сделать?
     
  19. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Отобразить можно через эмембед вью, откатегоризовав его по ключевому ID.

    А в чем у тебя проблема с ссылками?
     
  20. phantom76

    phantom76 Lotus team
    Lotus team

    Регистрация:
    25 фев 2005
    Сообщения:
    363
    Симпатии:
    9
    да нет у меня нет проблем :)
    заказчик может изъявить желание иметь возможность открыть прикрепленные доки без лишних движений, так как если бы они были непосредственно вложены в основной документ... -но я думаю смогу объяснить ему что не все возможно..
     
Загрузка...

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