• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Azrael
  • Дата начала
A

Azrael

Ситуация: есть документ с установками, в нем есть rich-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
 
O

Omh

Для: Azrael
В форме документа -справочника или документа-цели необходимый тебе item не лежит в другой таблице?
Если потом doc пересохранить через ui, не начинает находить?
 
R

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 ????
 
G

Guest

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

Azrael

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

Для: Omh
Лови +1 :)
 
Y

Yakov

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

Omh

Rich-text в таблице - проявление зла :)
Lotus s вложенными таблицами не то что плохо работает, он с ними вообще не работает.

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

Azrael

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

Код:
 	'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. От кода другой базы, где все работает отличается лишь тем, что к строкам в таблице применяю стили.
 
O

Omh

Попробуй без строк
Call item.BeginInsert(RTNav)
Call item.EndInsert

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--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]
ЕМНИП, в таблицу не получится вставить. Багофича. ;)
 
O

Omh

Ну то, что таблицу в таблицу не вставищь - эт точно.
Но, как я понял, тут задача зааппендидь ещё 1 item, после того, как поработал с текущим.
 
A

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), без толку...
 
O

Omh

ЕМНИП — аббревиатура от "если мне не изменяет память"

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

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]


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

Omh

Попробуй после добавления строк перевзять rtitem.
Текущий объект Delete'нуть
И взять заново.

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



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

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--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) тоже не вставить.
 
O

Omh

Это не глюк, кстати.
Тему надо было назвать "Милые особенности RTI в Lotus" ;)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!