⟵ сюдатуда ⟶
  • Учебный курс
  • Создание простых таблиц и полей
  • Коды базовый уровень
  • Селекты и связь между таблицами
  • Настройки таблиц базовый уровень
  • Префильтры базовый уровень
  • Условное форматирование базовый уровень
  • Коды действия базовый уровень
  • Использование всплывающих окон
  • Как открыть другую таблицу по нажатию кнопки?
  • Скрыть хедер или футер, обновить таблицу источник при закрытии окна, закрыть окно принудительно
  • Создание временной таблицы и ее особенности
  • Как заполнить строчную часть передав данные в хедер?
  • Как использовать временную таблицу для фонового расчета и получить из нее результат не показывая ее пользователю?
  • Как открыть текстовое окно ввода и как его можно модифицировать?
  • Вызов панели с кнопками
  • Циклы базовый уровень
  • Роли и пользователи в web
  • Коды продвинутый уровень
  • Коды действий продвинутый уровень
  • Префильтры продвинутый уровень
  • Настройки полей и таблиц продвинутый уровень
  • Циклы продвинутый уровень
  • Форматирование продвинутый уровень
  • Селект-дерево
  • Выполнения кода действия по расписанию
  • Печать и отправка email
  • Нотификации
  • Взаимодействие по API
  • Адаптивность и секции
  • Графики
  • Вид таблицы панелями и поворот строчной части
  • Анонимные таблицы для неавторизованного доступа
  • Внешние формы для сбора информации
  • Обновление и бэкапирование
  • Дублирование схем и перенос таблиц между базами
  • Консольная утилита bin/totum
  • Как открыть другую таблицу по нажатию кнопки?

    link_to_table

    VK Video

    Смотреть на 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 есть такой подход:

    1. Вы создаете два! поля префильтра.

    2. В первое передаете значение по filter. Это должно быть короткое значение, например список ролей или номер роли от которой посчитается ограничивающий список категорий. Любо набор параметров, который вам позволит посчитать ограничивающий список во втором поле.

    3. Первое поле префильтра не привязывается к строчной части. Настройка name поля в строчной части остается пустой.

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

    Какие настройки видимости и изменения должны быть у полей префильтра, чтобы это сработало?

    Первое поле должно быть редактируемым, но может быть скрыто для роли. по 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)