Язык запросов 1С для начинающих проще осваивать на одной выборке: укажите поля после ВЫБРАТЬ, источник после ИЗ, условия после ГДЕ и передавайте значения через параметры. Запросы читают и обрабатывают данные информационной базы, но не изменяют их. Первый результат проверяйте в консоли запросов на небольшой учебной базе.
Механизм запросов платформы показывает прикладные данные как связанные таблицы. Язык основан на SQL, но знает метаданные 1С, ссылочные поля, табличные части, виртуальные таблицы, иерархию и итоги. Через точку можно обратиться к реквизиту ссылочного объекта, однако длинные цепочки иногда создают неочевидные соединения. Начинайте с явного источника и минимального набора полей, затем добавляйте одно условие за раз. Перед оптимизацией сохраните контрольные параметры и ожидаемые строки. Так повторный запуск после изменения покажет не только скорость, но и возможное расхождение данных. Консоль запросов удобна для эксперимента, но итоговый код должен задавать все параметры явно.
Какие поля попадут в результат.
Из какой реальной или виртуальной таблицы читать.
Какие строки оставить по условию.

Язык запросов 1С для начинающих на рабочем примере
Получим активную номенклатуру выбранной группы. Параметр безопаснее склейки текста: платформа получает значение отдельно и корректно работает с типом ссылки. Псевдоним Источник сокращает обращения к таблице, а КАК задаёт понятные имена колонок результата.
ВЫБРАТЬ
Источник.Ссылка КАК Ссылка,
Источник.Код КАК Код,
Источник.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Источник
ГДЕ
НЕ Источник.ПометкаУдаления
И Источник.Родитель = &Группа
УПОРЯДОЧИТЬ ПО
Наименование- В результате только элементы указанной группы без пометки удаления
- Колонки имеют стабильные имена Ссылка, Код и Наименование
Во встроенном языке создайте Новый Запрос, присвойте текст и вызовите УстановитьПараметр("Группа", НужнаяГруппа). После Выполнить() получите выборку или выгрузите таблицу значений. Если параметр не задан, запрос завершится ошибкой. Не используйте ПРЕДСТАВЛЕНИЕ() для дальнейших вычислений: это строка для показа, а не исходное типизированное значение.
Основные конструкции первого месяца
| Элемент | Что означает | Что делать |
|---|---|---|
| ГДЕ | Фильтрует исходные строки | Статус = &Статус |
| УПОРЯДОЧИТЬ ПО | Задаёт порядок результата | Дата УБЫВ |
| СГРУППИРОВАТЬ ПО | Объединяет строки для агрегатов | По складу |
| СУММА | Считает ресурс группы | Сумма документа |
| ВЫБОР | Условное вычисляемое поле | Категория по сумме |
Агрегат и обычное поле требуют согласованной группировки. Если выбраны Склад и СУММА(Количество), Склад должен участвовать в СГРУППИРОВАТЬ ПО. Сортировка не гарантируется без явного УПОРЯДОЧИТЬ ПО. Запрос с ПЕРВЫЕ без порядка возвращает произвольный подходящий набор. Для отчётной даты используйте параметры и границы периода, а не строковое представление даты. Всегда сохраняйте пример ожидаемого результата рядом с учебным запросом.

