Создание ссылки-перехода между отчетами с передачей фильтров - Публичная база знаний Modus
Назначение
Функция позволяет создать в отчете ссылку, при переходе по которой открывается другой отчет с автоматически примененными фильтрами. Значения фильтров передаются из выбранной строки таблицы.
Пример использования: при нажатии на строку с данными по категории, сегменту клиента и статусу открывается детализированный отчет, отфильтрованный по этим параметрам.
Принцип работы
Параметры фильтрации передаются в URL отчета через параметр globalFilters в формате JSON, закодированном для использования в ссылке.
Пример JSON:
{
"category": "Бытовая техника",
"customer_segment": "Розничный",
"status": "В процессе"
}
Чтобы ссылка работала корректно, исходный JSON необходимо преобразовать в URL-совместимый вид. Это делается для того, чтобы специальные символы (фигурные скобки {}, кавычки ", двоеточие : и пробелы) не нарушали структуру URL-адреса. Вместо них подставляются специальные коды (например, пробел заменяется на %20).
Примечание — например, строка %22category%22%3A%22 в закодированном виде означает фрагмент "category":".
После URL-кодирования:
%7B%22category%22%3A%22%D0%91%D1%8B%D1%82%D0%BE%D0%B2%D0%B0%D1%8F%20%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0%22%2C%22customer_segment%22%3A%22%D0%A0%D0%BE%D0%B7%D0%BD%D0%B8%D1%87%D0%BD%D1%8B%D0%B9%22%2C%22status%22%3A%22%D0%92%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%B5%22%7D
Примечание — по такому же принципу работает кнопка «Скопировать ссылку на отчёт с текущими фильтрами», которая доступна в интерфейсе отчёта. Она формирует аналогичную ссылку, автоматически кодируя выбранные в данный момент фильтры.

В примере, который будет рассмотрен ниже:
- Исходный отчeт — это тот отчeт, в котором находится таблица со ссылкой (откуда происходит переход).
- Целевой отчeт — это отчeт, который должен открыться по ссылке (куда происходит переход), и в котором уже настроены фильтры по нужным полям.
Далее будет рассмотрен пример на основе таблицы (компонент «Таблица») исходного отчета, в которой есть поля категории, сегмента клиента и статуса. Эти поля мы будем использовать для передачи фильтров в целевой отчет.
Шаг 1. Определите поля для передачи
Выберите поля текущего отчета, значения которых должны использоваться в качестве фильтров в целевом отчете.
Пример полей для фильтрации: category, customer_segment, status.
Примечание — для корректной передачи фильтров:
- Названия полей (алиасы) в исходном отчeте должны точно совпадать с названиями полей в целевом отчeте.
- Поля, по которым должна происходить фильтрация, обязательно должны быть размещены на полке «Фильтры» в настройках компонентов целевого отчeта.
Шаг 2. Создайте поле со ссылкой
Ссылка создаeтся с помощью вычисляемого поля.
Добавьте вычисляемое поле на полку «Значения» компонента таблицы, перейдите в редактирование поля.
Сформируйте URL с использованием функции CONCAT и укажите его в вычисляемом поле. Пример:
CONCAT(
'https://demo2.modusbi.ru/report/1548?globalFilters=%7B',
'%22category%22%3A%22',
REPLACE(CAST(category AS VARCHAR), ' ', '%20'),
'%22%2C',
'%22customer_segment%22%3A%22',
REPLACE(CAST(customer_segment AS VARCHAR), ' ', '%20'),
'%22%2C',
'%22status%22%3A%22',
REPLACE(CAST(status AS VARCHAR), ' ', '%20'),
'%22%7D'
)
где:
- https://demo2.modusbi.ru/report/1548 — ссылка на целевой отчет;
category,customer_segment,status— поля текущего набора данных;- REPLACE(..., ' ', '%20') заменяет пробелы на URL-код %20.

Примечание — если вы предпочитаете создавать такое поле заранее – на уровне набора данных, – код будет почти таким же, но в конце добавляется AS report_link (потому что в наборе данных нужно явно задать имя поля). Например:
CONCAT(
'https://demo2.modusbi.ru/report/1548?globalFilters=%7B',
'%22category%22%3A%22',
REPLACE(CAST(category AS VARCHAR), ' ', '%20'),
'%22%2C',
'%22customer_segment%22%3A%22',
REPLACE(CAST(customer_segment AS VARCHAR), ' ', '%20'),
'%22%2C',
'%22status%22%3A%22',
REPLACE(CAST(status AS VARCHAR), ' ', '%20'),
'%22%7D'
) AS report_link
Логика при этом не меняется: поле всё так же формирует ссылку с подставленными значениями из строки. Главное – убедиться, что в наборе данных имена полей (category, customer_segment, status) совпадают с теми, что вы используете в таблице. Остальные настройки (гиперссылка, размещение на полке «Значения») выполняются уже внутри таблицы одинаково для обоих способов.
В настройках колонки установите поле «Конвертировать в гиперссылку» в позицию «Да».
В результате значение поля станет кликабельной ссылкой.

Возможные ошибки
| Проблема | Причина |
|---|---|
| Отчет не открывается | Указан неверная ссылка на отчет (ID отчета) |
| Фильтры не применяются | Названия ключей JSON не совпадают с названиями фильтров |
| Ссылка работает некорректно | Ошибка в кодировании URL |
| Не передаются значения с пробелами | Не выполнена замена пробелов на %20 |
| Фильтрация отсутствует | В целевом отчете отсутствуют необходимые поля для применения фильтров |
Результат
После настройки пользователь сможет перейти из одного отчета в другой по ссылке в таблице.

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