Глюк в Rich-text'овом поле

Тема в разделе "Lotus - Программирование", создана пользователем Azrael, 18 сен 2007.

  1. Azrael

    Azrael Гость

    Ситуация: есть документ с установками, в нем есть rich-text'овое поле с шапкой таблицы. Нужно таблицу перенести в новый документ и добавить строки, знакомая ситуация, не правда ли? В одной базе код работает как часы. А в другой - упорно не хочет находить таблицу :) :

    Код (Text):
    'itemP - richtext из документа-справочника, смотрел в дебаггере, все путем
    Call itemP.CopyItemToDocument(doc, "tblLines")
    'item - в новом доке
    Set item = doc.GetFirstItem("tblLines")
    'Set item = itemP.CopyItemToDocument(doc, "tblLines") - тоже не работает если что

    Call item.Update() 'на всяк случай, без него тоже не работает
    Set rtNav = item.CreateNavigator() 'навигатор (объявлен выше)
    If Not(rtNav.FindFirstElement(RTELEM_TYPE_TABLE)) Then 'а вот здесь мы и ругаемся
    'при этом ругается, даже если сделать Set rtNav = itemP...
    'RTELEM_TYPE_TABLECELL - тоже не находит
    Msgbox "Не найдена таблица строковой части бланка-заказа!",48
    Exit Sub
    End If
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Azrael
    В форме документа -справочника или документа-цели необходимый тебе item не лежит в другой таблице?
    Если потом doc пересохранить через ui, не начинает находить?
     
  3. Ronchik

    Ronchik Гость

    <!--QuoteBegin-Azrael+18:09:2007, 08:37 -->
    <span class="vbquote">(Azrael @ 18:09:2007, 08:37 )</span><!--QuoteEBegin-->Set item = doc.GetFirstItem("tblLines")
    [snapback]78551" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    item это NotesRichTextItem ????
     
  4. Гость

    А если скопировать не айтем, а само поле? Или это невозможно по каким то причинам/условиям? Почему нельзя написать set doc2.Field=doc1.Field ?
     
  5. Azrael

    Azrael Гость

    Для: Omh
    Спасибо агромадныя! Но все-равно словил багофичу: в новом документе ричтекст лежал вне таблицы, в справочнике - в таблице, даже если новый док обновляю через ui или ComputeWithForm, то все равно таблица не находилась. Перекинул ричтекст в справочнике из таблицы, заработало.

    Для: Omh
    Лови +1 :)
     
  6. Yakov

    Yakov Гость

    Для: Azrael
    У меня была схожая ситуация. Я делал примерно так:
    Код (Text):
    Set item = doc.CreateRichTextItem("tblLines")
    Call item.AppendRTItem(itemP)
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Rich-text в таблице - проявление зла :)
    Lotus s вложенными таблицами не то что плохо работает, он с ними вообще не работает.

    По идее, в твоём случае, пересохранение нового дока через ui (при условии, что в форме нового дока richt-text лежит вне таблицы) должно было помочь.
     
  8. Azrael

    Azrael Гость

    Еще одна проблемка возникла, опять же, в другой базе - код работает как часы, таблицу я добавил, строки тоже дорисовал, нужно прикрепить еще одну таблицу (с итоговой строкой):

    Код (Text):
        'tbl - объект NotesRichTextTable - через него уже дорисовал строки
    Call RTNav.SetPositionAtEnd(tbl)
    If profileD.HasItem("tblStuffBottom") Then
    Set itemP = profileD.GetFirstItem("tblStuffBottom")
    If Not(itemP Is Nothing) Then
    Set RTNavBottom = itemP.CreateNavigator
    If RTNavBottom.FindFirstElement(RTELEM_TYPE_TABLE) Then
    Call item.BeginInsert(RTNav)
    Call item.AppendRTItem(itemP)
    Call item.EndInsert
    End If
    End If
    End If
    В итоге получаю ошибку Method is not available когда пытаюсь добавить RT. От кода другой базы, где все работает отличается лишь тем, что к строкам в таблице применяю стили.
     
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Попробуй без строк
    Call item.BeginInsert(RTNav)
    Call item.EndInsert

    Просто зааппенди item.
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Azrael+18:09:2007, 12:32 -->
    <span class="vbquote">(Azrael @ 18:09:2007, 12:32 )</span><!--QuoteEBegin-->В итоге получаю ошибку Method is not available когда пытаюсь добавить RT. От кода другой базы, где все работает отличается лишь тем, что к строкам в таблице применяю стили.
    [snapback]78590" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    ЕМНИП, в таблицу не получится вставить. Багофича. ;)
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну то, что таблицу в таблицу не вставищь - эт точно.
    Но, как я понял, тут задача зааппендидь ещё 1 item, после того, как поработал с текущим.
     
  12. Azrael

    Azrael Гость

    <!--QuoteBegin-Omh+18:09:2007, 13:40 -->
    <span class="vbquote">(Omh @ 18:09:2007, 13:40 )</span><!--QuoteEBegin-->Попробуй без строк
    Call item.BeginInsert(RTNav)
    Call item.EndInsert

    Просто зааппенди item.
    [snapback]78593" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    ругаться-не ругается, но и добавлять - не добавляет

    Для: Medevic так ведь в другой базе работает...
    что есть ЕМНИП? ;)

    Убрал стили, все равно не работает, попробовал Call RTNav.SetPositionAtEnd(RTNav), без толку...
     
  13. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ЕМНИП — аббревиатура от "если мне не изменяет память"

    Должен добавлять.
    Ты потом апдейтишь, всё как в лучших домах Парижа?
     
  14. Azrael

    Azrael Гость

    <!--QuoteBegin-Omh+18:09:2007, 13:46 -->
    <span class="vbquote">(Omh @ 18:09:2007, 13:46 )</span><!--QuoteEBegin-->Но, как я понял, тут задача зааппендидь ещё 1 item, после того, как поработал с текущим.
    [snapback]78598" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Есть шапка таблицы, её берем из справочника, 1-ый итем, добавляем строки (выполнено), складываем в документ, в справочнике есть еще 1 итем - итоговая таблица, нужно взять её и еще раз добавить в итем документа, после таблицы строк.
    Есть рабочая база, где код (выше) выдает нужный результат, здесь, почему-то ловлю ошибку.

    <!--QuoteBegin-Omh+18:09:2007, 13:53 -->
    <span class="vbquote">(Omh @ 18:09:2007, 13:53 )</span><!--QuoteEBegin-->Ты потом апдейтишь, всё как в лучших домах Парижа?
    [snapback]78602" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    таак, заработало, теперь вопросец (еще один, замучил уже, наверное), как дырку между таблицами убрать? в изначальном варианте кода - таблица пристыковывалась вплотную, а здесь - через параграф ;)
     
  15. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Попробуй после добавления строк перевзять rtitem.
    Текущий объект Delete'нуть
    И взять заново.

    Вообщем, начинай пляски с бубном.
    Работать должно...



    Слушай, нафига тебе нужна ещё одна таблица?
    Просто нагенерь ещё строку и заполни, если нужно итого.
    Не надо копировать ещё таблицу.
    Это изврат.

    Убрать отступ тока через hide formulu.
     
  16. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Omh+18:09:2007, 12:46 -->
    <span class="vbquote">(Omh @ 18:09:2007, 12:46 )</span><!--QuoteEBegin-->Ну то, что таблицу в таблицу не вставищь - эт точно.
    Но, как я понял, тут задача зааппендидь ещё 1 item, после того, как поработал с текущим.
    [snapback]78598" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Понятно. Кстати, item в таблицу (метод AppendRTItem) тоже не вставить.
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Это не глюк, кстати.
    Тему надо было назвать "Милые особенности RTI в Lotus" ;)
     
Загрузка...

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