Связь одной таблицы с другой, осуществляется через поле Селект.
Особенностью поля является то, что оно хранит строковое значение являющееся 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, то мы берем значение
.
Если вам необходимо взять отображение
, то используется #s.select_field
, а для select параметр sfield
вместо field
. Если это индивидуальный селект то в параметры tfield
необходимо указать поля от которых зависит расчет.
Обращения через
#s.fieldname
иsfield
сильно нагружают сервер, тк при каждом использовании рассчитывают отображения вызываемых селектов.
Параметр поля множественные значения. При включенном параметре в поле будет храниться не одно значения, а список.
Вы можете настроить отображение множественного селекта и показывать только количество значений — параметр поля Отображение множественного селекта в ячейке.
Обратите внимание: если вы создали одинарный селект, а потом перевели его в множественный вам необходимо пересчитать все строки таблицы.
Аналогично для изменения множественный — одинарный. В этом случае при наличии выбранных в поле значениях часть из них будет утеряна.
Параметр поля таблица селекта для изменения. Если выбрана таблица, то если у пользователя есть возможность ее изменять — он будет видеть дополнительные клавиши управления.
Можно обращаться к разным таблицам истоникам в зависимости от параметров в полях текущей или другой таблицы.
Параметр поля панель селекта для изменения.
По умолчания основанием (значением) является id в таблице источнике. Но вы можете указать другое строковое поле задав параметр bfield
:
ex_3: selectRowListForSelect(table: 'select_table'; field: 'select_field'; bfield: 'select_base')
Тип поля Селект-дерево — позволяет оформить выбор значения в виде дерева.
Ожидает результат работы функции selectRowListForTree.
Основным отличием функции является наличие параметра parent
в таблице источнике, по которому определяется родительский элемент.
Тотум поддерживает два варианта дерева:
Первый: когда поле parent
в таблице источнике берет значения из этой же таблицы (источника). В этом случае будет возможно разрешить выбирать папки папки можно выбирать.
Код селекта поля Родительская категория:
=: selectRowListForTree(table: $#ntn; field: 'category'; parent: $#nf)
Таблица источник может быть скрыта из дерева для редактирующих ее ролей. Тогда изменение будет происходить через целевое поле.
Второй: когда поле parent
является селектом из третей таблицы. В этом случае папки выбирать нельзя.
В обоих случаях должен быть выбран соответствующий вариант в параметре поля дерево строится по одной таблице.
Параметр поля множественные значения.