Rich Text - значение по умолчанию

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

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

    serg1y Гость

    Подскажите, пожалуйста. Есть поле rich text, есть форма - документ MS Word. Сейчас пользователь заполняет форму в MS Word, создает новый документ в Lotus и вставляет в поле rich text файл с заполненной формой . А теперь нужно чтобы при создании нового документа в Lotus эта форма (не файл) уже была в поле rich text, а пользователи прямо в ней заполняли данные. Я могу выделить и скопировать в MS Word эту форму, потом открыть документ в Lotus и вставить форму в поле rich text - все ОК, форматирование останется. А как мне сделать, чтобы при открытии документа, эта форма уже была в поле rich text по умолчанию? Если я его вставляю в Default Value поля - форматирование нарушается, а иногда вообще выдает ошибку. Может можно при открытии документа каждый раз копировать эту форму откуда-то (не понятно откуда) в rich text, или как-то еще?

    Могу ли я скопировать спец форму Lotus в поле rich text другой формы этой-же базы, по аналогии как если бы включить в свойствах формы "Inherit entire selected document into rich text field" ?

    Если я сохраню форматированный текст в поле rich text спец документа. Могу ли я скопировать это поле в поле rich text нового докумета, как мне обратиться к этому спец документу?
     
  2. aks

    aks Гость

    Возможно я чего-то не понял, но почему бы не создать форму документа Lotus Notes с нужными полями, и уже в этой форие отформатировать все как надо?! Это само-собой напрашивается - ведь форма это некий набор текста (и/или не только) где часть текста остается неизменной, а часть "вписывается". Вот этот вписываемый текст и будет "вписываться" в поля документа. Ну, если надо это вывести в Word, то этот вопрос неоднократно обсуждался на форуме.
     
  3. Duedev

    Duedev Гость

    Предлагаю создать отдельную форму "Шаблоны документов".... и соответственно для нее отдельное представление, где каждый пользователь может создавать эти шаблоны
    В состав формы "Шаблоны документов" включить RTF поле куда и забивать, собственно, шаблон

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

    Ну или рядом с RTF полем в документе повесить кнопочку "По шаблону" с условием скрытия
    "@If(@IsNewDoc;@False;@True)" .... по этой кнопочке, опять же , выдавать список шаблонов и подставлять необходимое значение
     
  4. serg1y

    serg1y Гость

    AKS, Неизменного текста нет, есть шаболон, но пользователь должен иметь возможность его править как он хочет, хоть весь затереть и создать все в свободной форме. Так и было с документом Word, но так не совсем удобно.
    Duedev, Да, наверное, можно копировать RTF поле документа-шаблона в RTF поле нового документа. Вопрос, - как к документу-шаблону обратиться? по id? А если я сделаю копию базы и id базы поменяется, не перестанет ли работать вся база? Можно ли обратиться к документу, например, через какое-то ключевое поле, или по аналогии с @DbColumn,@DbLookup - из какого нибудь скрытого представления (views)?
     
  5. K-Fire

    K-Fire Гость

    serg1y, по поводу ID, эта задачу легко решить если использовать не UNID документа как ключ, а
    класть на форму Computed when composed поле, с формулой @Unique. Называть его например ID. И дальше везде где нужно, использовать в качестве ссылки на документ это поле.

    А по поводу шаблона: сделайте отдельную формочку, там поле "Название" добавьте, вот по нему и ищите. Дешево и сердито. Доступ на редактирование шаблонов оставьте администратору, обычный юзер пусть содержание ричтекст поле редактирует уже в главном документе. Если же пользователям нужно иметь каждому свой собственный шаблон, то тут тоже никаких проблем, дело техники уже :)
     
  6. serg1y

    serg1y Гость

    Спасибо за помощь!
    K-Fire, немного не понял, что за Computed when composed поле, с формулой @Unique? Поле "Название" - это альтернатива тому самому полю Computed when composed с формулой @Unique, или это разные способы обратиться к документу? И, собственно, с помощью каких команд можно искать (обратиться) к документу по полю Computed when composed с формулой @Unique либо по полю "Название", например, если поле "Название" = "Шаблон1"?
     
  7. allex

    allex Гость

    Если это необходимо по заданию то показать открытый Word документ впод шапкой формы можно на LS

    Код (Text):
    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim obj As Variant 
    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument
    obj = doc.EmbeddedObjects
      obj(0).FitToWindow = True     
    Call doc.Save(True, True, True)
    End Sub
     
  8. K-Fire

    K-Fire Гость

    Про CWC поле ID с @Unique я писал как способ избавится от поиска по UNIDам. Это можно использовать во всех документах, и искать такие документы просто по вьюшке со 1 столбцом с полем ID.

    Поле "Название" - в каком-то смысле альтернатива, просто узость задачи позволяет использовать такой способ. Т.е. для документа шаблона вы можете гарантировать то что имя будет всегда одним и тем же, причем уже известным вам во время разработки.
    А когда вам надо получить ключ документа в рантайме (и не UNID и не NoteID) - то лучшего способа чем @Unique не найти.
     
  9. serg1y

    serg1y Гость

    Я себе представляю алгоритм так:
    -Есть форма Doc - документ и форма Dot - шаблон. В форме Dot два поля: 1. DotName, тип - text, 2. DotBody, тип - rich text. В поле Doc есть rich text поле Body куда нужно вставлять шаблон из поля DotBody.
    -Например, я создаю документ по форме Dot, в DotName заношу название - "Шаблон1", в DotBody - сам шаблон.
    -Есть view - "Шаблоны", где отображается, пока, один, только что созданный документ под названием "Шаблон1". Этот view видят пользователи с ролью [Admin].
    -На форме Doc, есть , например, кнопка, при нажатии на которую DotBody документа "Шаблон1" заносится в поле Body открытого (текущего) документа (формы Doc).

    В Lotus help есть код, который можно повесить на кнопку

    Код (Text):
    Dim docA As NotesDocument
    Dim docB As NotesDocument
    Dim rtitemA As Variant
    Dim rtitemB As Variant
    '...set values of docA and docB...
    Set rtitemA = docA.GetFirstItem( "Body" )
    Set rtitemB = docB.GetFirstItem( "DotBody" )
    If ( rtitemA.Type = RICHTEXT And _
    rtitemB.Type = RICHTEXT ) Then
    Call rtitemA.AppendRTItem( rtitemB )
    Call docA.Save( False, True )
    End If
    DocA можно, наверное, описать так

    Код (Text):
    Dim w As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim docA As NotesDocument
    Set uidoc = w.CurrentDocument
    Set docA = uidoc.Document
    А как описать DocB - т.е как обратиться к документу с шаблоном?
     
  10. K-Fire

    K-Fire Гость

    Если во вью "Шаблоны" 1й столбец (сортированный/некатегоризованный) по полю DotName, то найти DocB можно так:

    Код (Text):
    Set view = db.GetView("Шаблоны")
    Set docB = view.GetDocumentByKey("Шаблон1")
    Только это вью, плюс сам документ шаблона должны видеть (точнее говоря - иметь доступ) не только админы, но все пользователи. Иначе view будет тупо Nothing, если код кнопки под обычным пользователем будет выполняться.

    Кстати, вопрос: а зачем вам кнопка? Сразу при создании документа Doc разве не лучше ричтекст скопировать из шаблона?
     
  11. serg1y

    serg1y Гость

    Спасибо!
    Насчет кнопки - это так, пример.Окончательный вариант должен выглядеть ледующим образом.
    Есть несколько шаблонов, количество может меняться, сами шаблоны - тоже.
    Есть поле - dialog list, откуда пользователь выбирает один или сразу несколько шаблонов. Есть либо одно rich text поле куда подставляются выбранные шаблоны, один за другим, либо на каждый шаблон - отдельное поле, но не знаю как заранее угадать на форме количество этих полей, или их можно создавать в процессе?
    Для меня важно, чтобы не требовалось вмешиваться в дизайн при изменении-добавлении шаблонов, в общем, - универсальная база документов.
     
  12. serg1y

    serg1y Гость

    Спасибо всем за помощь, особенно K-Fire!
    Получилось и с помощью GetDocumentByKey, но мне больше понравилось - PickListCollection
    Приведу код который я повесил на кнопку, может, кому-то пригодится
    Код (Text):
        Sub Click(Source As Button)
    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim ws As New NotesUIWorkspace
    Dim coll As NotesDocumentCollection
    Dim uidoc As NotesUIDocument
    Dim docA As NotesDocument
    Dim docB As NotesDocument
    Dim rtitemA As NotesRichTextItem
    Dim rtitemB As NotesRichTextItem
    Dim n As Integer

    Set session = New NotesSession
    Set db = session.CurrentDatabase   
    Set view = db.GetView("Шаблоны")
    Set uidoc = ws.CurrentDocument
    Set docA = uidoc.Document
    Set rtitemA = New NotesRichTextItem(docA, "Body" )

    'выбор шаблонов из представления "Шаблоны"
    Set coll=ws.PickListCollection(3, True,db.Server, db.FilePath,"Шаблоны","Выберите шаблоны", "Список шаблонов")
    n=coll.count
    If n = 0 Then Exit Sub
    Set DocB=coll.GetFirstDocument

    'подстановка выбранных шаблонов в rich text поле один за другим по циклу
    While Not DocB Is Nothing
    Set rtitemB = docB.GetFirstItem( "DotBody" )
    Call rtitemA.AppendRTItem( rtitemB )
    Call rtitemA.AddNewLine(1)
    Set docB=coll.GetNextDocument(docB)
    Wend

    'переоткрытие документа, чтобы изменения отображались сразу
    Call rtitemA.Update
    Call ws.EditDocument(True,docA)
    docA.SaveOptions = "0"
    Call uidoc.Close
    Set uidoc = ws.CurrentDocument
    Set docA = uidoc.Document
    docA.SaveOptions = "1" 
    End Sub
     
  13. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
Загрузка...
Похожие Темы - Rich Text значение
  1. Cheburan
    Ответов:
    9
    Просмотров:
    620
  2. seoman2
    Ответов:
    35
    Просмотров:
    1.172
  3. evgenyum
    Ответов:
    7
    Просмотров:
    550
  4. Amfion
    Ответов:
    12
    Просмотров:
    994
  5. garrick
    Ответов:
    3
    Просмотров:
    617
Статус темы:
Закрыта.

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