Использование ID в URL
Создание иерархической структуры данных
Использования одних только глобальных переменных недостаточно, чтобы закрыть все потребности - мы не сможем дать ссылку на выбранную запись. Ведь значение переменной хранится только в той вкладке браузера, где оно было установлено. Для решения этой проблемы есть возможность записать необходимую информацию прямо в URL и передавать точную ссылку на конкретный элемент.
Давайте разберем, как это сделать, на конкретном примере. Сделаем так, чтобы в таблице со списком стран двойной клик по любой строке открывал информацию только о тех городах, которые относятся к данной стране. Это позволит нам реализовать навигацию с иерархической структурой данных, когда от родительского элемента можно переходить на его дочерние элементы.
Настройки страницы
В первую очередь необходимо изменить адрес страницы с таблицей городов. Для этого нужно открыть настройки соответствующего пункта меню и указать переменную :id в адресе URL.
Дальше нужно настроить навигацию, которая должна не просто переходить на указанную страницу, но и добавлять параметр ID в URL. Для этого вернемся к таблице со списком стран и настроим действия по триггеру onRowDoubleClick. Теперь при двойном клике по строке таблицы будет происходить навигация на страницу, в адресе которой будет указан ID выбранной записи.
Бизнес-процесс для получения ID из URL
Следующий шаг - это получение данного ID из URL. Данная возможность может понадобиться в самых разных бизнес-процессах, поэтому наилучшим решением станет создание отдельной функции для нее. Ее можно создать в соответствующей вкладке раздела web-приложений. При этом, в отличие от бизнес-процессов, которые ранее создавали для бэкенда, она будет выполняться не на сервере, а непосредственно на устройстве того пользователя, который ее запустил.
В БП используем следующие блоки:
- Get Current Page, для получения текущего URL.
- Split string, чтобы разбить URL на отдельные блоки, выбрав “/” в качестве разделителя.
- Для конкретной страницы мы могли бы сразу указать нужный String из полученного массива по его индексу. Но бизнес-процесс универсальный и может использоваться для URL другой структуры, поэтому лучше немного усложнить логику. Проверим количество элементов String в массиве после разбивки с помощью блока Array size.
- Блоком Subtract вычтем 3 из получившегося количества (наш элемент является вторым с конца, а сама нумерация индексов начинается с 0).
- Передадим вычисленное значение в качестве индекса в блок Array Element для получения необходимого String из массива.
- Сделаем итоговое преобразование String в Integer.
И теперь нам остается только использовать значение из созданного бизнес-процесса в GET-запросах для получения данных в таблицу.