Назначение

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

Пример использования: при нажатии на строку с данными по категории, сегменту клиента и статусу открывается детализированный отчет, отфильтрованный по этим параметрам.

Принцип работы

Параметры фильтрации передаются в 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.

Примечание — для корректной передачи фильтров:

  1. Названия полей (алиасы) в исходном отчeте должны точно совпадать с названиями полей в целевом отчeте.
  2. Поля, по которым должна происходить фильтрация, обязательно должны быть размещены на полке «Фильтры» в настройках компонентов целевого отч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) совпадают с теми, что вы используете в таблице. Остальные настройки (гиперссылка, размещение на полке «Значения») выполняются уже внутри таблицы одинаково для обоих способов.

Как работает URL-кодирование специальных символов?

URL-кодирование специальных символов

В коде мы собираем URL из нескольких частей. Первая часть – это адрес целевого отчета с уже закодированным «скелетом» JSON: в нем есть все служебные символы (%7B, %22, %3A, %2C, %7D). Вместо значений полей мы подставляем реальные данные из текущей строки таблицы (category, customer_segment, status). При этом мы обрабатываем каждое значение функцией REPLACE(..., ' ', '%20'), чтобы заменить пробелы – они чаще всего встречаются в данных (например, «Бытовая техника»). Если в ваших данных есть другие специальные символы (кавычки, амперсанды, слеши), их тоже нужно заменить – используйте для этого соответствующие коды из таблицы ниже.

При формировании параметра globalFilters используются следующие коды:

Символ Код
{ %7B
} %7D
" %22
: %3A
, %2C
пробел %20

В настройках колонки установите поле «Конвертировать в гиперссылку» в позицию «Да».

В результате значение поля станет кликабельной ссылкой.

Возможные ошибки

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

 

Результат

После настройки пользователь сможет перейти из одного отчета в другой по ссылке в таблице.

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

Связи контента