Для экономии времени воспользуемся 2-мя готовыми отчётами.
- Сначала добавьте необходимые хранимые процедуры и функции, используя готовые запросы «05_create_usr_RS_GL_Transaction.sql» и «06_create_usr_RS_DetailedCustomerTurnoverByAccountNumber.sql»
- После этого вернитесь в Visual Studio и щёлкните правой кнопкой мыши на папке «Отчёты» обозревателя решений, затем выберите «Добавить -> Существующий элемент». Перейдите в папку «Мои Документы» и выберите файл «GLTransaction.rdl»
- После добавления отчёта откройте его и попытайтесь просмотреть, указав № проводки «310001». Оставим отчёт «как есть»
- Теперь добавим второй отчёт «CustomerTurnover.rdl»
Перейдите на закладку «Данные. Вы получите ошибку:
Нам предстоит изменить ссылку с несуществующего источника данных на существующий. Обратите внимание, Visual Studio сама изменила тип команды на Text. Внимание!!! Это очень важно: если Вы оставите тип команды «Text» параметры в хранимую процедуру передаваться не будут!!!
Чтобы всё сделать правильно, проделайте следующее:
- Сначала измените поле «Источник данных»
- Затем скопируйте в буфер строку запроса
- После этого измените тип команды на «StoredProcedure» (поле «Строка запроса» при этом будет очищено)
- Вставьте из буфера строку запроса и нажмите «ОК».
После этого нажмите на пиктограмме «Обновить». Убедитесь, что в наборе данных «ExecSQL» появилось поле «TransactionNumber».
Перетащите его в пустую ячейку 5-й строки таблицы. Установите цвет шрифта таким, чтобы он напоминал ссылку, также добавьте подчёркивание.
Перейдите в редактированию свойств поля. Выберите закладку «Перемещение» и в поле «Перейти к отчёту» выберите отчёт «GLTransaction». Нажмите параметры и заполните поля, как на картинке ниже:
Добавьте подсказку в виде следующего текста: «Щелкните на номере проводки, чтобы просмотреть подробности»
Сохраните отчёт и опубликуйте его на сервере в папке «Корневая папка > ReportRepository > iScala > SL». Примечание: Отчёт «GLTransaction» уже имеется на сервере, его публиковать не надо. Запустите отчёт и убедитесь, что он работает.
Создайте связанный отчёт с тем же названием в папке «Accountants». Скопируйте название и описание из «материнского» отчёта. Нажмите кнопку «Изменение расположения», чтобы указать, где будет создан связанный отчёт.
Выберите требуемую папку и нажмите «ОК»:
Вернувшись в предыдущую форму, убедитесь, что всё сделано правильно и нажмите «ОК»:
Reporting Services создаст связанный отчёт и перейдёт к его просмотру:
Попробуем выполнить переход по ссылке:
Тоже работает.
Теперь попробуем выполнить отчёт от имени пользователя, не обладающего административными правами. Для этого запустите Internet Explorer от имени пользователя «Accountant»:
Используйте пиктограмму «Home», чтобы перейти в корневую папку сервера отчётов, затем найдите нужную папку и требуемый отчёт и запустите его:
Отчёт работает. Попробуем перейти по ссылке:
Ошибка! Всё дело в особенности перехода по ссылке. При переходе по ссылке загружается не связанный отчёт, а оригинал. А он лежит в папке, в которую «простой смертный» прав не имеет. Для того чтобы «обойти» это необходимо предоставить пользователю или группе, в которую он входит, права на данный конкретный отчёт (имеется в виду «GLTransaction»)
Сверните окно с Internet Explorer’ом, «запущенным» от имени пользователя «Accountant» и вернитесь в папку, где хранится оригинал отчёта «GLTransaction». Перейдите к свойствам отчёта, затем к закладке «Безопасность». Нажмите «Изменить параметры безопасности элемента»
Согласимся с предложением и добавим новую роль для группы ScalaUsers:
Вот так будут выглядеть параметры безопасности для отчёта «GLTransactions»
Разверните окно с Internet Explorer’ом, «запущенным» от имени пользователя «Accountant» и нажмите «F5». Теперь всё нормально:
Но возникает законный вопрос, а не может ли пользователь, воспользовавшись ссылкой на папки перейти к другим отчётам? Попробуем кликнуть на ссылке «SL» навигационной панели:
Всё в порядке: пользователь имеет право на запуск отчёта, лежащего в папке, но не на саму папку, что и требовалось.
Содержание:
- Цели урока, Введение: 4 уровня отчетности в Scala/iScala
- Обзор структуры БД системы
- Знакомство с MS SQL Server Reporting Services
- Практическое создание отчётов: Создание общего источника данных
- Создание простейшего отчёта без параметров
- Публикация отчёта на сервере
- Модификация отчёта
- Добавление параметра «Код компании»
- Создание отчёта с элементом «Матрица»
- Добавление к проекту существующих отчётов
- Альтернативный вариант перехода из отчёта в отчёт: переход к URL-адресу
- Отчёты с многозначными параметрами
- Использование функций: Как вывести сумму прописью?
- Пользовательские «хотелки»: «А можно сделать сортировку и Автофильтр, как в Excel’е?»
- Подписки на отчёты
- Автоматизация создания связанных отчётов при сложной структуре
- Включение отчётов в меню iScala
- Кратко о реальном использовании MS SQL Server Reporting Services в компаниях-клиентах Epicor|Scala
- Более тесная интеграция MS SQL Server Reporting Services с iScala версии 2.3 SR2
- Как в отчёт MS SQL Server Reporting Services добавить возможность скрывать и показывать подробности?