Report Дезигнер

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

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
FinSoft
Посетитель
Сообщения: 49
Зарегистрирован: 21 Ноябрь 2006, 13:37

Re: Report Дезигнер

Сообщение FinSoft »

Smith писал(а):Вопрос уж обсуждался миллиард раз... Но все же ... Как задрал этот Дезигнер! Ну как чтоб спокойно делать отчеты?!
Чем громить врагов?! Как отстреливаться?
Братия кто чем пользуется и как выходит из положения?
Smith писал(а):Вопрос уж обсуждался миллиард раз... Но все же ... Как задрал этот Дезигнер! Ну как чтоб спокойно делать отчеты?!
Чем громить врагов?! Как отстреливаться?
Братия кто чем пользуется и как выходит из положения?
Расскажу свой опыт.
Вначале были кларионовские репорты, но быстро стало понятно, что неудобно и функционал неконкурентен.
Потом для печати первички взял FRB, а отчеты стал выводить в виде броузера. Для многих ситуаций последний вариант оказался удобен. Формирем итоги в локальную кьюшку, в словаре делаем одну на всех системную таблицу с одним полем id, броуз по ней с range limit по количеству записей в локальной кьюшке, предварительно проверив, чтобы в системной таблице было записей не меньше. В точке фильтрации делается get на запись в локальной очереди и формирование выводимых в броуз значений. Для автоматической печати броуза был приспособлен какой-то опенсорсный класс, умевший делать автопереносы строк в колонках, разворот страниц и деление на строницы по горизонтали, если все колонки не помещались на листе. Для автоматического вывода броуза в excel был приспособлен класс dexcel Олега Руденко, который, собственно, и был разработан для этой цели. Такая технология позволила навесить на отчеты кучу разного функционала стандартным для клариона способом, сохранив возможности встроенной печати через report-структуру и экспорт в редактируемый excel-формат, причем с последним можно работать как через excel, так и через calc.
Подход с выводом отчетов в броуз очень хорош, но не всегда применим. Пользователям иногда хотелось получить формы определенного вида. Не всегда удобно было формировать таблицы с переменным количество колонок. Для таких случаев я сделал класс, производный от dexcel. Эту технологию я подробно описывал в клалист. Дизайним бланк в Excel, результат сохраняем через OLE в текстовом файле разметки, последний используем для вывода отчета через dexcel. Этим убиваются сразу несколько зайцев. По удобству дизайна табличных (или близких к ним) бланков в excel все другие печатники типа rw, LL и т.п. просто сосут. Форму бланка можно корректировать на стороне пользователя визуально как в excel, так и напрямую в любом текстовом редакторе. Пользователю для работы с отчетом не обязательно иметь excel, можно и бесплатный calc. Скорость формирования отчетов очень высокая, так как прямой вывод в файл без всяких оле и ком. В программе код максимально компактный, очень похож на используемый в 1с-предприятие. Описанный подход служит верой и правдой последнии 5-6 лет.
В начале этого года появились определенные проблемы с frb и возник вопрос, чем можно при случае заменить. В качестве эксперимента было сделано расширение описанного выше класса работы с excel-бланками. Отдельные методы теперь позволяют на основании все того-же текстового файла разметки выводить как xls-файл, так и кларионовскую report-структуру. Хотя есть некоторая погрешность при преобразовании единиц измерения координат контента, вид обоих целевых форматов очень близок. Были добавлены автоматическая разбивка на страницы, печать шапок и итогов страниц, поддержка функций перехода на новую страницу до или после вывода детальки, печать вместе с, режим этикеток (для report), поддержка в файле разметки динамических формул перед и после печати деталек, работа со словарем для конструирования формул и т.п.
Чуть позже же был сделан небольшой класс для вывода в rtf-бланки. Рисуем бланк в ворде, делим его спецсимволами на детальки, а потом довольно простым кодом заполняем. Тоже прямой вывод в файл без оле и ком, работа как из mco, так и из oo. В дополнительном текстовом файлике можно задавать формулы, которые автоматически выполняются перед или после вывода деталек. Таким способом получается полностью вынести дизайн из приложения, сохранив высокую скорость формирования и встраиваемость (с бланком rtf можно работать и в рамках приложения через rtf-контрол, хотя несколько горбато).
Все это хорошо. НО... Описанные решения с excel-report и rtf так и остаются в рамках бэты. Хотя я и сделал несколько бланков по этим технологиям в реальных приложениях, переводить кучу (более 150) бланков из frb, с которыми ежедневно работают пользователи, довольно большая работа, для которой не хватает мотивации.
Если нет религии "только кларион, winapi и опенсорц" и нет возражений против использования закрытых коммерческих библиотек, можно посмотреть в сторону упомянутых LL или FRB. FRB прост, компактен, легко встраивается в приложение, написан на кларион, но ограничен по функционалу. LL большой, дорогой, имеет развитый функционал, пишут немцы и не на/для кларион.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

Re: Report Дезигнер

Сообщение gopstop2007 »

Я использую ФРБ. На 99% - хватает, вот если бы еще полноценный вывод в excel :). В ФРБ создание отчета занимает минимальное кол-во времени. ОГРОМНОЕ спасибо Олегу Фомину, за сэкономленное огромное время в жизни. :)
Благодаря Yufil, некоторое время использовал LL (8,9), не знаю как сейчас в новых версиях LL, тут затраты времени на разработку отчета, на порядок выше, хотя отчеты тут можно лепить какие душе угодно. Еще раз ОГРОМНОЕ спасибо Юрию, за то что дал возможность, взглянуть на создание отчетов с другой стороны.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить