1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

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

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

  1. phantom76

    phantom76 Well-Known Member
    Lotus team

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

    Код:
    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 А че я?.. О.о

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

    phantom76 Well-Known Member
    Lotus team

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


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

    abbatik Well-Known Member
    Lotus team

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

    uidoc.Close

    call notesUIWorkspace.EditDocument ( true, doc )

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

    Akupaka А че я?.. О.о

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

    abbatik Well-Known Member
    Lotus team

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

    Akupaka А че я?.. О.о

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

    abbatik Well-Known Member
    Lotus team

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

    Akupaka А че я?.. О.о

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

    phantom76 Well-Known Member
    Lotus team

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

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

    Akupaka А че я?.. О.о

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

    phantom76 Well-Known Member
    Lotus team

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

    Akupaka А че я?.. О.о

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

    abbatik Well-Known Member
    Lotus team

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

    phantom76 Well-Known Member
    Lotus team

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

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

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

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

    Akupaka А че я?.. О.о

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

    phantom76 Well-Known Member
    Lotus team

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

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

    abbatik Well-Known Member
    Lotus team

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

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

    phantom76 Well-Known Member
    Lotus team

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

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