Что использовать для автоматической генерации сложных отчетов?
Суть в следующем, есть некоторое программное обеспечение, пользователю необходимо в нем формировать различные отчеты в удобочитаемом виде и выгружать их (программа сама заполняет нужные места в отчете).
Сейчас это сделано в виде MS Word-шаблонов. С помощью спец. тегов в шаблоне размечены области куда необходимо вставлять данные. Программно открывается шаблон, парсится, вставляются данные (все через OLE), исходя из задания, и формируется отчет.
С помощью спец. тегов можно вставлять обычные значения, коллекции значений (в том числе формировать таблицы), есть вычисляемые функции (которые могут содержать внутри себя другие функции), картинки и прочее.
Большинство самых популярных шаблонов мы сформировали для пользователей сами и они с ними работают. Но часто возникает ситуация, когда пользователю необходимо изменить форму шаблона или вообще создать новый. И тут возникают проблемы, ибо задача для неподготовленного человека довольно сложная, а мануал читать люди не хотят. Плюс, большие отчеты формируются крайне долго (например, с содержанием больших таблиц), причина - OLE.
По сему, вопросы:
1) Какой формат выбрать для парсинга шаблона? Что-то мне подсказывает гораздо удобнее и быстрее будет парсить текстовые форматы (html, xml, json ...). Никогда не работал с latex, возможно, он подойдет. Формат нужен такой чтобы пользователь мог после формирования отчета, его открыть, поправить и распечатать.
2) Нужна какая-то вьюшка для пользователя для удобного формирования шаблона. Нажал на кнопульку создалась таблица, указал что в нее выгружаем, например, договора.
3) Может есть какие-то готовые решения формирования отчета, но не уверен, что они нам подойдут. Объясню. Например, нашелся в шаблоне спец. тег, я его выдираю и отправляю запрос на сервис, сервис возвращает результат, я результат вставляю. Т.е. есть некоторый "proxy" между парсером и данными (он и возвращает данные по запросу).
Это с какой стороны посмотреть. Мы предоставили инструмент, инструмент работает, но для выполнения некоторых операций требует ответственного отношения пользователя. Посмотреть мануал, написать самим новый шаблон, проверить его - далеко не у всех это получается. А потом такой человек бежит к начальнику и говорит, что у него ничего не работает, программа говно. Короче говоря, инструмент не самый удобный.
Наша же задача сделать так, чтобы было максимально комфортно работать людям даже без "желания работать" и с минимальными умственными способностями.
becks:
Еще раз говорю, что это не проблема разработчика. В большой организации всегда найдется самый тупой в мире человек или старушка-кладовщик 70 лет. Такие люди и сложные отчеты не совместимы. Решается организационно - с отчетами поставляется мозговитый стажер на полставки.
Не совсем понял некоторые ваши требования.
Но для отчетов, да еще и .Net отлично подойдет SSRS - MS SQL Reporting Services.
Есть и превью, и в программу можно встроить, есть экспорт в любые форматы - PDF, Word, Excel.
Можно использовать поставляемый ReportServer (Web Portal) или сделать свои web-страницу/программу.
Непонятно про "парсинг шаблонов" - вы про данные или про внещний вид отчета?
Данные в SSRS можно брать из любой БД или подставлять программно. Внешний вид формируется заранее.
> Непонятно про "парсинг шаблонов" - вы про данные или про внешний вид отчета?
Я про программный разбор шаблона, поиск тегов. Дело в том, что в отчете в теге указан некоторый "путь", я его разбираю, отправляю на сервис и получаю в ответ значение по этому пути. Я не имею доступа к данным напрямую.
Спасибо. Посмотрел быстренько на SSRS. Возникло пара вопросов, подскажите, пожалуйста:
1) Он жестко привязан к MS SQL?
2) В качестве источника данных обязательно использовать MS SQL базу? Если да, то у нас нет такой возможности. Информация собирается из нескольких не-MS SQL баз, за работу с данными отвечает сервис, которому посылается ответ с путем.
Можно использовать другие БД или подсовывать данные програмно (DataSet/DataTable).
При програмной вставке данных, если не ошибаюсь, придется ограничится использованием приложения (asp, windows) лишившись ReportServer'а.
1) Какой формат выбрать для парсинга шаблона?
В ентерпрайзе стоит выбрать XML. Html это формат отображения документа, а не его представления. Json больше подходит под простые нужды, вам не подойдет, потому что я опишу в пункте 3
2) а)XML преобразовываете в html или в openoffice формат (это велосипед). Современные форматы docx и xlsx это заархивированные xml (возьмите любой документ смените расширение на zip и посмотрите).
б) Также можете вбить в гугле "generate reports from XML", "c++ library for reports from xml" или порыться на гитхабе.
3) Мне кажется здесь идет речь про XLST трансформацию.
1С есть в бесплатном варианте? А SSRS бесплатен.
Еще отдельный вопрос по документации - при начинании с нуля на 1С много документации в интернете?
Ну и вопрос к автору - .Net, C++ обязательны? Если да - то 1С как дружит с .net?
Я правда про 1С ничего не знаю.
Спасибо. Честно говоря, никогда не имел дела с 1С и немного странно (на взгляд новичка) тащить его для формирования отчетов, но, если Вас не затруднит, не могли бы скинуть статью где можно почитать про решение проблем, сродни нашей?