{}const=>[]async()letfn</>var
1CSQL

Язык запросов 1С для начинающих: выборка, отбор и параметры

Первый запрос 1С без магии: источники, поля, псевдонимы, ГДЕ, параметры, сортировка, группировка, выполнение и безопасная проверка в консоли запросов.

К

Кодик

Автор

6 мин чтения

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

Механизм запросов платформы показывает прикладные данные как связанные таблицы. Язык основан на SQL, но знает метаданные 1С, ссылочные поля, табличные части, виртуальные таблицы, иерархию и итоги. Через точку можно обратиться к реквизиту ссылочного объекта, однако длинные цепочки иногда создают неочевидные соединения. Начинайте с явного источника и минимального набора полей, затем добавляйте одно условие за раз. Перед оптимизацией сохраните контрольные параметры и ожидаемые строки. Так повторный запуск после изменения покажет не только скорость, но и возможное расхождение данных. Консоль запросов удобна для эксперимента, но итоговый код должен задавать все параметры явно.

1ВЫБРАТЬ

Какие поля попадут в результат.

2ИЗ

Из какой реальной или виртуальной таблицы читать.

3ГДЕ

Какие строки оставить по условию.

Порядок секций запроса 1С: ВЫБРАТЬ, ИЗ, ГДЕ, УПОРЯДОЧИТЬ ПО
Порядок сборки первой выборки: поля после ВЫБРАТЬ, таблица Справочник.Номенклатура после ИЗ, условие с параметром Группа после ГДЕ и сортировка по Наименованию в конце.

Язык запросов 1С для начинающих на рабочем примере

Получим активную номенклатуру выбранной группы. Параметр безопаснее склейки текста: платформа получает значение отдельно и корректно работает с типом ссылки. Псевдоним Источник сокращает обращения к таблице, а КАК задаёт понятные имена колонок результата.

ВЫБРАТЬ
    Источник.Ссылка КАК Ссылка,
    Источник.Код КАК Код,
    Источник.Наименование КАК Наименование
ИЗ
    Справочник.Номенклатура КАК Источник
ГДЕ
    НЕ Источник.ПометкаУдаления
    И Источник.Родитель = &Группа
УПОРЯДОЧИТЬ ПО
    Наименование
Ожидаемый результат
  • В результате только элементы указанной группы без пометки удаления
  • Колонки имеют стабильные имена Ссылка, Код и Наименование

Во встроенном языке создайте Новый Запрос, присвойте текст и вызовите УстановитьПараметр("Группа", НужнаяГруппа). После Выполнить() получите выборку или выгрузите таблицу значений. Если параметр не задан, запрос завершится ошибкой. Не используйте ПРЕДСТАВЛЕНИЕ() для дальнейших вычислений: это строка для показа, а не исходное типизированное значение.

🔥 100 000+ учеников уже с нами

Устал читать теорию?
Пора кодить!

Кодик — приложение, где ты учишься программировать через практику. AI-наставник, интерактивные уроки, реальные проекты.

🤖 AI 24/7
🎓 Сертификаты
💰 Бесплатно
🚀 Начать учиться
Присоединились сегодня

Основные конструкции первого месяца

ЭлементЧто означаетЧто делать
ГДЕФильтрует исходные строкиСтатус = &Статус
УПОРЯДОЧИТЬ ПОЗадаёт порядок результатаДата УБЫВ
СГРУППИРОВАТЬ ПООбъединяет строки для агрегатовПо складу
СУММАСчитает ресурс группыСумма документа
ВЫБОРУсловное вычисляемое полеКатегория по сумме

Агрегат и обычное поле требуют согласованной группировки. Если выбраны Склад и СУММА(Количество), Склад должен участвовать в СГРУППИРОВАТЬ ПО. Сортировка не гарантируется без явного УПОРЯДОЧИТЬ ПО. Запрос с ПЕРВЫЕ без порядка возвращает произвольный подходящий набор. Для отчётной даты используйте параметры и границы периода, а не строковое представление даты. Всегда сохраняйте пример ожидаемого результата рядом с учебным запросом.

Что проверить, если выборка вернула ноль строк
Разбор пустого результата: установлен ли параметр, ту ли группу передали в Родитель и сколько строк отсекает условие НЕ Источник.ПометкаУдаления.

Практика: первая выборка номенклатуры в консоли запросов

