Одним из существенных изменений, появившихся в Dynamics NAV 2009, стал новый способ представления данных конечному пользователю. Обычно данные хранятся в таблицах базы данных, при этом структура таблиц базы данных диктуется требованиями нормализации, а не удобством пользователя. Для доступа к данным пользователь использует отдельные механизмы. В предыдущей версии, Dynamics NAV 5.0, это были формы и отчеты.
В версии 2009 вместо объектов Формы стали использоваться объекты Страницы. Также изменения затронули объекты Отчеты. Теперь при формировании отчетов используется технология SQL Reporting Services, а макет отчета создается в Visual Studio.
Если фраза «макет отчета теперь создается в Visual Studio» вас печалит, не отчаивайтесь. Во-первых, стоит отметить, что в ролеориентированный клиент NAV2009 включена поддержка классических отчетов. Это значит, что если из ролеориентированного клиента запустить отчет, для которого не был создан макет, то будет открыт классический клиент, а в нем будет запущена классическая версия отчета. Эта возможность позволяет выполнять переход на ролеориентированный клиент постепенно. Кроме того, как оказалось на практике, новые возможности полностью компенсируют дискомфорт, связанный с изучением нового продукта. В частности SQL Reporting Services позволяет:
- Использовать диаграммы и графические представления данных.
- Широкий набор агрегированных показателей: не только Сумма, но и Среднее, Максимальное, Минимальное значение и т.п.
- Интерактивные возможности: сортировка, динамическое скрытие/отображение данных
- Стандартный экспорт в Excel и PDF.
Чтобы использовать преимущества, которые предоставляют новые технологии, потребуется использовать трехзвенную архитектуру (SQL Server – Dynamics NAV Server– Roleoriented Client). Разработка отчетов по-прежнему выполняется в классическом клиенте, за исключением макета, который, как уже отмечалось выше, создается в Visual Studio. В отличие от страниц – новых объектов, которые в ролеориентированном клиенте заменили формы, отчет для классического клиента и отчет для ролеориентированного клиента это по-прежнему один объект. Теперь он состоит не только из знакомых компонентов:
- Элементы данных (Data Items)
- Секции (Sections)
- Форма запроса (Request Form)
Но также включает новые компоненты:
- Макет отчета (Layout)
- Страница запроса (Request page)
Так как для большинства программирующих консультантов SQL Reporting Services и Visual Studio являются новыми технологиями, в серии статей планируется дать довольно детальное описание большинства способов, которые могут пригодиться при работе с отчетами в Dynamics NAV 2009. В данной же статье мы ограничимся обзором инструментария, с которым нам предстоит работать.
Итак, приступим. Для начала нужно добыть Visual Studio. Нужен не весь пакет достаточно скачать Microsoft Visual Web Developer 2008 Express Edition с сайта http://www.microsoft.com/express/download/default.aspx. Это бесплатная версия, единственно, что возможно придется зарегистрироваться (бесплатно) в течение 30 дней. Кроме того, потребуется установить Microsoft Report Viewer Add-on for Visual Web Developer 2008 Express Edition (http://www.microsoft.com/downloads/details.aspx?FamilyID=b67b9445-c206-4ff7-8716-a8129370fa1d&displaylang=en). После того как все требуемые программы установлены (включая NAV и SQL Server) можно приступать.
В Microsoft Dynamics NAV Classic Client:
- Щелкните Tools > Object Designer. Откроется Object Designer.
- Щелкните кнопку Report, чтобы открыть список отчетов.
- Найдите отчет 1 Chart of Accounts (в отчете ничего менять не планируется, поэтому это может быть любой отчет).
Рассмотрим какие новые опции появились в дизайнере отчетов.
- Щелкните View. Среди знакомых пунктов меню появилось новые:
- Request Page – открывает Request Option Page Designer, который используется при создании и редактировании страницы запроса.
- Actions – открывает Actions Designer, активен при открытом Request Option Page Designer
- Layout – открывает Visual Studio для создания или редактирования макета отчета.
- Щелкните View. Среди знакомых пунктов меню появилось новые:
- Create Layout Suggestion – при выборе данного пункта система автоматически создаст макет отчета в Visual Studio на основании секций отчета. Обратите внимание, что новый макет заменит существующий.
- Delete Layout – удаляет макет отчета.
- Так как для данного отчета уже существует макет, то для просмотра и редактирования макета щелкните View > Layout. Откроется Visual Studio.
Изначально окно должно выглядеть так:
Поясню, что мы видим на рисунке. В первую очередь обратим внимание на окна:
- Solution Explorer – окно, которое содержит список файлов, входящих в проект. Чтобы открыть это окно щелкните View > Solution Explorer. В принципе это окно используется редко, поэтому его можно смело закрыть, чтоб освободить место для других окон.
- Report.rdlc – собственно сам макет. Чтобы отобразить это окно щелкните в Solution Explorer пункт Report.rdlc.
- Report.xsd – это XML Schema, в которой содержится описание набора данных (DataSet). Набор данных формируется автоматически на основании содержимого секций отчета. Это окно при работе над макетом отчета не требуется.
- Properties – окно свойств. Свойств много. Именно для окна Properties мы освободили место закрыв окно Solution Explorer. Чтобы отобразить это окно щелкните View > Properties Window. Обратите внимание, что для ряда элементов управления можно вызвать отдельное окно свойств (оно назывется Property Pages). Для этого нужно щелкнуть по элементу управления правой кнопкой мыши и выбрать пункт Properties. В зависимости от ситуации иногда удобнее пользоваться то одним, то другим.
- Website DataSource – в данном окне перечислены наборы данных и сами данные. Чтобы отобразить это окно щелкните Data > Show Data Sources. При работе над отчетом, это окно будет часто использоваться.
- Toolbox – инструменты. Содержит перечень элементов управления, которые можно использоваться в макете. На данном рисунке это окно свернуть (надпись Toolbox слева от окна Website DataSource). Чтобы отобразить это окно щелкните View > Toolbox. При работе над отчетом, это окно будет часто использоваться. Поэтому его стоит расположить под окно Website DataSource. Инструментов Visual Studio предлагает великое множество, но для вставки в макет годятся только те, что находятся в группе Report Items, остальные элементы управления недоступны. Чтобы отображать в окне только нужные элементы управления щелкните по окну Toolbox правой кнопкой мыши и уберите флажок с пункта Show All.
- Error List. Это окно свернуто и находится в нижнем левом углу. В нем отображается перечень ошибок компиляции. Так как проверка корректности макета выполняется из Dynamics NAV, то это окно не используется, поэтому его можно закрыть.
Кроме того, в верхней части окна находятся панели инструментов:
- Standart. Содержит полезные кнопки: Сохранить, Отменить, а также кнопки вызовов окон Toolbox и Properties.
- Report Borders и Report Formating. Эти панели инструментов пригодятся при изменении некоторых свойств элементов управления, таких как размеры шрифта, его цвет или границы ячейки.
- Layout. Используется для работы с макетом в целом. Например, для выравнивания нескольких элементов управления по левому краю.
Visual Studio представляет разработчику широкие возможности по настройке своего рабочего места. Мне видится удобной работа с такими настройками окон:
Рассмотрим некоторые моменты детальнее.
Как видно на рисунке, в макете можно создать секции Page Header и Body. Как не трудно догадаться, также можно создать секцию Page Footer. Чтобы добавить секцию Page Header щелкните Report > Page Header. Чтобы добавить секцию Page Footer щелкните Report > Page Footer. Также можно щелкнуть правой кнопкой мыши по серой области в окно Report.rdlc, затем выбрать в контекстном меню соответствующий пункт. Обратите внимание, что при выключении секций Page Header или Page Footer, система удаляет все расположенные на них элементы управления. К счастью в Visual Studio работает многошаговая отмена.
Итого в макете может быть три секции, при этом каждая секция выводится один раз (в отличие от классического клиента, где секция body выводилась столько раз, сколько записей обрабатывалось в элементе данных). В макете для вывода повторяющихся данных используется элемент управления Table – таблица. В ней тоже можно создать заголовок, строки, а также она используется для создания промежуточных и общих итогов.
Раз зашла речь о таблицах стоит отметить одну особенность. В классическом клиенте вложенные элементы данных (таблицы) обрабатывались последовательно. Т.е. сначала таблица Менеджеры, а затем таблица Клиенты, которая связана с таблицей Менеджеры (связь один-ко-многим). В SQL Reporting Services передается только одна плоская (flattened) таблица - результат объединения двух исходных таблиц. Т.е. эта таблица будет содержать и поля из таблицы Менеджеры и поля из таблицы Клиенты.
Пример. В классическом клиенте:
- Менеджер А
- Клиент 1
- Клиент 2
- Клиент 3
- Менеджер Б
- Клиент 4
- Клиент 5
В SQL Reporting Services таблица будет одна:
- Менеджер А, Клиент 1
- Менеджер А, Клиент 2
- Менеджер А, Клиент 3
- Менеджер Б, Клиент 4
- Менеджер Б, Клиент 5
При этом в плоскую таблицу попадут не все существующие поля исходных таблиц, а только те, которые присутствуют в секциях отчета. Кроме того если в секциях таблицы есть элементы управления, у которых в свойстве SourceExpr указаны переменные (локальные или глобальные), то эти переменные тоже станут полями плоской таблицы.
Группировка данных (в данном примере это группировка по менеджеру) выполняется с помощью настройки соответствующих свойств у элемента управления Table, вставленного в секцию Body.
В завершение рассмотрим, что происходит при выборе пункта меню View > Layout в Repopt Designer классического клиента. При выборе пункта меню View > Layout система выгружает (создает, если макета не существовало) проект Visual Studio в папке C:\Users\<пользователь>\AppData\Local\Temp\Microsoft Dynamics Nav\Report1\ReportLayout, в проект входят следующие файлы:
- Report.rdlc
- Report.xsc
- Report.xsd
- Report.xss
- ReportLayout.sln
- Web.config
Далее запускается Visual Studio и в ней открывается проект. Хотя в этом нет необходимости, но запустить Visual Studio и открыть проект можно вручную, для этого нужно щелкнуть мышью по файлу ReportLayout.sln.
После того как макет был изменен в Visual Studio его нужно сохранить. Для этого нужно щелкнуть File > Save Report.rdlc. Также можно просто закрыть Visual Studio.
После того как вы снова вернулись в классический клиент нужно дать системе понять, что макет можно загружать. Для этого можно выбрать другой элемент данных. Dynamics NAV проверит файл макета и если он был изменен, то система предложит загрузить измененный макет.

После того как макет загружен в Dynamics NAV нужно выполнить компиляцию. Если в макете есть ошибки, то они будут выявлены на этапе компиляции. Для исправления ошибок нужно снова запустить Visual Studio (View > Layout).
Чтобы просмотреть отчет в ролеориентированном клиенте этот отчет должен быть включен в ролевой центр или панель навигации. Также отчет можно запустить, щелкнув кнопку Пуск > Выполнить (Win+R) и указав DynamicsNAV:////runreport?report=ReportID, где ReportID это идентификатор отчета (для отчета Chart of Accounts вместо ReportID следует указать значение 1). Такой способ запуска может быть полезен на этапе тестирования отчета.
Андрей Панько >>
Dynamics NAV MVP
apanko@rabota-na-rezultat.ru



