• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема с rtf таблицами

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

AvasKvas

Доброго времени суток, коллеги!))

Может кто встречался с такой проблемой:

Есть документ. В нем я формирую программно RTF таблицу. Открываю документ, таблица отображается корректно. Но вот как только я попытаюсь его распечатать по другой форме, то таблица превращается в обычный текст без форматирования.

Технология печати такая: текущий документ открывается в диалогбоксе по другой "печатной" форме в которой есть кнопка "печать".

Соответственно в печатной форме находится trf поле вычисляемое само себя. В ней стоит галочка хранить данные в mime. Документ я формирую программно, таблицу тоже, и сразу его подписываю.

Что я пробовал:
1) Просто создание таблицы в rtf - не работает.
2) Снятие, установки галочки у поля хранения данных в mime.
3) Создание html и конвертирование в mime. Тут вроде ка получилось, но документ не подписывается: выдает ошибку на строке "call doc.sign" - "Не найден объект". Из-за этого вариант не приемлем.

Можно конечно создать html и выводить его как "код html" в вычисляемом тексте, но может возникнуть ситуация переполнения данных (100 % возникнет.)

Выяснили, что форматирование в поле есть до открытия документа в диалогбоксе. После открытия форматирования уже нет.

Кто-нибудь встречался с таким? На форуме что то не нашел.

P.S. Спасибо за советы!
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
Ачоб не сделать, как печать в стандартном журнале.
Там с подменой формы и форматированием проблем нет.
Или надо обязательно, перед печатью, показать док в диалоге?
 
A

AvasKvas

К сожалению нужно обязательно показывать док в диалоге. Функция используется везде и давно в системе, а тут встретил такую проблему.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
в печатной форме находится trf поле вычисляемое само себя.
Как я понимаю, проблема именно в этом - при (фактическом) изменении RTF док-то надо переоткрыть (а диалог-то тот же самый док). Ничо пока в голову не идёт (
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
Хотя ...
Можно сработать строго собаками в UI - перед диалогом переводим фокус на RTF - SelectAll - Copy - открыли диалог - переводим фокус на RTF в диалоге - Past.
Должно получиться.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
что мешает использовать др. документ (новый)
[DOUBLEPOST=1435592833,1435592794][/DOUBLEPOST]и еще есть RenderToRTItem
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
и вот еще можно показывать не сохраненный док
Код:
	%REM
*--------------------------------------------
Function PrintTrace
Description: Comments for Function
	%END REM
	Private Function PrintTrace(msg As String) As NotesRichTextItem
		Dim routineName As String
		routineName="PrintTrace"
		On Error GoTo ErrH
		'your code here
		Call me.rtTrace.AppendText(TypeName(Me) &{.} &GetThreadInfo(LSI_THREAD_CALLPROC) &{->} &msg)
		Call me.rtTrace.Addnewline(1, True)
		Set PrintTrace=me.rtTrace
Quit:
		Exit Function
ErrH:
		Error Err, RaiseError
		Resume Quit
	End Function
 
	%REM
*--------------------------------------------
Function ShowTrace
Description: Comments for Function
	%END REM
	Function ShowTrace
		Dim routineName As String
		routineName="ShowTrace"
		On Error GoTo ErrH
		'your code here
		Call me.rtTrace.Update()
		Set ShowTrace=wks.Editdocument(False,me.docTrace)
Quit:
		Exit Function
ErrH:
		Error Err, RaiseError
		Resume Quit
	End Function
 
A

AvasKvas

Вышел из ситуации следующим образом: формирую trf опле с данными, которые в дальнейшем можно распарсить на массив двумерный. и в квериопене печатной формы рисую таблицу заново. Работает.

Метод конечно, как бы помягче выразиться, но время поджимает,а результат нужен.
Получилось при этом куча лишних полей и куча лишнего кода. Но пока только так.
 
Мы в соцсетях:

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