Skip to the content.

Начало

Система типов данных

Система типов данных DaJet Script заимствована у платформы 1С:Предприятие 8. Однако, в отличие от неё, DaJet Script - это строго типизированный язык программирования. Такое решение обусловлено тем, что изначально DaJet Script разрабатывался как инструмент тесной интеграции информационных баз, именно платформы 1С:Предприятие 8, между собой. Таким образом DaJet Script, кроме всего прочего, поддерживает такие специфичные для этой платформы типы данных, как “Ссылка” entity и “СоставнойТип” union.

Тип данных union (составной тип) и его использование реализованы частично!
Только в минимально необходимом для работы с информационными базами 1С:Предприятие 8 объёме.
Объявить переменную типа union в коде DaJet Script невозможно!

Таблица типов данных DaJet Script

1С:Предприятие 8 DaJet Script C# MS SQL Server PostgreSQL
Неопределено null null NULL NULL
Булево boolean bool binary(1) boolean
Число number decimal
int
long
numeric
int
bigint
numeric
integer
bigint
Дата datetime DateTime datetime2 timestamp
without time zone
Строка string string nchar
nvarchar
mchar
mvarchar
Ссылка entity Entity binary(16) bytea
Составной тип union Union Все выше
перечисленные
Все выше
перечисленные
Бинарные данные binary byte[] varbinary bytea
Уникальный
идентификатор
uuid Guid binary(16) bytea
Структура object DataObject UDT UDT
Массив array List<DataObject> UDT UDT

Тип данных entity

Ссылочные типы данных 1С:Предприятие 8 - это сущности, которые идентифицируются по уникальному ключу, и при помощи этого ключа на них можно ссылаться в свойствах других объектов или на уровне полей таблиц базы данных (первичные и внешние ключи). Например, к таким типам данных относятся справочники и документы. Полезно будет отметить, что ссылочный тип данных полностью соответствует определению Entity (reference object), которое даёт подобным прикладным объектам Эрик Эванс в своей книге “Предметно-ориентированное проектирование”.

Не очевидно, но факт: перечисления 1С:Предприятие 8 являются ссылочным типом данных!

entity - это структура данных, которая на уровне СУБД состоит из одного или двух полей. Данная структура является указателем (ссылкой) на конкретный объект в базе данных или его отсутствие - “пустая ссылка”. Специальным значением является “нулевая ссылка”, то есть ссылка, которая ни на что не указывает - её значение не определенно.

“Пустая ссылка” всегда строго типизированна, то есть указывает на отсутствие объекта какого-то определённого типа, например, “Справочник.Номенклатура”.

Структура хранения ссылок на уровне СУБД

Поле СУБД MS SQL Server PostgreSQL C# DaJet Script Примечание
_TRef binary(4) bytea int number Код типа ссылки
В определённых случаях может отсутствовать для оптимизации (уменьшения) объёма хранимых данных
_RRef binary(16) bytea Guid uuid Значение ссылки
Обязательное поле

Тип данных union

union - это структура данных, которая на уровне СУБД состоит из нескольких полей. Количество и наличие тех или иных полей зависит от ситуации и настроек конфигурации (прикладного решения) 1С:Предприятие 8. Данный тип данных является реализацией дискриминированного объединения (tagged union). Аналогичен типу данных std::variant в C++17.

Структура хранения составных типов на уровне СУБД

Поле СУБД 1С:Предприятие 8 MS SQL Server PostgreSQL DaJet Script C#
_TYPE Дискриминатор binary(1) bytea number byte
_L Булево binary(1) boolean boolean bool
_N Число numeric numeric number decimal
int
_T Дата datetime2 timestamp
without time zone
datetime DateTime
_S Строка nchar
nvarchar
mchar
mvarchar
string string
_RTRef Число binary(4) bytea number int
_RRRef Ссылка binary(16) bytea uuid Guid

Типы данных object и array

Типы данных object и array необходимы для универсализации системы типов данных среды выполнения DaJet Script, чтобы “подружить” между собой узлы интеграции, имеющие различные системы типов данных. Для 1С:Предприятие 8 наиболее близкими аналогами будут “Структура” и “Массив” соответственно.

object моделирует любую структуру данных, в том числе иерархическую, может иметь вложенные объекты. В основном используется для отображения записей таблиц баз данных, объектов JSON, сообщений RabbitMQ и тому подобного. В общем и целом аналогичен одноимённому типу данных JavaScript. Набор свойств объекта и их тип выводится из контекста первого использования object в скрипте DaJet.

array - это динамический массив значений типа object. В основном используется для получения и дальнейшей обработки результатов выборки данных из таблиц баз данных в оперативной памяти среды выполнения скрипта DaJet.

Значения типов object и array могут быть преобразованы в формат JSON (текст в кодировке UTF-8) при помощи предопределённой функции JSON(<value>) среды выполнения DaJet Script.

Полезные ссылки и дополнительные материалы

Анатомия метаданных 1С:Предприятие 8

Размещение данных 1С:Предприятия 8

Размещение данных 1С:Предприятия 8 (таблицы и поля)

Особенности хранения составных типов данных 1С:Предприятия 8

Литералы и кодирование в формат JSON

1С:Предприятие 8 DaJet Script Литерал JSON
Неопределено null null null
Булево boolean true или false true или false
Число number 1 или 1.0 1 или 1.0
Дата datetime “2024-01-01T00:00:00” “2024-01-01T00:00:00”
Строка string ‘это строка’ “это строка”
Бинарные данные binary 0xFF BASE64
Уникальный
идентификатор
uuid ‘35521B2A-B154-4CA5-97FC-AE5733C4E473’ “35521B2A-B154-4CA5-97FC-AE5733C4E473”
Ссылка entity {123:35521B2A-B154-4CA5-97FC-AE5733C4E473} “{123:35521B2A-B154-4CA5-97FC-AE5733C4E473}”
Составной тип union нет {
    “type”: “string”,
    “value”: “это строка”
}