Типы, доступные в языке запросов
Некоторые типы, поддерживаемые в языке запросов, позволяют обращаться к свойствам, вызывать методы и выполнять выражения, которые определены для этих типов в языке «1С:Элемент». Далее перечислены типы и та функциональность, которая доступна для них в языке запросов.
Null
Тип Null имеет единственное значение: Null.
В языке «1С:Элемент» для работы со значениями Null, получаемыми из языка запросов или внешних баз данных, используется тип Null пространства имен Стд::БазаДанных.
В языке запросов значение Null обозначает отсутствие данных. Например, когда при соединении таблиц для поля первой таблицы невозможно подобрать ни одной записи из второй таблицы, которая удовлетворяла бы условию связи. В этом случае поле второй таблицы будет иметь значение Null.
Если не сказано иного, в языке запросов любое выражение с участием NULL возвращает NULL:
2 + NULLдаетNULLКонтрагент == NULLдаетNULL
Есть две операции, которые позволяют определить, является ли указанное значение значением Null:
При сортировке по возрастанию Null всегда идет первым на всех СУБД.
Булевы операции со значением Null:
-
Null или ЛожьдаетNull -
Null или ИстинадаетИстина -
Null и ЛожьдаетЛожь -
Null и ИстинадаетNull -
не NullдаетNull
При использовании в агрегатных функциях значения Null игнорируются, кроме функции Количество(*).
Байты
Используется для работы с двоичными данными (байтовыми строками).
Литерал
Соответствует литералу типа Байты. Пример:
Байты{DEADBEEF}
Для записи шестнадцатеричного числа допускается использование как нижнего, так и верхнего регистра.
Булево
Поддерживаются все свойства и методы типа Булево.
Литерал
Соответствует литералу типа Булево. Пример:
Сообщения.Доставлено == Ложь
Время
Поддерживаются все свойства и методы типа Время.
Реализовано вычитание и сложение:
Время-Время=ДлительностьВремя+Длительность=Время
Литерал
Соответствует литералу типа Время. Пример:
Время{00:00:00}
Время{12:34:56.789}
Ограничения:
- Минимальное допустимое значение времени —
00:00:00.000. - Максимальное допустимое значение времени —
23:59:59.999.
Дата
Поддерживаются все свойства и методы типа Дата.
Реализовано вычитание и сложение:
Дата-Дата=ДлительностьДата+Длительность=Дата
Литерал
Соответствует литералу типа Дата. Пример:
Дата{2024-01-01}
Ограничения:
- Минимальное допустимое значение даты —
01.01.0001. - Максимальное допустимое значение даты —
31.12.9999.
ДатаВремя
Поддерживаются все свойства и методы типа ДатаВремя.
При выполнении метода ВМомент() смещение часового пояса будет вычтено из значения ДатаВремя. Запросы с использованием этого метода могут работать гораздо медленнее.
Реализовано вычитание и сложение:
ДатаВремя-ДатаВремя=ДлительностьДатаВремя+Длительность=ДатаВремя
Реализован конструктор:
ДатаВремя(дата)
ДатаВремя(дата, время)
Литерал
Соответствует литералу типа ДатаВремя. Пример:
ДатаВремя{2024-01-01 00:00:00}
Ограничения:
- Минимальное допустимое значение даты —
01.01.0001 00:00. - Максимальное допустимое значение даты —
31.12.9999 23:59:59.999.
Длительность
Поддерживаются все свойства и методы типа Длительность.
Реализовано сложение со значениями других типов:
Дата+Длительность=ДатаВремя+Длительность=ВремяДатаВремя+Длительность=ДатаВремя
Литерал
Соответствует литералу типа Длительность. Пример:
1д2ч3м4с5мс
-2ч
Ограничения:
- Минимальное допустимое значение длительности — (-1018 + 1) миллисекунд.
- Максимальное допустимое значение длительности — (1018 - 1) миллисекунд.
Момент
Реализован метод ВДатаВремя()
При выполнении метода ВДатаВремя() смещение часового пояса будет прибавлено к значению Момент. Запросы с использованием этого метода могут работать гораздо медленнее
Литерал
Соответствует литералу типа Момент. Пример:
Момент{2024-01-01T00:00:00Z}
Ограничения:
- Минимальное допустимое значение момента —
01.01.0001 00:00 UTC. - Максимальное допустимое значение момента —
31.12.3999 23:59 UTC.
Неопределено
Используется для работы со значением Неопределено.
Литерал
Соответствует литералу типа Неопределено. Пример:
ДокументыПродаж.Договор == Неопределено
Ссылочный тип
Используется для работы со ссылками на записи ссылочных таблиц. Определяется именем и типом идентификатора ссылки. Например, имя-плана-обмена.Ссылка.
Реализован конструктор имя-плана-обмена.Ссылка(), который позволяет создать новую ссылку по Ууид:
Товары.Поставщик == Контрагенты.Ссылка(Ууид{fec3140a-5f2b-11e8-9c2d-fa7ae01bbebc})
Литерал
Литерала нет. Вместо литерала следует использовать конструирование ссылки как структуры (см. пример выше).
Строка
Значения типа Строка в языке запросов сравниваются без учета регистра букв (т. е. е и Е будут считаться равными), но с учетом акцентов (т. е. е и ё будут считаться различными)
Литерал
Соответствует литералу типа Строка. Поддерживаются управляющие последовательности. Пример:
Товары.Наименование == "Валенки"
Тип
Используется для оперирования значениями типа, например для проверки типа значения.
Литерал
Соответствует литералу типа Тип. Пример:
Тип<ФизическиеЛица.Ссылка> == Товары.Поставщик.ПолучитьТип()
Тип перечисления
Используется для работы с перечислениями.
Литерал
Синтаксис:
<ИмяТипаПеречисления>.<ИмяЗначенияПеречисления>
Поддерживаются все доступные на сервере перечисления: системные, объявленные в проекте, объявленные в серверных модулях. Имя типа перечисления, объявленного в модуле, задается следующим образом: Подсистема::Модуль.Перечисление. Пример:
ОстаткиТоваров.ВидДвижения == ВидДвиженияНакопления.Приход
УникальныйИдентификатор
Используется для работы с уникальными идентификаторами.
Литерал
Соответствует литералу типа Ууид. Пример:
Ууид{2C1E3646-90d4-4125-8D2C-7E4DE12323cE}
ЧасовойПояс
Реализовано свойство Имя.
Литерал
Соответствует литералу типа ЧасовойПояс. Пример:
ЧасовойПояс{Europe/Moscow}
Число
Реализованы методы ЦелаяЧасть() и Округлить().
Литерал
Соответствует десятичному литералу типа Число. Пример:
Товары.Цены > 15000.500