Практика: первая выборка номенклатуры в консоли запросов
Откройте учебную базу и консоль запросов. Соберите выборку номенклатуры по шагам: сначала три поля, потом условие, потом параметр и сортировка. Успех - это одинаковый набор строк в консоли и в таблице значений, полученной из встроенного языка при том же значении параметра Группа.
- Три поля после ВЫБРАТЬ. Напишите ВЫБРАТЬ Источник.Ссылка КАК Ссылка, Источник.Код КАК Код, Источник.Наименование КАК Наименование и добавьте ИЗ Справочник.Номенклатура КАК Источник. После выполнения в результате три колонки со стабильными именами и все элементы справочника.
- Условие по пометке удаления. Допишите ГДЕ НЕ Источник.ПометкаУдаления и выполните запрос ещё раз. Строк станет меньше ровно на количество помеченных на удаление элементов, запишите оба числа рядом.
- Параметр Группа вместо текста. Добавьте условие И Источник.Родитель = &Группа и задайте значение на вкладке параметров консоли, выбрав нужную группу номенклатуры. В результате останутся только элементы этой группы, а без заполненного параметра запуск завершится ошибкой.
- Сортировка по Наименованию. Добавьте УПОРЯДОЧИТЬ ПО Наименование и сравните порядок строк с предыдущим запуском. Запомните первую и последнюю строку: это ваш контрольный результат для повторной проверки.
- Тот же запрос из кода. Перенесите текст в обработку: Запрос = Новый Запрос, задайте Запрос.Текст, вызовите Запрос.УстановитьПараметр("Группа", НужнаяГруппа) и Запрос.Выполнить().Выгрузить(). Таблица значений должна повторить строки консоли один в один, включая порядок.
Теперь ломайте по одному условию. Уберите строку УстановитьПараметр и запустите обработку: платформа сообщит, что параметр Группа не задан, и выборка не выполнится. Верните параметр, но передайте вместо ссылки на группу строку с её наименованием: ошибки может не быть, а строк не будет, потому что Родитель сравнивается со ссылкой, а не с текстом. Пустой результат тут говорит не о поломке запроса, а о несовпадении типа значения.
Сделайте вторую версию запроса рядом с первой, не трогая рабочую. Замените равенство по Родителю на В ИЕРАРХИИ, чтобы захватить вложенные группы, и сравните количество строк. Потом соберите агрегат: Склад и СУММА(Количество) с обязательным СГРУППИРОВАТЬ ПО Склад. Дальше добавьте ВЫБОР для категории по сумме и проверьте ПЕРВЫЕ 10 обязательно вместе с явной сортировкой.
Частые ошибки и почему они появляются
Новичок часто копирует большой запрос и одновременно меняет источники, поля и параметры. После ошибки непонятно, какая часть сломалась. Вторая проблема связана с выбором всех полей, хотя экран использует три. Третья: вычисления выполняются в цикле встроенного языка вместо группировки на стороне базы. Это лишняя работа.
Передавайте его через УстановитьПараметр и сохраняйте тип.
Запрашивайте только нужные поля, особенно для больших таблиц.
Сначала проверьте запрос на известных данных и граничном периоде.
Самопроверка
Может ли запрос 1С изменить данные в базе?
Запрос 1С только читает и обрабатывает данные информационной базы, записать или удалить он ничего не может. Изменения выполняются отдельно средствами встроенного языка, а результат запроса используется как источник для этой обработки.
Зачем в запросе параметры вместо подстановки значения в текст?
Параметры отделяют текст запроса от значений и сохраняют тип, поэтому платформа корректно сравнивает ссылку с полем Родитель. Значение передаётся вызовом УстановитьПараметр("Группа", НужнаяГруппа); если параметр не задан, запрос завершится ошибкой.
Гарантирован ли порядок строк без УПОРЯДОЧИТЬ ПО?
Порядок строк без УПОРЯДОЧИТЬ ПО не гарантирован и может меняться от запуска к запуску. Особенно заметно это с ПЕРВЫЕ: без явной сортировки вернётся произвольный подходящий набор, а не первые по нужному признаку строки.
Почему запрос возвращает пустой результат?
Пустая выборка обычно приходит из условий, а не из ошибки синтаксиса: проверьте, ту ли группу передали в параметр и подходит ли тип значения. Часть строк отсекает НЕ Источник.ПометкаУдаления, поэтому запустите запрос без условий и добавляйте их обратно по одному.
Почему нельзя выбрать Склад и СУММА(Количество) без группировки?
Агрегат и обычное поле требуют согласованной группировки: если в списке полей есть Склад и СУММА(Количество), Склад должен участвовать в СГРУППИРОВАТЬ ПО. Иначе платформа не знает, к какой группе строк относить сумму.
Можно ли использовать ПРЕДСТАВЛЕНИЕ() в вычислениях?
ПРЕДСТАВЛЕНИЕ() возвращает строку для показа пользователю, а не исходное типизированное значение. Для сравнения, отбора и дальнейших вычислений берите само поле или ссылку, иначе получите сравнение текстов.
Что делать дальше
Соберите выборку номенклатуры, затем добавьте один параметр, сортировку и агрегат в отдельной версии. Логику выборок и соединений удобно закрепить на курсе SQL. Дальше разберите соединения в запросах и примените выборку в статье про отчёт на СКД.
