Функции и конструкции языка запросов 1С 8.2 и 1С 8.3


Функции языка запросов 1с.

ДАТАВРЕМЯ

Эта функция создает константное поле с типом «Дата».

Синтаксис: ДАТАВРЕМЯ(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)


РАЗНОСТЬДАТ

Возвращает разность двух дат в одном из измерений (год, месяц, день, час, минута, секунда). Измерение передается в параметре.

Синтаксис: РАЗНОСТЬДАТ(<Дата1>, <Дата2>, <Тип>)


ЗНАЧЕНИЕ

Задает константное поле с предопределенной записью из базы данных, также можно получить пустую ссылку любого типа.

Синтаксис: ЗНАЧЕНИЕ(<Имя>)


ВЫБОР

Аналог конструкции ЕСЛИ, который используется в коде, только эта используется в запросах 1С.

Синтаксис: ВЫБОР КОГДА <Выражение> ТОГДА <Выражение> ИНАЧЕ <Выражение> КОНЕЦ

Ещё пример:

Более сложный пример, с использованием ПОДОБНО:


ВЫРАЗИТЬ

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

Синтаксис: ВЫРАЗИТЬ(НазваниеПоля КАК НазваниеТипа)

Можно использовать функцию ВЫРАЗИТЬ в полях смешанных типах. Обычный и распространённый пример, где встречаются такие поля, это «Регистратор» у любого регистра. По какой причине мы будем уточнять тип в регистраторе? К примеру, если мы из регистратора выбираем поле «Номер», то из всех таблиц этот номер будет выбран. Для увеличения скорости обработки нашего запроса, укажем явный тип, с помощью функции ВЫРАЗИТЬ.


ISNULL, ЕСТЬNULL

Если поле имеет тип NULL, то оно заменяется на второй параметр функции.

Синтаксис: ЕСТЬNULL(<Поле>, <ПодставляемоеЗначение>)

Нужно отметить, что тип NULL необходимо ВСЕГДА заменять на какое-либо значение, так как сравнение с ним, всегда будет ЛОЖЬ. Прикол в том, что ЛОЖЬ будет, если сравнить NULL с NULL. Обычно NULL возникает при соединениях таблиц (во всех видах, кроме внутреннего).


ПРЕДСТАВЛЕНИЕ

Получает представление поля запроса

Синтаксис: ПРЕДСТАВЛЕНИЕ(<НаименованиеПоля>)


 

Конструкции в языке запросов 1с.

ССЫЛКА

Проверяет поля ссылочного типа. Обычно применяется для проверки поля составного типа на конкретный тип.

Синтаксис: ССЫЛКА <Имя таблицы>


МЕЖДУ

Проверяет, входит ли значение в указанный диапазон.

Синтаксис: МЕЖДУ <Выражение> И <Выражение>


В и В ИЕРАРХИИ

Проверяют находится ли значение в передаваемом списке (в качестве списка могут передаваться массивы, таблицы значений и т.д.). Оператор В ИЕРАРХИИ позволяет просматривать иерархию (пример использования ПланСчетов).

Синтаксис: В(<СписокЗначений>), В ИЕРАРХИИ(<СписокЗначений>)


ПОДОБНО

Сравнивает строку с шаблоном строки.

Синтаксис: ПОДОБНО «<ТекстШаблона>»

Варианты шаблона строки:

% — последовательность, содержащая любое количество произвольных символов
_ — один произвольный символ.
[…] — любой одиночный символ, либо последовательность символов из перечисленных внутри квадратных скобок. В перечислении могут задаваться диапазоны, например а-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] — любой одиночный символ, либо последовательность символов из перечисленных внутри квадратных скобок кроме тех, которые перечислены следом за значком отрицания.


РАЗРЕШЕННЫЕ

Выбирает только те записи из базы данных, на которые вызывающий имеет право чтения. Данные права настраиваются на уровне записей.

Синтаксис: РАЗРЕШЕННЫЕ пишется после ключевого слова ВЫБРАТЬ


РАЗЛИЧНЫЕ

Выбирает только те записи из базы данных, в которых отсутствуют повторные записи.

Синтаксис: РАЗЛИЧНЫЕ пишется после ключевого слова ВЫБРАТЬ

Ещё конструкцию РАЗЛИЧНЫЕ, можно использовать с оператором РАЗРЕШЕННЫЕ и другими операторами.


ПЕРВЫЕ

Выбирает указанное в параметре число записей из результата запроса.

Синтаксис: ПЕРВЫЕ <число>


ДЛЯ ИЗМЕНЕНИЯ

Позволяет заблокировать таблицу, работает только в транзакциях (актуально только для автоматических блокировок)

Синтаксис: ДЛЯ ИЗМЕНЕНИЯ <НаименованиеТаблицы>


УПОРЯДОЧИТЬ ПО

Упорядочивает данные по определенному полю. Если полем является ссылка, то при установке флага АВТОУПОРЯДОЧИВАНИЕ, будет происходить сортировка по представлению ссылки, если флаг выключен то ссылки сортируются по старшинству адреса ссылки в памяти.

Синтаксис: УПОРЯДОЧИТЬ ПО <НаименованиеПоля> АВТОУПОРЯДОЧИВАНИЕ


СГРУППИРОВАТЬ ПО

Используется для группировки строк запроса по определенным полям. Числовые поля должны использоваться с любой агрегатной функцией.

Синтаксис: СГРУППИРОВАТЬ ПО <НаименованиеПоля1>, …. , <НаименованиеПоляN>


ИМЕЮЩИЕ

Позволяет применить агрегатную функцию к условию выборки данных, похожа на конструкцию ГДЕ.

Синтаксис: ИМЕЮЩИЕ <агрегатная функция с условием>


ИНДЕКСИРОВАТЬ ПО

Используется для индексации поле запроса. Запрос с индексацией дольше выполняется, но ускоряет поиск по индексированным полям. Можно использовать только в виртуальных таблицах.

Синтаксис: ИНДЕКСИРОВАТЬ ПО <Поле1, … , ПолеN>


ГДЕ

Позволяет наложить условие на любые поля выборки. В результат попадут только те записи, которые удовлетворяют условию.

Синтаксис: ГДЕ <Условие1 ОператорЛогСоединения УсловиеN>


ИТОГИ … ПО ОБЩИЕ

Используется для подсчета итогов, в конструкции указываются поля по которым будут считаться итоги и агрегатные функции, применяемые к итоговым полям. При использовании итогов, по каждому полю, следующему после конструкции ИТОГИ, производится группировка данных. Так же, можно использовать конструкцию ОБЩИЕ (она не обязательна). Она тоже обеспечивает дополнительную группировку.

Синтаксис: ИТОГИ <АгрегатнаяФункция1, … , АгрегатнаяФункцияN> ПО <ОБЩИЕ> <Поле1, … , ПолеN>