Snap — новая платформа для создания отчетов. Часть 1

Классно, когда отчеты делают не программисты, а сами пользователи. Но большиство существующих дизайнеров отчетов безумно сложны. Представьте, как было бы здорово, если бы ваш главный бухгалтер мог конструировать свои отчёты прямо в Ворде! Фантастика? Вовсе нет. Это Snap от DevExpress.Посмотрите своими глазами, как прост в использовании этот контрол для программистов и конечных пользователей:

[embedded content]

Под катом вы найдете подробное описание всего, что умеет делать Snap на текущий момент.Мы не стали писать новый продукт с нуля. За основу был взят наш Rich Text Editor, который реализует всю инфраструктуру для создания сложных документов — как из пользовательского интерфейса, так и полностью из кода. Использование Rich Text Editor позволяет удобно и быстро создавать шаблоны для простых и master-detail отчетов, не требуя дополнительного программного обеспечения, и затем менять их, не привязываясь к внутреннему устройству конкретного формата. Серьезным плюсом к этому является возможность использования конечным пользователем навыков работы с Microsoft Word.

Затем мы добавили использующийся в наших компонентах мастер подготовки источников данных, позволяющий пользователям добавлять нужные для работы данные практически без вмешательства разработчиков.

3508bd126df47fc68b569a7ba2e28c88.png

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

Структура данных будет визуально представлена на панели обозревателя. Для того, чтобы получить готовый документ, достаточно просто выбрать необходимые поля и перетащить их в нужное место, или же просто дважды щелкнуть по ним — в этом случае они добавятся в соответствии с текущим положением каретки. Если нужно добавить данные в уже созданную таблицу, то это можно легко сделать при помощи хот-зон.

8e09327b14d2c3852ac55c14af08ed73.gif

При этом сразу будут использованы реальные данные — фактически, дизайнер не просто создает заполнители для динамического содержимого, а показывает итоговый вид отчета. Единственное отличие от конечного результата заключается в том, что в режиме разработки используется ограниченное число записей. Выбранные данные автоматически будут сгруппированы в таблицу, но при желании их легко сконвертировать в обычный текст.

Также процесс вставки данных можно более тонко настроить, используя продуманный набор событий, уведомляющих о каждом шаге подготовки документа.

ffa21a55c2a5519dc45a6f51d2f2f3bd.png

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

cf2312b4993c996b4c6cf27d3120e4e0.png

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

Помимо простой вставки данных в документ, Snap предоставляет внушительный набор функций для их обработки и представления в нужном виде, в который входят возможности группировки, сортировки, фильтрации, анализа и расчетов, использование параметров и вычисляемых полей, форматирование результатов.

cc285e6065ee79eda71581ad94152b86.png

Не все данные удобно представлять в виде простого текста. Snap имеет целый арсенал средств визуализации данных, среди которых чекбоксы, изображения, штрихкоды, графики и спарклайны.

8d72dfadc6213a1682c2a93ffad8c891.png

Ни один инструмент создания отчетов нельзя назвать полноценным, если он не предоставляет простого и удобного способа создавать иерархические отчеты.

5a08394ea6a5689a6f4c8c1c7a070336.png

Широко распространенным сценарием, на котором я хотел бы остановиться подробнее, является mail merge — создание большого числа однотипных документов на основе общего шаблона, в частности, подготовка почтовой рассылки с извлечением имен и адресов из базы данных. Для того, чтобы переключить документ в режим подготовки такого шаблона, достаточно просто выбрать соответствующий пункт контекстного меню для одного из добавленных источников данных.

7617c43aa932a416fe0b3d467910b92d.png

Разумеется, выбрать подобным образом источник данных можно и из кода. После этого Snap будет рассматривать весь документ как шаблон, который должен быть повторен для каждой записи в источнике. При этом режим mail merge также поддерживает иерархические данные для создания отчетов.

03fb1a6a783cb3b48e9a4b89fd23a6c0.png

После того, как в шаблон добавлены нужные данные, их можно обрабатывать, как и в случае обычного отчета. Можно выполнить сортировку, чтобы упорядочить записи в зависимости от значения одного или нескольких полей.

924bbce395ea4943b5eed42829b61519.png

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

048ede39da9443971f0fe0be9be99147.png

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

494b69bd8e6a0845b56d6234a0569426.png

Теперь, когда все готово, можно посмотреть результат для конкретной записи:

51280bcf99cf9c544254a319222e9e84.gif

Или получить окончательный результат, послав отчет на печать, сэкспортировать его в любой поддерживаемый формат (например, doc, docx, rtf, odt, html, mht, pdf) или вывести в отдельное окно в режиме предварительного просмотра. Также можно выбрать, какие записи должны войти в итоговый документ и как отделить каждую из записей.

8ec93e9d03b613f60ff3a30c2af4553e.png

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

fc9600c222299ef20fb5c6e56f4fe88d.png

Скучная стандартная форма может быть с легкостью заменена на что-то более симпатичное:

bfc660e7be38429c01290189a9e54779.png

А теперь, ложка дегтя — в настоящее время Snap представлен только на платформе WinForms.

Тем не менее, очень надеюсь, что продукт вас заинтересовал. Познакомиться с ним поближе можно, скачав триальную версию.

Во второй части статьи мы заглянем под капот и поближе познакомимся с техническими деталями. Я продемонстрирую работу с API на примере популярных задач, возникающих при подготовке отчета и постараюсь доказать, что простота использования конечным пользователем была достигнута не в ущерб функциональности. Если у вас возникли какие-то вопросы — задавайте их в комментариях, буду рад ответить всем.

© Habrahabr.ru