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

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

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

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

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

Печать документа с внедренным представлением

dimat

Well-known member
31.07.2008
508
0
BIT
0
На форме помимо остальных элементов дизайна присутствует внедренное представление.
Проблема в том, что при печати этого документа, записи которые не поместелись в окно внедр. представления остаются не напечатанными.
Возможно ли как то печтать все записи из внедренного представления вместе с другими элементами дизайна? если да-то как?
 
N

nvyush

На форме помимо остальных элементов дизайна присутствует внедренное представление.
Проблема в том, что при печати этого документа, записи которые не поместелись в окно внедр. представления остаются не напечатанными.
Возможно ли как то печтать все записи из внедренного представления вместе с другими элементами дизайна? если да-то как?
Недавно ходил по этим граблям :). Другая проблема — представления печатаются совсем не так, как выглядят на экране. Если потенциально табличная часть может "уползти" на другую страницу(ы), лучше смотреть в сторону pdf, word и т.д. Если нет — можно нарисовать спецформу для печати. В кнопке печати исходной формы прописываем что-то вроде:
Код:
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Set doc = ws.CurrentDocument.Document
Call doc.ReplaceItemValue("Form", "MyPrintForm")
Call ws.EditDocument(False, doc, True, , , True)
В печатной форме SaveOptions = "0", в QueryOpen перебираем респонсы и запихиваем данные в строку, обрамляя тегами <tr><td></td></tr>. Затем значение строки присваиваем скрытому полю на форме (напр., "MyTable"), в месте, где должна быть таблица вставляем вычисляемый html текст вида <table> + MyTableHeader + MyTable + </table>, где MyTableHeader — скрытое поле со строкой заголовка.
P.S. Можно использовать объединение ячеек по строкам/столбцам, выделение шрифтами, в общем всю мощь html
Если важен порядок строк, перебирать нужно entry из навигатора, полученного от той же внедрённой вьюшки, а не doc.responses.
 
K

Klido

dimat
я имел ввиду настроить вьюху так, чтоб всё влезало в видимую часть..

nvy
лотус никогда не отличался возможностями печати :)
 
N

nvyush

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

dimat

Well-known member
31.07.2008
508
0
BIT
0
В печатной форме SaveOptions = "0", в QueryOpen перебираем респонсы и запихиваем данные в строку, обрамляя тегами <tr><td></td></tr>. Затем значение строки присваиваем скрытому полю на форме (напр., "MyTable"), в месте, где должна быть таблица вставляем вычисляемый html текст вида <table> + MyTableHeader + MyTable + </table>, где MyTableHeader — скрытое поле со строкой заголовка.
Сделал все так. в результате: отображается стена текста из значений полей доков в перемешку с тегами html, куда еще надо тыкнуть?:)
 
H

hosm

nvy только если в поле - помнить о лимитах в 64К или 32К.
галка есть в меню - Pass-thru html
 
N

nvyush

Сделал все так. в результате: отображается стена текста из значений полей доков в перемешку с тегами html, куда еще надо тыкнуть?:)
Выделить в форме вычисляемый текст и установить ему свойство Path-Thru HTML (в меню Text). Форме установить галку "Render pass through HTML in Notes" (первая закладка свойств). Да и данные из респонсов заворачивать типа
strtbl = strtbl + "<tr>" + "<td>" + doc.GetItemValue("Field1")(0) + "</td>" + "<td>" + doc.GetItemValue("Field2")(0) + "</td>" + ... + "</tr>"

Добавлено:
nvy только если в поле - помнить о лимитах в 64К или 32К.
Думаю, для одной страницы хватит, а если больше — то это совсем другая (грустная) история...
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Попробуйте в строке поиска справки дизайнера ввести "Pass-Thru HTML", в разделе типа "Using HTML on a page, form, or subform" должно быть описано, как устанавливать это свойство тексту
нашел: Select the text and choose Text - Pass-Thru HTML
2.png

немогу понять где это свойство
 
N

nvyush

Поставил, теперь вобше ничего не отображается
Попробуйте для отладки следующее:
1) В вычисляемое поле заголовка ввести формулу: "<tr><th>Заголовок1</th><th>Заголовок2</th></tr>"
2) В вычисляемое поле строк таблицы ввести формулу: "<tr><td>Поле1</td><td>Поле2</td></tr>"
3) Создать временно видимое cfd-поле с такой же формулой, что и в вычисляемом тексте. Там должно получаться что-то вроде
<table><tr><th>Заголовок1</th><th>Заголовок2</th></tr><tr><td>Поле1</td><td>Поле2</td></tr></table>
4) сканирование ответных доков и заполнение поля таблицы временно отключить
При открытии формы должна отображаться таблица
0) Проверить, не скрыт ли текст, и в нужном ли порядке расположены поля на форме.
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
во временном поле отображается хтмл, в вычисляемом тексте отображается таблица, текст не скрыт, поля расположены правильно.
сделал поле строк таблицы видимым, скопировал его содержимое, после выполнения скрипта, в файл с расширением html, открыл в браузере, все данные отображаются в виде таблицы.
Есть еще какие нибудь идеи?
 
N

nvyush

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

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