Вывод отчета в HTML

Обсуждение извечных проблем кларионовских (и не только) отчетов

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Вывод отчета в HTML

Сообщение NewUser »

Здравствуйте друзья-коллеги!
Что-то уже несколько дней у нас, в Краснодаре, неподвижно лежит основной краевой интернет-провайдер «ЮТК-Дизель». Наверное, конкуренты DoS атаковали. В связи с этим нет никакой возможности лопатить километры сообщений на форуме. А задачу надо решать. Задача в следующем: вывести отчет в HTML формате. Несколько дней возился со стандартными классами ReportToHtml, но ряд мной так и непобедимых «косяков» заставил обратиться к вашей помощи. Наверное, самое простое обратить свой взор на «приватизированные» шаблоны сторонних разработчиков. Если кто сталкивался – дайте ссылочку, или, хотя бы, название продукта.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Вывод отчета в HTML

Сообщение Игорь Столяров »

Сразу скажу, что если есть желание "поставить шаблон и он все сделает сам" - я таких вариантов не знаю.
Из того, чем мы пользуемся для изготоваления отчетов для просмотра в интернет-броузере:

1. Можно сделать текстовый шаблон HTML страницы с полями типа [MyFieldXXX] и потом просто заменять
эти поля на реальные значения и ссылки как простую обработку текстовых файлов.
Прекрасно подходит, например для таких задач как генерация страниц описаний товаров для сайта на
основании записей в БД. При этом пользователь сам может редактировать структуру страниц, указывать
где у него будет текст, а где цена и картинки и т.д.

2. С помощью IQXML можно легко генерить XML файлы для сложных списочных структур. Потом, с помощью
программы Altova XML Spy делается XSL схема для визуализации этой структуры данных. В общем-то и все.
Решение подходит для генерации отчетов любых списочных структур (прайс-листы, документы, списки сотрудников,
и товаров и т.д.)

3. Страндартный Report Clarion'a (ABC шаблоны) может напрямую генерить HTML файлы. Иногда - этого достаточно.
За теми кто отстал - не возвращаться. (С) Кодекс
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Вывод отчета в HTML

Сообщение NewUser »

Спасибо, Игорь, за столь полный и быстрый ответ. Интересно было бы обстоятельно подумать над возможностью применения варианта 1.
Касательно варианта 3, есть несколько вопросов:
1. Как побороть то ли табуляцию, то ли кучу пробелов в русских текстах, выводимых посредством поля с включенной опцией RTF (режим Field) после тире (дефиса). Например: Коммунизм – наше светлое будущее. Между дефисом «-» и словом «наше» штук 8-12 пробелов.
2. Как понять алгоритм а затем и избавиться от автоматического переноса слов в титульных строка в RTF поле. Например. В RTF поле есть строка: «Кларион – самый крутой язык программирования!». В превьювере – все нормально. Сохраняем в HTML – получаем примерно следующее: Кларион -
самый крутой
язык программирования!
Вместо одной строки – три.
3. В окне браузера, в котором отображается сгенерированная данным шаблоном страница нашего отчета, имеется срока навигации: [На первую] [Предыдущая] [Следующая] [На последнюю] Стр._1 Загрузить
Разработчику предоставлен механизм переопределения этих надписей. Но! В пределах 15 символов. Наверное, плохо копался в темплейтах, но не нашел, где эта самая @S15. Может, кто силен в шаблонно-писании-читании, подскажет?
4. Как я уже понял, ReportToHTML вникакую не дружит с линиями. Или есть возможность побороть и это ограничение?

Да, в свое время я, кажется, видел продукт, что-то из серии «EasyPrintTo». Это так, или это разыгралось мое воспаленное воображение?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Вывод отчета в HTML

Сообщение Yufil »

Посмотри такой значок как неразрывный пробел. Символ '<160>' или Chr(160) или &nbsp в HTML порождает текст, в котором перенос по пробелу невозможен. А выглядит как обычный пробел.

