Опции свойства
При объявлении свойства в инструкции = в конце объявления может указываться некоторый набор опций свойства.
Синтаксис
Опции перечесляются друг за другом в произвольном порядке через пробел или переводы строк:
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;