Страница 1 из 1

Как передать переменную в отчет при вызове из браузера

Добавлено: 09 ноя 2016, 16:14
aquilax
Коллеги, помогите разобраться с передачей данных в PHP и JSON.
Правда, вопрос даже не по Stimulsoft'у, но очень смежный. Вопрос про технологию передачи переменной.
Может быть вы подскажете какой-то иной способ, чтобы решить мою задачу?

Я пытаюсь сделать так.
Отчет вызывается в браузере ссылкой:
http://bitrix24.xxxx.ru/otchety/stimuls ... report.mrt
Эта ссылка расположена на странице с данными клиента, в том числе в коде страницы мы знаем его ID.
Мы можем передать ID как переменную в браузерной строке, и строить отчет через запрос к базе.
Но мне нельзя открыто передавать в отчет данные, то есть не могу их встроить в браузерную строку. Даже в зашифрованном виде решили этого избежать.
Решили попробовать поработать с JSON.
Сам отчет теперь строится на основании данных, получаемых по JSON от файла http://test.php
То есть взаимодействие с базой вынесено в http://test.php.
Но возникает вопрос как передать в этот файл наш ID клиента со страницы, чтобы отобразить данные, которые нам необходимы?
Я нашла, что можно использовать ajax или jquery, но всё равно ясно, что это будут два разных обращения к http://test.php и целостых данных мы не увидим.
Какие есть варианты построить отчет?

Re: Как передать переменную в отчет при вызове из браузера

Добавлено: 10 ноя 2016, 11:05
Aleksey
Здравствуйте,

Если мы правильно поняли, в отчете вы используете JSON источник данных, и в качестве пути к данным используется http://test.php, который возвращает данные, правильно?

Так же в URL у вас находится user id
http://bitrix24.xxxx.ru/otchety/stimuls ... erid=12345

В этом случае, попробуйте следующий метод:
1) в самом отчете создайте переменную с именем "userid", тип string
2) в источнике данных, в пути к JSON файлу используйте такую конструкцию: http://test.php?userid={userid}

В этом случае, генератор отчетов вычислит выражение в фигурных скобках и подставит значение соответствующей переменной из URL параметров. Регистр имени переменной должен совпадать.

Спасибо.

Re: Как передать переменную в отчет при вызове из браузера

Добавлено: 10 ноя 2016, 11:29
aquilax
Не совсем так!
"Так же в URL у вас находится user id
http://bitrix24.xxxx.ru/otchety/stimuls ... erid=12345" - нельзя передавать userid открытым текстов в ссылке
нужно найти иной способ передать userid
вот мы подумали использовать по этой причине json
при открытии ссылки методом ajax передается в http://test.php userid, а отчет использует http://test.php как источник данных json.
но это не будет работать, т.к. разные потоки

ВОПРОС в том, помогите найти способ передать userid в отчет при вызове его из браузера, не включая переменные в строку браузера: http://bitrix24.xxxx.ru/otchety/stimuls ... report.mrt

Re: Как передать переменную в отчет при вызове из браузера

Добавлено: 10 ноя 2016, 14:37
Aleksey
Здравствуйте,

Пожалуйста уточните, на стороне сервера в коде PHP (например, в момент запроса отчета или данных для него), известен userid? Со стороны сервера его можно как-то передать в test.php ?

Спасибо.

Re: Как передать переменную в отчет при вызове из браузера

Добавлено: 10 ноя 2016, 15:18
aquilax
нет, не известен, мы его туда (в код php) как раз хотим передать в момент запроса URL-а отчета. И мы можем его передать туда в момент клика по URL-у отчета методами ajax (не в браузерной строке). Поэтому можно считать, что при клике на URL отчета мы передали в файл php переменную userid. Но как получить данные на основе именно этой переданной переменной в отчете не понятно. Ведь отчет в своем коде далее снова независимо обращается к коду php. И связь с переданной переменной ведь теряется... Этот вопрос не в рамках Стимулсофта скорее всего.
(поясню, в коде php выполняется генерация данных JSON на основе userid, отчет их строит)

Re: Как передать переменную в отчет при вызове из браузера

Добавлено: 11 ноя 2016, 10:25
Aleksey
Здравствуйте,

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

Спасибо.