Аналогично есть символы неразрывного дефиса и неразрывного тире (&mdash и &ndash), но лучше спросить Яндекса или Гугла по этому поводу...
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Вывод отчета в HTML

Сообщение NewUser »

Спасибо, Юрий, за участие. Несмотря на то, что мы на данный момент решили воспользоваться советом № 1 Игоря Столярова, мы не исключаем возможность наладить процесс посредством шаблонного перевода стандартного кларионновского отчета в Html и, что наиболее главное, PDF форматы. Я, наверное, не до конца понял совет, но в той строке, которая переносилась через каждое слово на следующую строку, мной были лично поставлены пробелы нажатием клавиши пробел на клавиатуре в RTF редакторе, после удаления существующих пробелов. Да, и как посмотреть на коды символов?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Вывод отчета в HTML

Сообщение Yufil »

Можно эти символы набрать, например, в Word и вклеить в нужное место через Буфер обмена. Или попробовать в RTF-редакторе нажать Ctrl+Shift+пробел.
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Вывод отчета в HTML

Сообщение lsgsoftware »

Я уже поднимал эту тему на форуме и сам провел кучу экспериментов.
Выводы: на сегодняшний день клашины экстеншены для вывода отчетов в файлы
работают кривовато,особенно для сложных табличных отчетов с разными шрифтами и т.д.
Оптимальный путь сегодня - "печать" отчета на PDF-принтер,Получишь PDF-файл.Потерь информации
и искажений я не нашел(хотя может быть и есть для особо сложных отчетов).А далее с PDF-файлом делай
что хочешь,но это уже вне клаши.Но имей ввиду,что работа с PDF(например,через ADOBE Acrobat) требует
специальной подготовки и в целом не для рядового юзера(как,например, и Фотошоп)
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Вывод отчета в HTML

Сообщение NewUser »

Спасибо, Юрий – при первой возможности попробую заменить пробелы в RTF документе на Ctrl+Shift+пробел. Посмотрим, что получиться.

По поводу вывода на PDF-принтер. Мне нужна автоматизированность процесса. Пусть даже с рядом заведомо известных ограничений по качеству самого отчета. Способна ли предлагаемая модель работать автономно без участия оператора? Цель задачи – генерация отчетов и заливка их на сайт с дублированной отсылкой на е-майл.

И что, у буржуинов ничего нет по этому поводу?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Re: Вывод отчета в HTML

Сообщение Игорь Столяров »

NewUser писал(а):По поводу вывода на PDF-принтер. Мне нужна автоматизированность процесса. Пусть даже с рядом заведомо известных ограничений по качеству самого отчета. Способна ли предлагаемая модель работать автономно без участия оператора? Цель задачи – генерация отчетов и заливка их на сайт с дублированной отсылкой на е-майл.
У нас в программах все это делается, но к сожалению средствами Clarion здесь не обойтись, т.к. отправка почты работает очень непредсказуемо, а создаваемые шаблонами PDF - неполноценны. Если система которую Вы делаете - разрабатывается под заказ - то действительно можно проинсталировать какой-нибудь PDF принтер (лучший конечно - это Adobe PDF Printer, входящий в комплект Adobe Acrobat) и печатью на него создавать PDF файлы.

Мы в серийных программах (нет возможности устанавливать чужие и тем более коммерческие продукты)
для решения таких задач используем следующие схемы:
- Создание PDF файлов на основании отчетов - MS Word или OO Writer (через библиотеку EOO).
Получатся полноценные PDF файлы с внедренными шрифтами. Никаких проблем с их использованием.
- Закачка файлов в FTP раздел на сервере, формирование и рассылка e-mail - Catalyst Socket Tools Library
- Запуск программы в качестве службы Windows для автоматической обработки данных - ABC Free Template

В общем-то такие системы полностью автономны и работают в автоматическом режиме уже 2-3 года, практически
без участия оператора ....
За теми кто отстал - не возвращаться. (С) Кодекс
lsgsoftware
Ветеран
Сообщения: 311
Зарегистрирован: 08 Июль 2005, 22:04

