Описатели полей
Введение
Поля в контроллере источника данных описываются массивом. Получить описатели можно вызвав методы: getFields($rowType) и getField($name, $rowType).
Описание полей в источнике данных
Общие описатели
name - имя поля, обязательный параметр
type - тип поля в терминах LSS: string, password, status, memo, date, num, check, ref, list, icons, radio, multilist, html
caption - название поля в понятном человеку виде
len - отображаемая ширина поля в символах
maxlength - максимально допустимое кол-во символов в поле
stretch - ширина поля на максимум, по умолчанию false
default - значение поля по умолчанию, при добавлении новой строки
notnull - значение поля должно быть обязательно задано
log - изменение значения поля необходимо логировать
Числа
Справочники
Параметры поля type=«ref»
reftable - имя источника данных справочника. В терминах LSS datasource элемента ref
refrowtype - означает, что справочник является деревом. Задает тип узла, из которого можно выбирать значения. В терминах LSS row.type элемента ref
ref.params - массив, задает значения параметров при вызове справочника. Если значение параметра начинается с get( или getplus( то значение подставляется в js_value и добавляется skipempty=1, иначе значение подставляется в value. Например:
$fld['reftable']='worker';
$fld['ref.params']=array (
'filter.orgid' => "get('orgid')",
'filter.code' => "QWERT"
);
соответствует LSS описанию:
<field type="ref" ...>
<ref datasource="worker">
<param name="filter.orgid" js_value="get('orgid')" skipempty="1"/>
<param name="filter.code" value="QWERT"/>
</ref>
</field>
параметры начитываемых из справочника полей:
refid - имя поля справочника (type=ref)
refname - имя поля в источнике данных справочника, связанного с текущем полем (по умолчанию name)
reftext - имя поля справочника, отображаемого в диалоге выбора значений, если не задано, то из refname
dlgwidth - ширина диалога выбора значения из справочника
Списки: list, radio, icons
list - список значений, разделенный ',' или ';'. Возможны варианты:
список вида: код=значение;код=значение;код=значение. В таком варианте в поле хранится код, а отображается значение.
список вида: значение;значение;значение. В таком варианте все зависит от basetype. Если basetype=string, то в поле хранится значение. Если basetype=num то в поле хранится порядковый номер (от 1), а отображается значение.
basetype - string или num
Права и видимость
visible - видимость поля, по умолчанию true
readonly - запрет на правку поля, по умолчанию false
js_visible - выражение JavaScript задающее видимость поля, отрабатывается только на клиенте
js_readonly - выражение JavaScript задающее запрет на правку поля, отрабатывается только на клиенте
Взаимодействие клиента с сервером
save - при изменении значения поля автоматически вызывать запрос save
change - при изменении значения поля автоматически вызывать запрос change
change.params - параметры, передаваемые запросу change. Аналогично ref.params
change.clears - массив имен полей, которые надо очистить при изменении значения поля. Если в списке перечислено поле type=«ref» то ссылающиеся на него поля refid указывать необязательно.
Серверные
virtual - поле виртуальное, в автогенерации SQL запросов не участвует. Для таких полей атрибуты table и alias не используются.
hidden - значение поля не передается на клиент
log - изменение поля надо логировать
info - дополнительная служебная информация в виде массива (ключ=значение). Используется для спецобработки на сервере.
Параметры поля в экранной форме "структура БД"
В экранной форме «структура БД» описывается таблицы и поля базы данных. По этим описателям генерятся контроллеры источников данных - описатели полей, SQL запросы к таблицам.
описатели полей REF
filter.mode=РАБ
filter.statusid=get('statusid')
будет построено:
<param name="filter.mode" value="РАБ"/>
<param name="filter.statusid" js_value="get('statusid')" skipempty="1"/>
Если значение параметра начинается с: get(, !get(, getplus(, !getplus( то это выражение, подставляется в js_value, добавляется skipempty. Иначе это константа, подставляется в value.
ref_join - подстраивает поведение связи при выполнении join. Стандартное поведение: подменять ссылки для restrict связей и удалять для cascade. Если параметр задан, то поведение зависит не от типа связи а от значения этого параметра. Значения 1, r, R означают подмену ссылок, все остальное означает удаление.
ref_copy - подстраивает поведение связи при выполнении copy. Стандартное поведение: копировать только для cascade связей. Если параметр задан, то поведение зависит не от типа связи а от значения этого параметра. Значения 1, c, C означают копирование.
ref_logparent - при любом изменении в строке отписывать в лог родительской таблицы по этой ссылке. Если значение 1, то имя в логе совпадает с именем таблицы, иначе значение задает имя в логе
ref_readonlytest - при правке у удалении строки проверять признак row.readonly строки связанного источника данных.
стандартные описатели
при изменении поля посылать запрос change без параметров
1
при изменении поля посылать запрос change с параметрами
field1=get('field1')
field2=get('field2')
при изменении поля очищать значения перечисленных полей
field1=clear
видимость и доступность
описатели полей MAIN при подключении их в справочник
reftext - при подключении поля как справочник задает значение reftext
reffind - при подключении поля как справочник задает значение reffind
dlgwidth - при подключении поля как справочник задает значение dlgwidth
refcaption - 1|0 при подключении поля как справочник брать caption из поля ссылки (type=ref)
Расширенный описатель info
Описатель info позволяет пополнить описание поля массивом вида имя=значение. Имена могут быть произвольными. Однако, некоторые имена обрабатываются особым образом - подменяют описатели поля. Вот список таких имен:
refid
refname
visible
js_visible
default
hidden
list
basetype