Computed-поля

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

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Доброго времени суток!
    Нужна помошь.
    Есть не большая проблема.... нужно копировать содержимое одного поля в другое между двумя разными документами в бекэнде. Оба поля Computed
    Но все бы ничего если бы исходное поле не содержало таблицу. Вот тут и возникает вопрос - как скопировать все и таблицу в том числе?
    Если исходное поле сделать Editadle - проблем не возникает, но делать поле Editadle нельзя.
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А в чём проблема поконкретнее?
    Там что Computed RichText'ы?
    Если это так, то их в печЪ, и заменяем на Editable RichText + Controlled Access section.
    Computed RichText - зло.
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    notesItem.CopyItemToDocument всегда поможет. :angry:
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Omh
    Прошу прощения.. не написал что-то.... Да, поля RichText
    А почему Computed - чтоб не дать его редактировать

    Medevic
    в том то и дело, что не всегда :angry:
    Да... этим методом копируется, нотолько текст... самой рамки таблицы нет
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Замени на Editable RichText + Controlled Access Section
    Не надо использовать Computed RichText
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    :angry: вряд ли получится.
    Суть в чем, Человеку даны права для просмотра документа, но в документе есть кнопка "печать". При нажатии на нее формируется новый временный документ для печати. И при формировании из исходного документа должно копироваться RichText поле, но не просто с содержимым, а еще и с табличкой. А если у человека доступ только на чтнеие - то таким методом notesItem.CopyItemToDocument копируются тлько текстовые данные! Потому как курсор не может попасть в поле, чтоб полностью его копировать

    Ну так вот, если использовать Controlled Access Section - это равносильно указанию параметров доступа в самом поле.. и по сути получатся те же яйца, только в профиль.
     
  7. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Непонятна связь прав доступа, метода CopyItemToDocument и курсора. Скорее всего нет никакой связи. :angry:
    Может действительно попробовать сменить на Editable. Я с computed почти не работал, поэтому не знаю. Но насчет секций полностью поддерживаю.
    Также какой тип поля? Везде RichText, а не просто Text?
    Попробуй ещё метод notesRichTextItem.AppendRTItem.
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    NickProstoNick
    Как копируешь-то?
    Через uidoc.Copy чтоль? :angry:
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Omh
    копирую так notesItem.CopyItemToDocument

    Чтоб было понятней (кому будет не лень).... в computed RichText-поле програмон постройте таблицу, заполните ее чем-нить (в хелпе есть пример). а потом попробуйте скопировать это поле в другое RichText. В результате будет просто текст! т.е. никаких границ таблицы, ячеек...

    почему computed - чтоб пользователь видел содержимое, но не мог редактировать.
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    NickProstoNick
    Убери нафик этот computed richtext.
    Сделай нормальный ричтескт и помести его в controlled access section.
    Дался тебе этот ComputedRichtext! Глюкавая штука, зачем она тебе?

    Попробуй хоть.
    Я на computed richtext такие глюканы ловил :angry:

    После построения всякие update делаешь?
    Где-то что-то пропустил...
    И убери кампутед :eek:
     
  11. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    тут видимо потому как NotesItem <> NotesRichTextItem

    Access Control Sections
     
  12. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вот только что сделал. Всё прекрасно работает. И с Computed полем, и с Editable, и с секцией.

    Morpheus
    NotesRichTextItem
    Inherits from: NotesItem

    И вообще код в студию!

    И формулу для Computed RichText поля тоже.
     
  13. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Сейчас у меня на форме 2 поля NotesRichTextItem
    1. Body (Computed)
    2. Copy_Body (Computed)

    Первая кнопка
    Вот код, который заполняет поле Body. строит табличку. Притензий к коду нет. все работает
    Код (Text):
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase
    REM Create document with Body rich text item
    Dim doc As New NotesDocument(db)
    Call doc.ReplaceItemValue("Form", "Main topic")
    Call doc.ReplaceItemValue("Subject", "Table 4 x 3")
    Dim body As New NotesRichTextItem(doc, "Body")
    REM Create table in Body item
    rowCount% = 4
    columnCount% = 3
    Call body.AppendTable(rowCount%, columnCount%)
    REM Populate table
    Dim rtnav As NotesRichTextNavigator
    Set rtnav = body.CreateNavigator
    Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)
    For iRow% = 1 To 4 Step 1
    For iColumn% = 1 To 3 Step 1
    Call body.BeginInsert(rtnav)
    Call body.AppendText("Row " & iRow% & ", _
    Column " & iColumn%)
    Call body.EndInsert
    Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
    Next
    Next
    REM Save document and refresh view
    Call doc.Save(True, False)
    Dim ws As New NotesUIWorkspace
    Call ws.ViewRefresh
    End Sub

    Далее.... Вторая кнопка
    в ней вот такой метод
    Код (Text):
    Set NotesItem = Doc.GetFirstItem( "Body" ) 
    notesItem.CopyItemToDocument(Doc, "Copy_Body" )
    вот тут какраз возникает проблема (есть текст из таблицы, но нет самой таблицы)
     
  14. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
  15. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Т.е. работаешь с одним документом.
    А вторую кнопку полностью можно?
    Откуда берется Doc, что дальше происходит?
     
  16. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    вторая кнопка

    Код (Text):
        Dim ws As New NotesUIWorkspace
    Dim Doc As NotesDocument,
    Dim NotesItem As NotesItem

    Set Doc = ws.CurrentDocument.Document
    Set NotesItem = Doc.GetFirstItem( "Body" ) 
    Call NotesItem.CopyItemToDocument(Doc, "Copy_Body" )
    Call Doc.Save(True, False, True)
    Все... разобрался.... секции помогли (просто я с ними не дружил... придется начать)
    Спасибо огромное
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вывод: computed richtext - гогно
    Да и тебе тепреь два ричтекста, как я понимаю не особо-то и нужно...
     
  18. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    нее... 2 ричтекста это просто для отработки алгоритма... для тренировки... на самом деле все немного сложнее, но главное - понял что к чему :)
     
  19. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    А есть еще такой замечательный метод doc.RenderToRTItem ...
     
  20. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ну картинка - это не очень серьезно....
     
Загрузка...

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