Re: Вывод отчета в HTML

Сообщение lsgsoftware »

Мне кажется,что ты путаешь две вещи.Собственно печать отчета с возможностью его редактирования и
обмен данными.Если есть некое приложение,которое формирует и печатает отчеты,а юзер хочет
иногда эти отчеты подправить,то нужно дать ему возможность это сделать путем сохранения отчета в некоем
файле стандартного формата желательно без потерь.Ясно,что участие юзера здесь необходимо и все для этого и
делается.А если ты хочешь экспортировать данные в нужном формате,то к отчетам это не имеет никакого отношения.
Если тебе нужно экспортировать данные в HTML-формате,то можно рекомендовать следующее.Возьми хороший HTML-редактор
(рекомендую NVU -русский и бесплатный) и нарисуй в нем болванку отчета с заглушками вместо данных.А потом замени заглушки на данные и делай с этим файлом что хочешь(обычный парсинг).Классический пример -экспорт банковских выписок из систем Клиент-банк в 1С.
Если хочешь сделать штатно,по правилам, то ты должен пройти муторную процедуру "тестирования" у 1С за немалые деньги и в неопределенные сроки ,зато получишь гордый "сертификат" от 1С о совместимости .А можно и без этого.Просто поизучать формат файла,который "кушает" 1С
и сделать такой-же.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Re: Вывод отчета в HTML

Сообщение kreator »

Предлагаю создать такой отчет руками.
1. В словаре сделать таблицу ASCII(Техт) с одним столбцом типа STRING.
2. В программе создать этот файл (с расширением htm или html).
3. Добавлять в него сформированные вручную строки.
Например:
Сначала добавляем заголовок страницы:

<html>

<head>
<meta http-equiv="Content-Language" content="ru">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Счет на оплату</title>
</head>

<body>

Добавляем заголовок отчета:

<p align="center"><b><span lang="ru"><font size="4">Счет на оплату</font></span></b></p>

Добавляем шапку таблицы:

<table border="1" width="100%" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#000000" style="border-collapse: collapse">
<tr>
<td width="65">
<p align="center"><b><span lang="ru">№ </span></b></td>
<td width="467">
<p align="center"><span lang="ru"><b>Наименование</b></span></td>
<td width="123">
<p align="center"><span lang="ru"><b>Кол-во</b></span></td>
<td width="143">
<p align="center"><span lang="ru"><b>Цена</b></span></td>
<td>
<p align="center"><span lang="ru"><b>Стоимость</b></span></td>
</tr>

И теперь добавляем блоки, соответствующие каждой записи отчета:

<tr>
<td width="65" align="center"><span lang="ru">1</span></td>
<td width="467"><span lang="ru">Товар № 1</span></td>
<td width="123">
<p align="right"><span lang="ru">2</span></td>
<td width="143">
<p align="right"><span lang="ru">990</span></td>
<td>
<p align="right"><span lang="ru">1980</span></td>
</tr>

Это первая запись.

<tr>
<td width="65" align="center"><span lang="ru">2</span></td>
<td width="467"><span lang="ru">Товар № 2</span></td>
<td width="123">
<p align="right"><span lang="ru">3</span></td>
<td width="143">
<p align="right"><span lang="ru">890</span></td>
<td>
<p align="right"><span lang="ru">2670</span></td>
</tr>

Это вторая запись. Вместо цифр и слов "Товар" ставим естественно свои значения.

После формирования всей таблицы добавляем тэги:

</table>

</body>

</html>

Наверно и все.

В принципе можно и шаблон HTML прикрутить, но это уже сложновато.
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Вывод отчета в HTML

Сообщение NewUser »

Проектируемый отчет нужен для приложения в сфере оценочной деятельности. Специфика - чередование довольно больших блоков отформатированной (Bold, size, color, left и т.д.) текстовой информации с таблицами и графиками. Текстовые блоки (собственно как и таблицы и картинки) помещаются в отчет согласно производимым расчетам. Пути предоставления отчета пользователю:
1. Формирование HTML (PDF?) файла и размещение на сервере в личном кабинете клиента.
2. Формирование PDF файла (или HTML с архивированием картинок и самой страницы (страниц) в единый файл) и отправка его по электронной почте клиенту.
3 Распечатка отчета на принтере в офисе (опционно).

