v8: Язык запросов 8.0 Язык запросов версии 8.0 сильно изменился по сравнению с версией 7.7. Можно сказать, что он стал "русским братом SQL", потому что из обычных возможностей языка SQL в 1С:Предприятии 8.0 поддерживаются следующие:
- выборка определенных полей (или всех полей с помощью звездочки *) (SELECT / ВЫБРАТЬ);
- указание таблиц-источников данных (FROM / ИЗ);
- задание условий отбора (WHERE / ГДЕ);
- группировка по заданным полям с подсчетом агрегатных функций (GROUP BY / СГРУППИРОВАТЬ ПО, SUM, COUNT, MIN, MAX);
- отбор групп (HAVING / ИМЕЮЩИЕ);
- сортировка результата (ORDER BY / УПОРЯДОЧИТЬ ПО)
- соединения таблиц (JOIN...ON / СОЕДИНЕНИЕ ПО), в том числе левые и правые внешние соединения;
- объединения нескольких запросов (UNION / ОБЪЕДИНИТЬ);
- вложенные подзапросы.
Но по российской традиции мы всегда находим свой собственный путь и язык запросов системы 1С:Предприятия 8.0 не исключение. Кроме вышеперечисленных возможностей SQL, в нем поддерживаются уникальные собственные расширения, в частности:
- обращение к свойствам объектов через точку или несколько точек (по-научному это называется "разыменование ссылочных полей");
- обращение к табличным частям объектов, например, справочников и документов (специфика 1С:Предприятия);
- подсчет промежуточных и общих итогов, в том числе по группировочным полям и уровням иерархии (итоговые строки включаются в результат запроса вместе с детальными);
- виртуальные таблицы для быстрого обращения к нужным данным из регистров (остатки, обороты и т.д.);
- расширения для построителя отчетов (о!... это такая важная тема, что лучше рассмотреть ее отдельно).
Стоит отметить, что стандартный SQL, кроме выборки данных, поддерживает также некоторые другие операции, например, изменение данных, изменение структуры таблиц, управление правами пользователей и т.д. Но по статистике обычный SELECT, т.е. выборка данных, — это 95% всех запросов в мире. Поэтому ничего страшного нет в том, что в 1С:Предприятии 8.0 с помощью языка запросов можно только считывать данные и еще можно накладывать блокировку на считываемые данные с помощью предложения ДЛЯ ИЗМЕНЕНИЯ. Изменение данных в 1С:Предприятии 8.0 производится только средствами встроенного языка, а изменять структуру конфигурации можно только в Конфигураторе.
Двуязычность языка запросов
Все конструкции языка запросов в 1С:Предприятии 8.0 можно писать как на русском, так и английском языке, кроме слова Null, которое на русский язык никак не переводится. Внимание: объявляется конкурс на лучший перевод слова Null.
Учтите, что слово "Неопределено" в версии 8.0 уже занято, а 0 (ноль) или пустая строка ("") не отражают суть значения Nul.
Обработка результата запроса
Важным инструментом в 1С:Предприятии 8.0 является механизм выборки из результата запроса. Можно организовать линейный и иерархический обход записей, а также обход по группировкам, причем в произвольном порядке измерений.
Более того, на основе результата запроса вообще без усилий (как по волшебству!) можно сформировать сводную таблицу, в которой будут представлены итоговые данные по комбинации измерений. Порядок измерений пользователь может менять буквально мышкой, перетаскивая измерения и ресурсы, как ему вздумается. Это позволяет на основе одного запроса получить множество отчетов, в том числе разнообразные кросс-таблицы.
см. также:
Книга знаний: v8: Примеры запросов v8 |