⟵ сюдатуда ⟶
  • Установка
  • Установка на Ubuntu
  • Обновления
  • Установка PRO
  • Бэкапы
  • Multi/no-multi
  • Консольная утилита bin/totum
  • Основы для пользователей
  • Интерфейс и компоновка
  • Таблицы и их параметры
  • Префильтр
  • Поля и их параметры
  • Синтаксис
  • Код, действия, форматирование
  • Реляционные взаимосвязи
  • Селект
  • Значение — Отображение
  • Код Селекта
  • Индивидуальный расчет селекта
  • Гарантированный показ отображения выбранного значения
  • Берем значение через # или select
  • Множественные Селекты
  • Редактирование источника из Селекта
  • Обращения к источнику через linkToPanel
  • Другой basefield
  • Селект-дерево
  • Варианты построения дерева
  • Мультизначения в Селект-дерево
  • Порядок расчета и единицы пересчета
  • Сравнения
  • Функции
  • Отладка
  • Автозаполнение расчетных и временных
  • Дублирование строк и циклов
  • Печать и CSV
  • API
  • Роли и пользователи
  • Нотификации
  • Действия по расписанию
  • Системные таблицы
  • Дополнительные интерфейсы
  • Структура файлов
  • Структура базы
  • [PRO] Деревья
  • [PRO] Анонимные таблицы
  • [PRO] Внешние формы
  • [PRO] Экспорт и импорт таблиц
  • [PRO] MeiliSearch
  • [PRO] Базы данных
  • [PRO] Настройка CSS
  • [PRO] Custom docs
  • [PRO] LDAP AD
  • [PRO] Версии файлов
  • [PRO] List-unsubscribe
  • [PRO] Динамические поля
  • [PRO] Only Office
  • [PRO] Auth Tokens
  • [PRO] 2FA
  • [PRO] Superlang
  • [PRO] Profiler
  • [PRO] Подключение функций
  • [SRV] Подключение
  • [SRV] Пользовательские возможности
  • [SRV] XLSX/DOCX генераторы
  • [SRV] chatGPT
  • Реляционные взаимосвязи

    Селект

    Связь одной таблицы с другой, осуществляется через поле Селект.

    Поле Селект

    Значение — Отображение

    Особенностью поля является то, что оно хранит строковое значение являющееся id строки в таблице источнике. В терминологии Тотум — значение или основание.

    Пользователь же видит в поле не значение, а рассчитанное по формуле отображение.

    Значение - Отображение

    Код Селекта

    За расчет отображения отвечает параметр поля код селекта. Он выполняется перед отдачей данных в браузер пользователя.

    = : selectRowListForSelect(table: 'products'; field: 'product'; order: 'product' asc;  preview: 'price'; preview: 'available')
    
    

    Код селекта должен возвращать либо результат работы функций selectRowListForSelect и selectRowListForTree, либо сформированный другими способами список ассоциированных массивов.

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

    Формат массива:

    [
    {"value": 1, "title":"Alexey", "is_del": false},
    {"value": 3, "title":"Boris", "is_del": false,}
    {"value": 2, "title":"Pavel", "is_del": false,}
    ]
    
    • valueзначение поля.

    • titleотображение поля.

    • is_del — признак удаленности значения при активном параметре таблицы скрывать при удалении.

    Можно сформировать необходимый массив вручную функцией rowListCreate.

    Индивидуальный расчет селекта

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

    Параметр поля индивидуальный расчет селекта.

    Используется если набор значений в селекте различается от строки к строке или зависит от других полей.

    ex: selectRowListForSelect(table: 'products'; field: 'product'; where: 'price' > #min_price)
    
    

    Будьте внимательны — это сильно нагружает сервер и замедляет показ таблицы пользователю.

    Гарантированный показ отображения выбранного значения

    Часто бывает, что по условиям выборки необходимое отображение для выбранного в поле значения отсутствует. В этом случае оно будет показано в зачеркнутом виде.

    Нет отображения

    Если вы хотите, чтобы выбранное значение по-прежнему имело отображение, выполните выборку через отдельный select и добавьте текущее значение:

    //так будет зачеркнутое
    ex_1: selectRowListForSelect(table: 'select_table'; field: 'select_field'; where: 'id' > 3)
    
    //так будет дополнятся текущим
    ex_2: selectRowListForSelect(table: 'select_table'; field: 'select_field'; where: 'id' = $id)
        id: listAdd(list: $listId; item: $#nfv)
            listId: selectList(table: 'select_table'; field: 'id'; where: 'id' > 3)
    

    Берем значение через # или select

    Когда мы берем значение Селекта через #, @ или select, то мы берем значение.

    Если вам необходимо взять отображение, то используется #s.select_field, а для select параметр sfield вместо field. Если это индивидуальный селект то в параметры tfield необходимо указать поля от которых зависит расчет.

    Обращения через #s.fieldname и sfield сильно нагружают сервер, тк при каждом использовании рассчитывают отображения вызываемых селектов.

    Множественные Селекты

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

    Множественные значения

    Вы можете настроить отображение множественного селекта и показывать только количество значений — параметр поля Отображение множественного селекта в ячейке.

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

    Аналогично для изменения множественный — одинарный. В этом случае при наличии выбранных в поле значениях часть из них будет утеряна.

    Редактирование источника из Селекта

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

    Таблица для изменения

    Обращения к источнику через linkToPanel

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

    Параметр поля панель селекта для изменения.

    Другой basefield

    По умолчания основанием (значением) является id в таблице источнике. Но вы можете указать другое строковое поле задав параметр bfield:

    base

    ex_3: selectRowListForSelect(table: 'select_table'; field: 'select_field'; bfield: 'select_base')
    

    Селект-дерево

    Тип поля Селект-дерево — позволяет оформить выбор значения в виде дерева.

    Дерево

    Ожидает результат работы функции selectRowListForTree.

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

    Варианты построения дерева

    Тотум поддерживает два варианта дерева:

    Первый: когда поле parent в таблице источнике берет значения из этой же таблицы (источника). В этом случае будет возможно разрешить выбирать папки папки можно выбирать.

    По одной таблице

    Код селекта поля Родительская категория:

    =: selectRowListForTree(table: $#ntn; field: 'category'; parent: $#nf)
    

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

    Второй: когда поле parent является селектом из третей таблицы. В этом случае папки выбирать нельзя.

    В обоих случаях должен быть выбран соответствующий вариант в параметре поля дерево строится по одной таблице.

    Мультизначения в Селект-дерево

    Параметр поля множественные значения.

    Мультидерево