Лично меня на сегодняшний день привлекает следующий вариант:
1. В HTML-редакторе создается (а после и редактируется, если потребуется) шаблон/заготовка/болванка отчета – со всеми необходимыми атрибутами (стиль, лого, формат и т.д.). В нужных местах, там, где должны быть текстблоки, прописываются условные коды - заглушки (<001:Веедение>, <005:Методология расчетов> и т.д.).
2. В программе производятся нужные расчеты и в зависимости от их результата в местах, найденных по этим заглушкам (<001: , <005: и т.д.), начиная с символа < и заканчивая символом > помещается (заменяя собой заглушку) нужный текст. Фразы, следующие за символом : (Введение, Методология расчетов и т.д.) не являются элементом для поиска, а служат только для удобства восприятия (формирования, редактирования) шаблона/болванки и могут быть без ущерба для функционирования изменены при необходимости в самом шаблоне.
3. То же самое касается и картинок.
4. Касательно таблиц, я думаю, можно воспользоваться советом kreator’а.

Вроде бы все срастается, но есть несколько НО.
Т.к. прогнозируемая длина отчета – несколько десятков стандартных А4 страниц, то формирование «потряночной» (непрерывной – на одной странице) версии HTML отчета кажется менее удобной, нежели той, которая реализована в стандартных шаблонах ReportToHtml с возможностью навигации на любую страницу. В портяночной версии тоже можно сделать гиперссылочное меню в начале страницы, но это не избавит от необходимости довольно долго ожидать клиентам загрузки всего отчета (для разных браузеров и разных скоростей – по разному). Как быть с этим?

Итого, резюмируя, можно вывести несколько вопросов:
1 В каком формате формировать отчет, для вывода его на FTP-сервер, на почтовый ящик и на принтер?
2 Как разбить отчет на страницы?
3 Как быть с необходимостью архивировать файлы (кроме PDF) отчета при отправке на е-майл?
4 Насколько удобно размещать на сервере для просмотра вместо Html страниц – файл PDF?
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: Вывод отчета в HTML

Сообщение Yufil »

1. Если что-то с картинками выводится в HTML, будет получен не один файл, а несколько - к HTML дополнительно картинки, стили (CSS), скрипты и другие файлы. Кроме того, HTML смотрится по-разному в зависимости от типа браузера и его настроек, поэтому отчёт может быть безнадёжно испорчен.

2. Если пользуешься шаблонами HTML, лучше всего использовать тэги ASP <%=имя %>, их признают практически все HTML-редакторы и не обижаются при верификации-просмотре .

3. В силу п.1 PDF явно предпочтительнее

4. Для архивации есть бесплатная библиотека Zlib, запаковать и распаковать не проблема.
NewUser
Старожил
Сообщения: 226
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 4 раза

Re: Вывод отчета в HTML

Сообщение NewUser »

Получается, что «выгодней» это сделать в PDF формате. Сейчас будем думать над тем, не отказаться ли нам от возможности просматривать отчет со страниц сайта в пользу опубликования ссылки на закачку файла отчета с сервера на комп пользователя. Но какой, при этом, на ваш взгляд, шанс того, что у пользователя потенциально может не быть установлен Acrobat Reader? Ссылку на скачивания последнего мы, конечно, разместим на сайте, но все же….
И еще вопрос по открытию PDF файлов в Internet браузере. Работаю в Оpere. Иногда, при двойном счелчке левой кнопки мыши по ссылке закачки PDF файла открывается окно сохранения на комп этого фала, а иногда – окрывается новое окно браузера, и после загрузки в кэш оперы файла, содержимое его отображается в окне браузера. Это задается при программировании вэб-страницы?
Ответить