Учебник Запросы 1С для начинающих
Отдельный курс по языку запросов 1С — главному инструменту работы с данными и теме №1 на собеседованиях.
Курс «Запросы 1С» состоит из 6 разделов и 17 уроков: Основы языка запросов, Соединения и агрегация, Виртуальные таблицы регистров, Продвинутые приёмы, Оптимизация и Практикум. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Основы языка запросов
- ВЫБРАТЬ, ИЗ, ГДЕ: первый запрос
Первый запрос 1С на языке запросов: зачем он нужен вместо перебора в цикле, из чего состоит ВЫБРАТЬ...ИЗ...ГДЕ и чем он похож и не похож на SQL.
- Параметры запроса
Параметры запроса 1С: как передать значение снаружи через УстановитьПараметр и &Имя, почему параметры безопаснее склейки строк и как применять их в условии ГДЕ.
- Обход результата запроса
Что делать с результатом запроса 1С: обойти выборку циклом Пока Выборка.Следующий(), выгрузить в таблицу значений через Выгрузить() и проверить пустоту через Пустой().
- ВЫБРАТЬ, ИЗ, ГДЕ: первый запрос
2 Соединения и агрегация
- Соединения таблиц
Как соединять таблицы в запросе 1С: ЛЕВОЕ, ВНУТРЕННЕЕ и ПОЛНОЕ СОЕДИНЕНИЕ ПО, почему левое — самое частое и как не размножить строки.
- Группировка и агрегатные функции
СГРУППИРОВАТЬ ПО в запросах 1С, агрегатные функции СУММА, КОЛИЧЕСТВО, МАКСИМУМ, МИНИМУМ, СРЕДНЕЕ и условие ИМЕЮЩИЕ на агрегаты — с разбором ошибок.
- ИТОГИ и иерархия
Конструкция ИТОГИ ... ПО в запросах 1С: промежуточные и общие итоги, обход результата ОбходРезультата и иерархические итоги по группам справочника.
- Соединения таблиц
3 Виртуальные таблицы регистров
- СрезПоследних
Виртуальная таблица СрезПоследних регистра сведений в 1С: получаем актуальную цену, курс валюты или ставку НДС на нужную дату. Параметр Период и задача «цена на дату документа».
- Остатки, Обороты, ОстаткиИОбороты
Три виртуальные таблицы регистра накопления в 1С: Остатки (сколько есть на дату), Обороты (движение за период) и ОстаткиИОбороты. Когда какую выбирать.
- Параметры виртуальной таблицы vs ГДЕ
Ловушка производительности в запросах 1С: условие в параметрах виртуальной таблицы применяется до расчёта итогов и работает быстро, а то же условие в ГДЕ — после и медленно.
- СрезПоследних
4 Продвинутые приёмы
- Временные таблицы и пакетные запросы
Временные таблицы 1С: МенеджерВременныхТаблиц, оператор ПОМЕСТИТЬ, пакетный запрос через точку с запятой и зачем дробить сложный запрос на этапы.
- Вложенные запросы vs соединения
Вложенные запросы в 1С: подзапрос в ИЗ и в ГДЕ через В(...), когда подзапрос читаемее соединения, когда бьёт по скорости и как заменить его временной таблицей.
- ВЫБОР, ЕСТЬNULL и приведение типов
Условные выражения в запросах 1С: ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ, замена NULL функцией ЕСТЬNULL после левого соединения и приведение ссылочных типов через ВЫРАЗИТЬ.
- Временные таблицы и пакетные запросы
5 Оптимизация
- Что тормозит запросы
Главные причины медленных запросов 1С: запрос в цикле, соединение с подзапросом, ПОДОБНО по подстроке, условие в ГДЕ вместо параметров ВТ — и как их переписать.
- Консоль запросов и замер
Консоль запросов как инструмент отладки, замер времени выполнения, идея плана запроса и почему измерения регистра — это индексы, ускоряющие отбор.
- Что тормозит запросы
6 Практикум
- Задача: дебиторская задолженность
Пошаговый разбор задачи с собеседования: остатки взаиморасчётов по контрагентам на дату через регистр накопления и отбор должников через ИМЕЮЩИЕ.
- Задача: остатки товаров на складе на дату
Разбор классической задачи 1С: остатки номенклатуры по складам на дату через виртуальную таблицу Остатки, параметр Период и отбор положительных остатков.
- Задача: последние цены номенклатуры
Разбор задачи с собеседования: актуальная цена номенклатуры через СрезПоследних, левое соединение со справочником и обработка отсутствующих цен через ЕСТЬNULL.
- Задача: дебиторская задолженность