Содержание
Описатели полей
Введение
Поля в контроллере источника данных описываются массивом. Получить описатели можно вызвав методы: 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 - изменение значения поля необходимо логировать
Числа
- dec - кол-во знаков после запятой
Справочники
Параметры поля 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
- 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 - при изменении поля отсылать запрос change или выполнять очистку полей
при изменении поля посылать запрос change без параметров
1
при изменении поля посылать запрос change с параметрами
field1=get('field1') field2=get('field2')
при изменении поля очищать значения перечисленных полей
field1=clear
- save - 1|0 при изменении значения поля автоматически вызывать запрос save
- info - произвольная информация вида cod=значение. Перенесется в описатель поля fld
видимость и доступность
- readonly - 1|0 можно объявить поле readonly
- js_readonly - можно объявить поле readonly в зависимости от условия: get('mode_code')=='ОТКЛ'
описатели полей MAIN при подключении их в справочник
- reftext - при подключении поля как справочник задает значение reftext
- reffind - при подключении поля как справочник задает значение reffind
- dlgwidth - при подключении поля как справочник задает значение dlgwidth
- refcaption - 1|0 при подключении поля как справочник брать caption из поля ссылки (type=ref)
Расширенный описатель info
Описатель info позволяет пополнить описание поля массивом вида имя=значение. Имена могут быть произвольными. Однако, некоторые имена обрабатываются особым образом - подменяют описатели поля. Вот список таких имен:
- refid
- refname
- visible
- js_visible
- default
- hidden
- list
- basetype