Откройте учебную базу и консоль запросов. Соберите выборку номенклатуры по шагам: сначала три поля, потом условие, потом параметр и сортировка. Успех - это одинаковый набор строк в консоли и в таблице значений, полученной из встроенного языка при том же значении параметра Группа.

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

Теперь ломайте по одному условию. Уберите строку УстановитьПараметр и запустите обработку: платформа сообщит, что параметр Группа не задан, и выборка не выполнится. Верните параметр, но передайте вместо ссылки на группу строку с её наименованием: ошибки может не быть, а строк не будет, потому что Родитель сравнивается со ссылкой, а не с текстом. Пустой результат тут говорит не о поломке запроса, а о несовпадении типа значения.

Критерий готовности. Вы можете объяснить, какие строки отсекает НЕ Источник.ПометкаУдаления, а какие условие по Родителю, и почему без УПОРЯДОЧИТЬ ПО порядок не гарантирован. Подтверждение простое: число строк и первая строка совпадают в консоли и в выгруженной таблице значений при одном значении параметра Группа. Отдельно проверьте, что запрос ничего не изменил в базе: он только читает данные.

Сделайте вторую версию запроса рядом с первой, не трогая рабочую. Замените равенство по Родителю на В ИЕРАРХИИ, чтобы захватить вложенные группы, и сравните количество строк. Потом соберите агрегат: Склад и СУММА(Количество) с обязательным СГРУППИРОВАТЬ ПО Склад. Дальше добавьте ВЫБОР для категории по сумме и проверьте ПЕРВЫЕ 10 обязательно вместе с явной сортировкой.

Частые ошибки и почему они появляются

Новичок часто копирует большой запрос и одновременно меняет источники, поля и параметры. После ошибки непонятно, какая часть сломалась. Вторая проблема связана с выбором всех полей, хотя экран использует три. Третья: вычисления выполняются в цикле встроенного языка вместо группировки на стороне базы. Это лишняя работа.

Склеивать значение в текст

Передавайте его через УстановитьПараметр и сохраняйте тип.

ВЫБРАТЬ *

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

Нет тестовой выборки

Сначала проверьте запрос на известных данных и граничном периоде.

Самопроверка

Может ли запрос 1С изменить данные в базе?

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

Зачем в запросе параметры вместо подстановки значения в текст?

Параметры отделяют текст запроса от значений и сохраняют тип, поэтому платформа корректно сравнивает ссылку с полем Родитель. Значение передаётся вызовом УстановитьПараметр("Группа", НужнаяГруппа); если параметр не задан, запрос завершится ошибкой.

Гарантирован ли порядок строк без УПОРЯДОЧИТЬ ПО?

Порядок строк без УПОРЯДОЧИТЬ ПО не гарантирован и может меняться от запуска к запуску. Особенно заметно это с ПЕРВЫЕ: без явной сортировки вернётся произвольный подходящий набор, а не первые по нужному признаку строки.

Почему запрос возвращает пустой результат?

Пустая выборка обычно приходит из условий, а не из ошибки синтаксиса: проверьте, ту ли группу передали в параметр и подходит ли тип значения. Часть строк отсекает НЕ Источник.ПометкаУдаления, поэтому запустите запрос без условий и добавляйте их обратно по одному.

Почему нельзя выбрать Склад и СУММА(Количество) без группировки?

Агрегат и обычное поле требуют согласованной группировки: если в списке полей есть Склад и СУММА(Количество), Склад должен участвовать в СГРУППИРОВАТЬ ПО. Иначе платформа не знает, к какой группе строк относить сумму.

Можно ли использовать ПРЕДСТАВЛЕНИЕ() в вычислениях?

ПРЕДСТАВЛЕНИЕ() возвращает строку для показа пользователю, а не исходное типизированное значение. Для сравнения, отбора и дальнейших вычислений берите само поле или ссылку, иначе получите сравнение текстов.

Что делать дальше

Соберите выборку номенклатуры, затем добавьте один параметр, сортировку и агрегат в отдельной версии. Логику выборок и соединений удобно закрепить на курсе SQL. Дальше разберите соединения в запросах и примените выборку в статье про отчёт на СКД.

🎯Хватит откладывать

Понравилась статья?
Пора применять на практике!

В Кодик ты не просто читаешь — ты сразу пишешь код. Теория + практика = реальный скилл.

Мгновенная практика
🧠AI объяснит код
🏆Сертификат

Без регистрации • Без карты