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

    link_to_table

    Что такое временная таблица?

    Временная таблица — особый тип таблиц, создающихся при открытии их пользователем и существующих ограниченное время (по умолчанию 1 час). Потом они стираются из базы данных.

    Те если несколько пользователей откроют одну и туже временную таблицу — они увидят разные таблицы. Структура у них будет одинаковая, но наполнение данными разное.

    Зачем они используются?

    Например для отчетов или как промежуточне технические таблицы.

    Можно ли временную таблицу открыть из дерева?

    По умолчанию временная таблица доступна из дерева, но если она создается как техническая, то скорее всего из дерева ее надо будет скрыть — задав параметр роли «скрыть в дереве».

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

    Чтобы открыть временную таблицу, как обыкновенную таблицу из дерева подойдет linkToTable с которым мы уже знакомы.

    Особенностью временной таблицы является то, что в ней нет префильтра. Поэтому параметры filter применятся не будут.

    Но если мы хотим открыть временную и заполнить ее определенными данными — нам нужна функция linkToDataTable.

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

    Если мы хотим открыть временную и заполнить ее определенными данными — нам нужна функция linkToDataTable.

    У нее есть два отличающих ее от linkToTable параметра — data: $rowList и params: $row.

    • data — данные для заполнения строчной части.

    • params — данные для заполнения хедера и футера.

    Как это выглядит. Например у нас есть таблица с полем client и order в хедере и мы хотим при открытии сразу подставить туда значение нужного нам клиента, которого мы определяем из строки и з которой выполняется кнопка открытия:


    =:
    linkToDataTable(table: 'tmp_test'; title: "Окно временного расчета"; width: 800; height: "80vh"; params: $row) row: rowCreate(field: "client" = #client; field: "order" = #order_num)

    Те в params надо передать row состоящее из name полей, которые нужно заполнить и их значений.

    Обратите внимание, что в rowCreate и аналогичных функциях создающих структуру со значениями name-параметры функций заполняются через двойные кавычки. Это правило не является обязательным для правильной работоспособности — оно относится к правилам оформления кода.

    Можно ли заполнить строчную часть, а не только хедер или футер?

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


    =:
    linkToDataTable(table: 'tmp_test'; title: "Окно временного расчета"; width: 800; height: "80vh"; params: $row; data: $rowlist) row: rowCreate(field: "client" = #client; field: "order" = #order_num) rowlist:rowListCreate(field: "goods" = $list[[goods]]; field: "price" = $list[[price]]) ~list: selectRowList(table: 'order'; cycle: #order_num; field: 'goods'; field: 'price')

    Мы в этом коде забегаем немного вперед обращаясь к таблице цикла используя cycle и берем rowList из которого в goods используем колонку goods, а в price колонку price при помощи [[column]].

    Подробнее про вложенные обращения здесь, но мы их будем разбирать дальше.

    Можно ли передать только часть данных, а остальные рассчитать уже в таблице?

    Достаточно часто в строчную часть данные передаются построчно в скрытое ведущее техническое поле, а потом уже растаскиваются по полям:


    =:
    linkToDataTable(table: 'tmp_test'; title: "Окно временного расчета"; width: 800; height: "80vh"; params: $row; data: $rowlist) row: rowCreate(field: "client" = #client; field: "order" = #order_num) rowlist: rowListCreate(field: "teh" = $list) list: selectRowList(table: 'order'; cycle: #order_num; field: 'goods'; field: 'price')

    А уже в поле goods делается код:


    =:
    #teh[goods]