Опции свойства
При объявлении свойства в инструкции =
в конце объявления может указываться некоторый набор опций свойства.
Синтаксис
Опции перечесляются друг за другом в произвольном порядке через пробел или переводы строк:
propertyOption1 ... propertyOptionN
Поддерживается следующий набор опций (синтаксис каждой опции указывается в отдельной строке):
IN groupName
viewType
ON eventType { actionOperator }
CHANGEKEY key [SHOW | HIDE]
MATERIALIZED
TABLE tableName
INDEXED
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
.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
Тип фильтра по умолчанию. Строковый литерал. Может принимать следующие значения:
=
,>
,<
,>=
,<=
,!=
,START_WITH
,CONTAINS
,ENDS_WITH
,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;