VK Video
Какой функцией можно открыть другую таблицу?
Базовая функция для открытия другой таблицы это linkToTable.
=: linkToTable(table: 'table'; title: "Заголовок окна"; target: "iframe")
Можно ли ее открыть во всплывающем окне и задать его размер?
Да, за это отвечает параметр target
:
iframe
— в iframe поверх остальных окон.
blank
— в новом окне (для корректной работы требуется разрешить открытие всплывающих окон в браузере)
parent
— в базовом нижнем окне, все открытые вложенные окна будут закрыты.
self
— в текущем окне. Если параметр не указан — обрабатывается как self.
Должно быть указано что-то одно из этого списка.
Для задания размера окна iframe
по ширине используется параметр width: 800
. Цифра — это жесткая ширина в пикселях.
Можно передать не цифру, а "80vw"
, тогда цифра перед vw будет определять процент от ширины окна браузера.
Можно ли передать в открываемую таблицу значения префильтров, что бы увидеть нужные строки?
Если в целевой странице у вас есть префильтр, то в него можно передать значение, параметром filter
:
=: linkToTable(table: 'table'; title: "Заголовок окна"; filter: 'fl_filter' = #number; target: "iframe")
Значение передаваемого префильтра будет зашифровано сессионнм ключом и передано в адресной строке. Поэтому такая передача имеет ограничение на объем — нельзя в filter
передать большие списки или массивы!
Поле префильтра должно быть редактируемым для роли. Оно может быть скрытым, но редактируемым должно быть обязательно.
Таким образом можно связывать таблицы между собой.
Например из таблицы Склад иметь возможность открыть список Движений по товару по конкретному товару.
Как избежать ошибки при передаче в префильтры больших списков?
Для того, что бы иметь возможность обрабатывать большие списки в linkToTable
есть такой подход:
Вы создаете два! поля префильтра.
В первое передаете значение по filter
. Это должно быть короткое значение, например список ролей или номер роли от которой посчитается ограничивающий список категорий. Любо набор параметров, который вам позволит посчитать ограничивающий список во втором поле.
Первое поле префильтра не привязывается к строчной части. Настройка name поля в строчной части остается пустой.
Во втором поле префильтра считаете нужный список ограничений кодом и это поле привязывается к строчной части.
Какие настройки видимости и изменения должны быть у полей префильтра, чтобы это сработало?
Первое поле должно быть редактируемым, но может быть скрыто для роли. по filter
значения можно передать только в редактируемые для роли поля префильтров.
Второе поле, которое рассчитывается кодом может быть нередактируемым и скрытым.
Как открыть таблицу и сразу открыть строку добавления с заполненными параметрами?
У linkToTable есть еще один параметр, понижающий количество кликов пользователей и повышающий удобство — это field
.
Если вы передаете значение в field
и в целевой таблице доступна строка добавления, то при открытии окна сразу будет открыта строка добавления и в указанне поля будут подставлены значения.
Например: у нас есть заказ и мы по linkToTable
открывает таблицу оплат, мы сразу можем в сумму оплаты ставить рассчитанный остаток оплаты по этому заказу.
=: linkToTable(table: 'payments'; filter: 'fl_order' = #order_number; field: 'summ' = $calc)
calc: #order_summ - $payments
payments: listSum(list: $list)
list: selectList(table: 'payments'; field: 'summ'; where: 'order' = #order_number)