Система типов данных языка запросов DaJet

Документация для программистов C#

Язык запросов DaJet основан на системе типов 1С:Предприятие 8. Кроме простых типов данных DaJet так же поддерживает такие специфичные для этой платформы типы, как Ссылка (Entity) и СоставнойТип (Union).

DaJet C# MS SQL Server PostgreSQL
Неопределено null null NULL NULL
Булево boolean bool binary(1) boolean
Число number decimal numeric numeric
Дата datetime DateTime datetime2 timestamp without time zone
Строка string string nvarchar mvarchar
Ссылка entity Entity binary(16) bytea
Составной тип oneof Union Все выше перечисленные Все выше перечисленные
Уникальный идентификатор uuid Guid binary(16) bytea
Бинарные данные binary byte[] varbinary(max) bytea

Тип данных "Ссылка" (Entity)

Entity - это структура данных, которая состоит из одного или двух полей. Данная структура является своеобразным указателем (ссылкой) на объект в базе данных.

Структура Entity может иметь пустое значение, то есть не указывать на какой-то конкретный объект базы данных. В таком случае значением этой структуры будет нулевой UUID.

DaJet C# MS SQL Server PostgreSQL Поле СУБД
Код типа
type code
number int binary(4) bytea 1. _Fld123_TRef
2. Не используется
Ссылка
reference
uuid Guid binary(16) bytea 1. _Fld123_RRef
2. _Fld123RRef

Как видно из таблицы выше, в базе данных 1С:Предприятие 8 структура "Ссылка" - это комбинация полей, имеющих постфиксы TRef (код типа) и RRef (идентификатор объекта).

При этом в некоторых случаях постфикс TRef в целях оптимизации на уровне СУБД может отсутствовать ("Поле СУБД", вариант № 2).

Язык запросов DaJet все эти случаи учитывает и делает работу с этим типом данных прозрачной.

Тип данных "СоставнойТип" (Union)

Union - это структура данных, которая может состоять из нескольких полей на уровне базы данных. По сути своей, тип Union является реализацией классического типа данных tagged union или, другая аналогия, типа данных sql_variant MS SQL Server.

Одно поле структуры - дискриминатор (tag), который указывает на конкретный тип данных значения, хранимого структурой в данный момент (текущее значение). Остальные поля используются для хранения значений конкретного типа, определённого дискриминатором. Некоторые поля, в целях оптимизации на уровне СУБД, а также в зависимости от настроек конфигурации 1С:Предлприятие 8, могут отсутствовать. Кроме этого, структура Union, так же как и Entity, может иметь пустое значение (NULL).

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

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

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

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

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

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