Skip to the content.

Начало

Определение и импорт типов object

Доступно, начиная с версии DaJet 3.9.7

DaJet Script реализует возможность определять схему переменных типа object. Необходимость этого функционала демонстрирует ниже следующий скрипт, выполнение которого завершается ошибкой. Суть ошибки: процессор DaJet Script “не видит” свойство Property объекта, к которому мы обращаемся.

DECLARE @object object
DECLARE @data string = '{
    "Property": "test"
}'

-- *********************************
-- * Создаём объект из данных JSON *
-- *********************************
SET @object = JSON(@data)

-- ******************************************************
-- * Пытаемся получить значение свойства ```Property``` *
-- ******************************************************
RETURN @object.Property

-- *****************************************
-- * Результат выполнения скрипта - ошибка *
-- *****************************************
-- Failed to bind [Variable: @object.Property]

Команда DEFINE

Ниже следующий скрипт демонстрирует использование команды DEFINE для определения схемы данных объекта. Эта схема применяется к переменной типа object при помощи предложения OF команды DECLARE.

DEFINE МоиТипыДанных.Тестовый(
    Property string
)

DECLARE @object object OF МоиТипыДанных.Тестовый
DECLARE @data string = '{
    "Property": "test"
}'

-- *********************************
-- * Создаём объект из данных JSON *
-- *********************************
SET @object = JSON(@data)

-- ******************************************************
-- * Пытаемся получить значение свойства ```Property``` *
-- ******************************************************
RETURN @object.Property

-- ****************************************
-- * Результат выполнения скрипта - успех *
-- ****************************************
-- "test"

Наверх

Команда IMPORT

DaJet Script реализует возможность импортировать определения типов из внешних файлов. Например, создадим внешний файл опеределения типа объекта из предыдущего примера, а затем импортируем его в исполняемый скрипт.

-- ****************************
-- * Внешний файл imports.djs *
-- ****************************
DEFINE МоиТипыДанных.Тестовый(
    Property string
)
-- **************************************
-- * Исполняемый скрипт test-import.djs *
-- **************************************
IMPORT 'file://imports.djs'

DECLARE @object object OF МоиТипыДанных.Тестовый
DECLARE @data string = '{
    "Property": "test"
}'

SET @object = JSON(@data)

RETURN @object.Property

-- ****************************************
-- * Результат выполнения скрипта - успех *
-- ****************************************
-- "test"

Наверх

Все возможные типы данных

Ниже следующее определение типа object демонстрирует все возможные типы данных для свойств объекта, которые можно определить при помощи команды DEFINE.

DEFINE ВсеВозможныеТипыДанных
(
    Булево        boolean,
    Число         number,
    ДатаВремя     datetime,
    Строка        string,
    Двоичное      binary,
    Идентификатор uuid,
    Ссылка        entity,
    Объект        object,
    Массив        array
)

Наверх