Добавление к проекту существующих отчётов

Для экономии времени воспользуемся 2-мя готовыми отчётами.

  1. Сначала добавьте необходимые хранимые процедуры и функции, используя готовые запросы «05_create_usr_RS_GL_Transaction.sql» и «06_create_usr_RS_DetailedCustomerTurnoverByAccountNumber.sql»
  2. После этого вернитесь в Visual Studio и щёлкните правой кнопкой мыши на папке «Отчёты» обозревателя решений, затем выберите «Добавить -> Существующий элемент». Перейдите в папку «Мои Документы» и выберите файл «GLTransaction.rdl»
  3. После добавления отчёта откройте его и попытайтесь просмотреть, указав № проводки «310001». Оставим отчёт «как есть»
  4. Теперь добавим второй отчёт «CustomerTurnover.rdl»

Перейдите на закладку «Данные. Вы получите ошибку:

Источник данных не найден

Нам предстоит изменить ссылку с несуществующего источника данных на существующий. Обратите внимание, Visual Studio сама изменила тип команды на Text. Внимание!!! Это очень важно: если Вы оставите тип команды «Text» параметры в хранимую процедуру передаваться не будут!!!

Конструктор отчётов принудительно изменил тип команды на «Text»

Чтобы всё сделать правильно, проделайте следующее:

  1. Сначала измените поле «Источник данных»
  2. Затем скопируйте в буфер строку запроса
  3. После этого измените тип команды на «StoredProcedure» (поле «Строка запроса» при этом будет очищено)
  4. Вставьте из буфера строку запроса и нажмите «ОК».

Как проще всего изменить запрос в наборе данных. Рекомендуемая последовательность действий

После этого нажмите на пиктограмме «Обновить». Убедитесь, что в наборе данных «ExecSQL» появилось поле «TransactionNumber».

Перетащите его в пустую ячейку 5-й строки таблицы. Установите цвет шрифта таким, чтобы он напоминал ссылку, также добавьте подчёркивание.

Перейдите в редактированию свойств поля. Выберите закладку «Перемещение» и в поле «Перейти к отчёту» выберите отчёт «GLTransaction». Нажмите параметры и заполните поля, как на картинке ниже:

Установка параметров при переходе к другому отчёту из текущего отчёта

Добавьте подсказку в виде следующего текста: «Щелкните на номере проводки, чтобы просмотреть подробности»

Заполнение подсказки: Поле «ToolTip»

Сохраните отчёт и опубликуйте его на сервере в папке «Корневая папка > ReportRepository > iScala > SL». Примечание: Отчёт «GLTransaction» уже имеется на сервере, его публиковать не надо. Запустите отчёт и убедитесь, что он работает.

Проверка работоспособности отчёта CustomerTurnover на сервере

Создайте связанный отчёт с тем же названием в папке «Accountants». Скопируйте название и описание из «материнского» отчёта. Нажмите кнопку «Изменение расположения», чтобы указать, где будет создан связанный отчёт.

Создание связанного отчёта в папке «Accountants»

Выберите требуемую папку и нажмите «ОК»:

Создание связанного отчёта в папке «Accountants»: выбор папки

Вернувшись в предыдущую форму, убедитесь, что всё сделано правильно и нажмите «ОК»:

Создание связанного отчёта в папке «Accountants»: Папка изменена

Reporting Services создаст связанный отчёт и перейдёт к его просмотру:

Просмотр связанного отчёта на сервере

Попробуем выполнить переход по ссылке:

Переход из отчёта в отчёт по ссылке

Тоже работает.

Теперь попробуем выполнить отчёт от имени пользователя, не обладающего административными правами. Для этого запустите Internet Explorer от имени пользователя «Accountant»:

Запуск обозревателя от имени другого пользователя

Используйте пиктограмму «Home», чтобы перейти в корневую папку сервера отчётов, затем найдите нужную папку и требуемый отчёт и запустите его:

Запуск отчёта от имени другого пользователя

Отчёт работает. Попробуем перейти по ссылке:

Ошибка, недостаточно прав

Ошибка! Всё дело в особенности перехода по ссылке. При переходе по ссылке загружается не связанный отчёт, а оригинал. А он лежит в папке, в которую «простой смертный» прав не имеет. Для того чтобы «обойти» это необходимо предоставить пользователю или группе, в которую он входит, права на данный конкретный отчёт (имеется в виду «GLTransaction»)

Сверните окно с Internet Explorer’ом, «запущенным» от имени пользователя «Accountant» и вернитесь в папку, где хранится оригинал отчёта «GLTransaction». Перейдите к свойствам отчёта, затем к закладке «Безопасность». Нажмите «Изменить параметры безопасности элемента»

Изменение параметров безопасности отчёта

Согласимся с предложением и добавим новую роль для группы ScalaUsers:

Создание назначения ролей для группы с правами «Обозреватель»

Вот так будут выглядеть параметры безопасности для отчёта «GLTransactions»

Параметры безопасности отчёта после изменения

Разверните окно с Internet Explorer’ом, «запущенным» от имени пользователя «Accountant» и нажмите «F5». Теперь всё нормально:

Теперь отчёт доступен для пользователя Accountant

Но возникает законный вопрос, а не может ли пользователь, воспользовавшись ссылкой на папки перейти к другим отчётам? Попробуем кликнуть на ссылке «SL» навигационной панели:

Нельзя просмотреть содержимое папки: недостаточно прав

Всё в порядке: пользователь имеет право на запуск отчёта, лежащего в папке, но не на саму папку, что и требовалось.

Содержание: