Перейти к основному содержимому
Версия: 7.0

Первичные свойства (DATA)

Первичное свойство - это свойство, значение которого хранится в базе данных, и может изменяться в результате выполнения соответствующих действий. Значение и каждый параметр первичного свойства должны принадлежать некоторому заданному классу. Если параметр не принадлежит заданному классу (или равняется NULL), то возвращаемое значение свойства также будет равняться NULL. При удалении объекта или изменении его класса значение первичного свойства приводится к NULL, если объект служит аргументом или значением этого свойства и больше не принадлежит соответствующему объявленному классу.

Локальные первичные свойства​

Первичные свойства могут быть локальными. Такие свойства сохраняют свои значения только в пределах сессии (то есть в базу данных не сохраняются, а значит, к примеру, при применении изменений эти значения по умолчанию сбрасываются в NULL). В сессии локальное первичное свойство равно NULL, если значения не были записаны в ней или перенесены в неё операциями управления сессиями. Вычисляемое через него свойство использует это NULL вместо его значения. Записанное значение остается в сессии до конца ее жизни — например, между действиями, выполняемыми из одной формы, сессия которой живет, пока форма открыта, — пока не будет сброшено применением или отменой изменений (по умолчанию) либо перезаписано. Завершение записавшего его действия не очищает локальное свойство, объявленное на уровне модуля.

Обычное локальное свойство удобно использовать как временное хранилище данных внутри одной сессии или одного сценария взаимодействия. Если же значение должно переживать операции управления сессиями, локальное свойство можно сделать вложенным.

Вложенные локальные первичные свойства​

Вложенное локальное первичное свойство - это локальное первичное свойство, для которого платформа сохраняет значение при нужных операциях управления сессиями.

Базовый режим вложенности сохраняет значение свойства для всех основных операций управления сессиями:

Поэтому в базовом режиме значения переносятся в обе стороны через каждую новую сессию, в которой свойство участвует: значение, присвоенное внутри новой сессии — например, открытой в ней формой, — копируется обратно в сессию, из которой новая была создана, как только завершается создавшее её действие, а последующая новая сессия, создаваемая из этой сессии, получает хранимые ею к этому моменту значения, если эта операция переносит свойство.

Если сохранение требуется только для части этих операций, используется ограниченный режим вложенности: либо только после применения изменений и отмены изменений, либо только при переходе в новую сессию и обратно. Ограниченный режим для применения и отмены изменений сам по себе не копирует свойство через новую сессию: значения такого свойства — например, рабочего хранилища одной формы — остаются в той сессии, где они были присвоены, если только операция не копирует всю сессию или не выбирает свойство явно.

Язык​

Для объявления первичного свойства используется оператор DATA.

Примеры​

CLASS Item;
quantity = DATA LOCAL INTEGER (Item);

sessionOwners = DATA LOCAL NESTED MANAGESESSION INTEGER ();

CLASS Order;
selected = DATA LOCAL NESTED NOMANAGESESSION BOOLEAN (Order);

CLASS Country;
isDayOff = DATA BOOLEAN (Country, DATE);