Определение и импорт типов 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
)