Здесь
Интернет магазин. Доставка товаров! Нужен мангал
mangali-barbecu.ru
Горячий тур Митино
Все Туры от Coral Travel Гарантия низкой цены! Покупка Тура картой онлайн
mgput.ru
Подоконники. Искусственный Камень
Доступные цены. Мойки, подоконники, столешницы из искусственного Камня
lifestone.spb.ru

XML 
ODS 
ODT 
HTML/HTM 
Report Builder 



Maple4 Site Creator\Еще\Maple4 Report Generator - генерация отчетов в Open Office и Excel\

XML   ODS   ODT   HTML/HTM   Report Builder   Главная   
Бланк в HTML/HTM, rb-отчет (создается в программе Report Builder) и готовый сформированный отчет.



Для запуска примера кликните m4rg.exe, программа выведет форму для выбора бланка ( ODS, XML,ODT, HTML/HTM), после чего сформированный отчет будет тут-же показан на экране.

ПРИМЕР ЗАПУСКА на основе бланка HTML/HTM

1. DO m4rg.exe WITH "test_lists_html_word.html","проба test_lists2.html",0


или

2. DO m4rg.exe WITH "test_lists_html_openoffice.html","проба test_lists2.html",0


Первый бланк сделан в Word-е, второй - в Open Office Writer. И все же и тот и другой бланк обрабатывается генератором без проблем.

А вот пример запуска с открытием ИНТЕРАКТИВНОГО ("живого") отчета - при клике по фамилии абонента (по услуге телефонии) - откроется список телефонов по данному абоненту. Очень интересная штука, рекомендую попробовать.

DO m4rg.exe WITH "test_lists_html_word.html","проба test_lists2.html",-1

Обратите внимание на -1 в конце строки запуска - это обязательный параметр для интерактивного отчета!



ГЕНЕРАЦИЯ ОТЧЕТА НА ОСНОВЕ БЛАНКА HTML/HTM
С него все начиналось, в принципе...

Думаю, хоть раз кто-то делал следующее - брался некий html-ный файл, а уже в нем, вместо заранее внесенных тегов размещались поля таблиц/курсоров, значения функций и переменных.
Все потому, что html-формат достаточно прост для понимания, а для его редактирования можно воспользоваться обычным Блокнотом.
Плюс, огромные возможности для реализации любой задумки, например, несколько таблиц в одном отчете - это вовсе тривиальная задача :-)

Есть подводные камни. Например, Word от Microsoft постоянно норовит разместить дополнительные < span >-ы прямо в теге, поэтому приходится либо перед генерацией дополнительно обрабатывать бланк, либо отказываться от редактирования уже готового бланка Word-ом, т.е. пользоваться только Блокнотом.
Или, вот, например, размещение своей таблицы в документе.
Вроде бы ничего сложного (< table >< tr >< td >< /td >< /tr >), но ЕЙ-БОГУ иногда замучаешься правильно подобрать ширину колонок, шрифт, размер, цвет и другие параметры таблиц. А ведь еще хочется итогов, выделения этих итогов/подитогов и многого другого.
В общем, в какой-то момент наступает понимание, что двигаешься не туда :-), и руки опускаются (точнее, постепенно несколько охладеваешь к тому, что казалось достаточно простым).

Что предлагаю я?
I. Есть некий шаблон в формате html. Вы его редактируете каким-либо образом (Word, OO Writer, Блокнот и т.д.) и размещаете в его теле специальные теги - некий текст, ограниченный ` и ` с двух сторон.
Пример тега:
`&test_.saldo` - значение поля saldo курсора-селекта/таблицы test_
или
`&date()` - значение функции date(), которая возвращает текущую дату
или
`&m4rb_mr(test_.notes)` - значение поля test_.notes преобразуется в многострочный текст
или, код foxpro:
`
local ii
ii=datetime()
return ii
`

II. Если необходимо разместить в документе таблицу (с шапкой, группировками, итогами/подитогами, вставкой строк по условию и т.д.) - в специальной программе (report builder - rb) создается ее дизайн, а в шаблоне, в коде тега, дается команда на использование этой таблицы при генерации документа.
Например,

