Язык запросов 1С — одно из основных отличий между версиями 7.7 и 8. Одним из важнейших пунктов в изучении 1С-программирования является язык запросов. В 1С 8.3 запросы — самый мощный и эффективный инструмент получения данных. Язык запросов позволяет в удобном виде получать информацию из базы данных.
Сам синтаксис очень сильно напоминает классический T-SQL, за исключением того, что в 1С с помощью языка запросов можно только получать данные, используя конструкцию Выбрать(select).
ВЫБРАТЬ (SELECT) в 1с
В языке запросов 1С предприятия 8 любой запрос начинается с ключевого слова ВЫБРАТЬ. В языке 1С нет конструкций UPDATE, DELETE, CREATE TABLE, INSERT, эти манипуляции производятся в объектной технике. Предназначение его — только чтение данных.
Рядом с конструкцией ВЫБРАТЬ можно встретить ключевые слова ДЛЯ ИЗМЕНЕНИЯ, РАЗРЕШЕННЫЕ, РАЗЛИЧНЫЕ, ПЕРВЫЕ …
РАЗРЕШЕННЫЕ — выбирает только записи из таблицы, на которые есть права у текущего пользователя.
РАЗЛИЧНЫЕ — означает, что в результат не попадет дублирующих строк.
ПЕРВЫЕ n — в языке 1С 8.3 запрос отберет только n первых записей.
ВЫБОР (CASE) в 1С
Конструкция выбор позволяет получить один вариант из нескольких при выполнении условия.
ГДЕ (WHERE) в 1С
В предложении ГДЕ можно использовать как имена полей, так и их псевдонимы. При этом
совершенно необязательно, чтобы поле, фигурирующее в предложении ГДЕ, входило в
список выборки.
Условие отбора может определяться и как простое логическое выражение, и как более
сложное, в котором простые логические выражения соединяются между собой
логическими операторами И, ИЛИ, НЕ.
СГРУППИРОВАТЬ ПО (GROUP BY) в 1с
Конструкция языка запросов 1С, используемая для группировки результата.
Помимо ключевого слова СУММА можно использовать другие агрегатные функции: КОЛИЧЕСТВО, КОЛИЧЕСТВО РАЗНЫХ, МАКСИМУМ, МИНИМУМ, СРЕДНЕЕ.
ИМЕЮЩИЕ (HAVING) в 1С
Конструкция позволяет указать отбор в виде агрегатной функции, этого нельзя сделать в конструкции ГДЕ.
СОЕДИНЕНИЕ (JOIN) в 1С
Соединения бывают 4 типов: ЛЕВОЕ, ПРАВОЕ, ПОЛНОЕ, ВНУТРЕННЕЕ,
Соединения используются для связи двух таблиц по определенному условию. Особенность при ЛЕВОМ СОЕДИНЕНИИ в том, что мы берём первую указанную таблицу полностью и привязываем по условию вторую таблицу. Поля второй таблицы, которые не удалось привязать по условию, заполняются значением NULL.
ЗНАЧЕНИЕ() в 1С
В запросе 1C ЗНАЧЕНИЕ () можно использовать для указания предопределенных значений, таких как значения перечисления, пустую ссылку или значение предопределенного элемента.
ТИП в запросе 1С
Тип данных можно проверить следующим образом: с помощью функций ТИП() и ТИПЗНАЧЕНИЯ() или с помощью логического оператора ССЫЛКА.
ВЫРАЗИТЬ() в 1С
Оператор Выразить в запросах 1С служит для преобразования типов данных.
Синтаксис: ВЫРАЗИТЬ(<Выражение> КАК <Тип значения>)
С помощью него можно преобразовать строковые значения в дату или ссылочные в строковые данные и так далее.
В практическом применении оператор Выразить() очень часто используется для преобразования полей неограниченной длины, потому что поля неограниченной длины нельзя отбирать, группировать и тд. Если такие поля не преобразовывать, Вы получите ошибку Нельзя сравнивать поля неограниченной длины и поля несовместимых типов.