Опции свойства
При объявлении свойства в инструкции =
в конце объявления может указываться некоторый набор опций свойства.
Синтаксис
Опции перечесляются друг за другом в произвольном порядке через пробел или переводы строк:
propertyOption1 ... propertyOptionN
Поддерживается следующий набор опций (синтаксис каждой опции указывается в отдельной строке):
IN groupName
viewType
ON eventType { actionOperator }
CHANGEKEY key [SHOW | HIDE]
MATERIALIZED
TABLE tableName
INDEXED [LIKE | MATCH]
NONULL [DELETE] eventClause
AUTOSET
CHARWIDTH width [FLEX | NOFLEX]
REGEXP rexpr [message]
ECHO
DEFAULTCOMPARE [compare]
Описание и параметры
-
IN groupName
Указание группы свойств и действий, которой принадлежит свойство. Если опция не указывается, то свойство по умолчанию будет принадлежать группе
System.private
.-
groupName
Имя группы. Составной идентификатор.
-
-
MATERIALIZED
Ключевое слово, помечающее свойство как материализованное. Такие свойства будут храниться в полях таблицы базы данных.
-
TABLE tableName
Указание таблицы, в которой будет храниться свойство. Количество ключей таблицы должно совпадать с количеством аргументов свойства, и классы аргументов должны подходить к классам ключей таблицы. Если таблица не задана, свойство автоматически будет помещено в "ближайшую" существующую в системе таблицу.
-
tableName
Имя таблицы. Составной идентификатор.
-
-
INDEXED
Ключевое слово, указание которого создает индекс по этому свойству. Аналогично использованию инструкции
INDEX
.-
LIKE
Ключевое слово, указание которого создает вместо обычного индекса GIN индекс.
-
MATCH
Ключевое слово, указание которого создает вместо обычного индекса два: GIN индекс и GIN индекс с to_tsvector.
-
-
NONULL [DELETE] eventClause
Добавление ограничения определенности. Если это ограничение в результате каких-то изменений для некоторых объектов нарушается, то будет либо показа но соответствующее сообщение, либо при указании
DELETE
такие объекты будут удалены.-
DELETE
Ключевое слово, при указании которого в случае, если свойство становится равным
NULL
, будут удалены объекты, которые являются в данном случае аргументами свойства. -
eventClause
Блок описания типа события. Описывает событие по которому будет выполняться проверка свойства на
NULL
.
-
Блок интерактивного представления
-
viewType
Указание типа представления свойства при добавлении на форму.
GRID
- колонка таблицыTOOLBAR
- тулбарPANEL
- панель
По действию аналогично указанию опции
viewType
в блоке свойств инструкцииFORM
. Соответственно если эта опция не указана ни в опциях свойств, ни в блоке свойств непосре дственно на форме, используется тип представления по умолчанию для группы отображения, добавляемого на форму свойства. -
ON eventType { actionOperator }
Указание действия, которое будет обработкой по умолчанию некоторого события формы всех интерактивных представлений этого свойства. Могут быть переопределены в блоке свойств инструкции
FORM
.-
eventType
Тип события формы. Задается одним из следующих вариантов:
CHANGE
- происходит при попытке изменения значения свойства.CHANGEWYS
- происходит при попытке изменении значения свойства с помощью специального механизма ввода.GROUPCHANGE
- происходит при попытке изменения значения свойства для всех объектов в таблице (групповое редактирование).EDIT
- происходит при попытке редактировать объект, который является значением этого свойства.CONTEXTMENU [caption]
- пользователь выбрал в контекстном меню свойства на форме заданный пункт. Также при необходимости можно задать заголовокcaption
этого пункта меню (строковый литерал). Если этого не сделать, то, по умолчанию, он будет равен заголовку действия.
-
actionOperator
Контекстно-зависимый оператор-действие. Оператор, описывающий выполняемое по событию действие. В качестве параметров оператора можно использовать параметры самого свойства.
-
Блок значений по умолчанию инструкции DESIGN
-
CHARWIDTH width [FLEX | NOFLEX]
Указание количества символов значения свойства, которые должны быть видны пользователю. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции
DESIGN
.-
width
Количество символов. Целочисленный литерал.
-
FLEX
Ключевое слово. Если указано, коэффициент расширения значения свойства автоматически устанавливается равным его базовому размеру.
-
NOFLEX
Ключевое слово. Если указано, коэффициент расширения значения свойства автоматически устанавливается равным нулю.
-
-
REGEXP rexpr [message]
Указание регулярного выражения, которому должно соответствовать значение свойства после редактирования. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции
DESIGN
.-
rexpr
Строковый литерал, описывающий регулярное выражение. Правила задания аналогичны принятым в языке Java.
-
message
Строковый литерал, описывающий сообщение, которое будет показано пользователю в случае, если он введет значение, не соответствующее регулярному выражению. Если не указывается, то будет показано сообщение по умолчанию.
-
-
ECHO
Ключевое слово, указание которого приведет к отображению символов звездочки
*
вместо значения свойства. Используется, например, для паролей. Может быть переопределено в инструкцииDESIGN
. -
CHANGEKEY key [SHOW | HIDE]
Указание комбинации клавиш, при нажатии которой будет начато редактирование свойства. Устанавливает значение для дизайна по умолчанию, может быть переопределено в инструкции
DESIGN
.key
Строковый литерал, описывающий комбинацию клавиш. Принцип задания аналогичен способу задания параметра в методе Java-класса Keystroke.getKeystroke(String).
-
SHOW
Ключевое слово, при указании которого комбинация клавиш будет отображаться в заголовке свойства. Используется по умолчанию.
-
HIDE
Ключевое слово, при указании которого комбинация клавиш не будет отображаться в заголовке свойства.
-
DEFAULTCOMPARE [compare]
Указание для свойства типа фильтра по умолчанию.
-
compare
Тип фильтра по умолчанию. Строковый литерал. Может принимать следующие значения:
=
,>
,<
,>=
,<=
,!=
,CONTAINS
,LIKE
. По умолчанию принимает значение=
для всех типов данных кроме строковых регистронезависимых, для которых принимает значениеCONTAINS
. При включенной настройкеSystem.defaultCompareForStringContains
по умолчанию принимает значениеCONTAINS
для всех строковых данных независимо от регистрозависимости. Может быть переопределено в инструкцииDESIGN
.
-
Примеры
// cвойство задано контекстно-независимым оператором-свойством DATA
cost 'Стоимость' (i) = DATA NUMERIC[12,3] (Item);
// cвойство задано выражением
weightedSum 'Взвешенная сумма' (a, b) = 2*a + 3*b;
// заголовком этого свойства будет 'diff', а параметрами - (a, b)
diff = a - b;
// свойство задано оператором DATA с указанием дополнительных опций свойства
teamName 'Название команды' = DATA BPSTRING[30](Team) IN baseGroup TABLE team;