`
Select * from test into cursor test_ && курсор
return rb("svodno_saldo.m4rb") && запуск rb
`


Смысл вышеприведенного кода - получение курсора из test и запуск генерации таблицы по нему.
Курсор test_ может быть создан ранее, главное, что бы он был выбран в момент запуска rb

После этого запускаете генератор, выбираете шаблон и получаете готовый документ с размещенной таблицей (и даже не одной) внутри документа!

Чем хороша именно такая схема создания (шаблон report builder)?
1. Редактируя шаблон в Word или oo Writer Вы можете не бояться того, что тег будет изменен - на работу тега это никак не отразится.
2. Таблица, созданная в report builder (rb) может применяться в других html-шаблонах (и, кстати, вид таблицы на html-странице ТЕРЕТИЧЕСКИ не зависит от браузера).
3. Таблица, созданная в rb, может разместить в своем коде другую таблицу (вложенная таблица), которая может строиться на совершенно другом селекте/курсоре.

Ну и, в конце концов, rb может Вам даже не понадобится :-)

Есть некоторые минусы использования бланка html:
1. Несколько больший размер получаемого документа по сравнению с ods и odt - ну что ж Вы хотите, по сути ods и odt - это все таки zip-архивы :-)
2. Готовый отчет может использовать картинки, и так как в обычном html невозможно разместить картинки прямо в теле файла - они будут собираться в подпапке с названием имяотчета.files
Т.е. по подобию, как это делает Word. Не забывайте про эту папку при копировании основного отчета, иначе документ может быть неверно отображен в браузере!
Впрочем, используя Проводник, это будет сделано Windows автоматом, за что ей, Windows, огромное спасибо!
3. Документ html может по разному отображаться в разных браузерах - от этого никуда не деться, конкуренция :( блин.
4. Документ, созданный в Word, oo Writer наверняка постарается изменить, и, возможно, не в лучшую сторону. Как и наоборот, впрочем, когда документ, созданный oo Writer, попытается открыть на редактирование Word.
И это не смотря на то, что используется одно расширение - html/htm :(
5. Для размещения расчетной таблицы нужно создать rb-репорт в Report Builder-е. Что, конечно, занимает некоторое время... Но! Вы только представьте, каков объем РУЧНОЙ работы в ином случае :-)

Плюсы создания отчетов на основе бланков html:
1. Бланк создается/редактируется либо визуальным редактором (Word, oo Writer и т.д.), либо, например, тем же Блокнотом.
2. Нет проблем с изменением тегов Word-ом или oo Writer-ом, генератор правильно определит, что является тегом. Ну и, правильно вставит вместо тега нужный текст.
3. Построение и вставка простых и сложных таблиц (Report Builder) с итогами по группам ( с возможностью генерации подчиненных таблиц) без ограничения на количество в отчете.
4. Автоматический сбор картинок, используемых в отчете, в папку отчета (для простоты копирования) - причем как картинок бланка, так и картинок, генерируемых rb!
5. Редактирование дизайна таблицы в отдельной программе (Report Builder) - считаю это так же и плюсом (возможность вставки в другие бланки или в другие rb-репорты)!

Отличие генерации на основе HTML-шаблонов от генерации на бланках других форматов (xml, ods, odt)
1. Теги размещаются непосредственно в теле документа, между ` и `, а НЕ В КОММЕНТАРИИ, так как:
а) в Word невозможно ТОЧНО разместить комментарий в нужном месте и
б) форматы комметариев в Word и oo Writer несколько различаются, не смотря на то, что используется один формат HTML :(
2. Другие функции для подсчета итогов:
m4rb_sum('селект.поле') - итог по полю таблицы
m4rb_cnt() - количество по группе
3. Новая функция m4rb_mr(выражение) - преобразование текста выражения в многострочный текст (вместо перевода строки chr(13) вставляется < br >).
Область применения данной функции - только для обработки выражений вне rb (там все делается автоматом).

Особенности разработки Html-бланков и репортов rb.
1.Если Вы используете rb-репорты (файлы с расширением m4rb и одноименными каталогами) - ОНИ ОБЯЗАТЕЛЬНО ДОЛЖНЫ находиться в каталоге запуска генератора отчетов (т.е. там же, где находится файл m4rg.exe)!
2.Нужно признать, что rb формирует таблицы, более оптимизированные для отображения в IE.
Пример - по умолчанию высота ячейки в rb-репорте зафиксирована и не может меняться в зависимости от содержимого. В IE текст ПРАВИЛЬНО обрезается по высоте, а в FireFox НЕПРАВИЛЬНО растягивается.
Для растягивания ячейки по высоте (для отображения в IE) нужно стать на ячейку, которая ДОЛЖНА растягиваться, далее другой кнопкой вызвать контекстное меню и в нем выбрать - Row/ON Auto Height

Претензии к oo Writer (о как... :) )
1. Я не понимаю, ЗАЧЕМ надо в теле html-документа превращать имя рисунка (точнее, каталога, где он находится), написанное на русском в esc-последовательность (Word это делает только со знаками до пробела).
Впрочем, может это IE виноват? Как и Word, заодно?
ПОЧЕМУ IE не отображает картинку, русские буквы которого замененены на esc-последовательность? :-)
Обратите внимание, что готовый отчет по бланку отлично отображается как в Mozilla FireFox, так и в IE (так работает генератор).
Но это все работает только до первого изменения oo Writer-ом :( . После чего в IE отображаются пустые окна от рисунков.
2. Для Word-а html-формат - это попытка Microsoft как можно лучше отобразить doc-документ (не смотрите на расширение!) прямо на странице в Интернет.
Да, это не чистый HTML, да код излишний... и все же считаю, что попытка Microsoft удалась.



Разработка интерактивных отчетов
Сразу скажу - интерактивный отчет практически ничем не отличается от обычного. Надо лишь задать процедуру обработки ссылки ячейки и соответсвующим образом запустить генерацию.
В rb-репорте svodno_saldo_rb.m4rb (редактируется из rb_edit.exe) текст такой ссылки задается для ячейки фамилии по услуге Телефония.
Кликнув по ячейке другой кнопкой, выберите в меню Edit/Cell/Click - откроется форма редактирования генерируемой ссылки, а в ней будет находиться следующий текст:

"VFP:///LOCAL s_
s_=SELECT()
SELECT * FROM phone WHERE user_id=`&alltr(str(test_.user_id))` INTO CURSOR phonek
do m4rg.exe with 'phone_for_user.html','',-1
SELECT (s_)"

VFP:///
- указание обозревателю обработать ссылку, как процедуру FoxPro (при клике)

SELECT * FROM phone WHERE user_id=`&alltr(str(test_.user_id))` INTO CURSOR phonek
- текст формирования курсора из phone

`&alltr(str(test_.user_id))`
- в момент формирования основного отчета вместо тега запишется текущий test_.user_id

do m4rg.exe with 'phone_for_user.html','',-1
- запуск генерации детализированного отчета по курсору и открытие его в специальном обозревателе.
Обратите внимание на -1 в конце!!!
Если этого не сделать (не поставить -1) - сформированный отчет будет открыт в браузере по умолчанию.

Обратите внимание - текст ДОЛЖЕН НАЧИНАТЬСЯ и ЗАКАНЧИВАТЬСЯ ДВОЙНЫМИ КАВЫЧКАМИ (а двойных кавычек не должно быть внутри)!

Далее, надо запустить генерацию основного отчета в виде (обязательно с -1 в конце!):
DO m4rg WITH "test_lists_html_word.html","test_live_report.html",-1

В ИНОМ случае (если не будет -1) - отчет откроется в браузере по умолчанию, даже не смотря на название :-)

 

create by Maple4 Site Creator 5/2018

Яндекс.Метрика Рейтинг@Mail.ru Участник проекта CMS Magazine