Запрос выполнить выбрать 1

Программирование 1С состоит не только из написания программы. 1С это слиток действий пользователя и данных с которыми он работает.
Данные хранятся в базе данных. Запросы 1С — это способ доставать данные из базы данных для того, чтобы показать пользователю в форме или чтобы обработать их.
Основополагающая часть отчета — это запрос 1С. В случае отчета СКД — это большая часть отчета.

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

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

Выберите в конструкторе запросов 1С нужную таблицу слева и перетащите правее.

Выберите в конструкторе запросов 1С из таблицы нужные поля и перетащите правее. Если Вы хотели бы не просто выбрать поле, а применить к нему какую либо функцию суммирования — после перетаскивания щелкните по полю два раза мышкой. На закладке Группировка после этого нужно будет выбрать (перетащить) для группировки нужные поля.

На закладке Условия в конструкторе запросов 1С Вы можете выбрать нужные отборы таким же способом (перетащив поля, по которым Вы будете делать отбор). Не забудьте выбрать верное условие.

На закладке Порядок — указывается сортировка. На закладке Итоги — суммирование итогов.
С помощью конструктора запросов 1С Вы можете изучить любой существующий запрос. Для этого нажмите правой кнопкой на текст существующего запроса и выберите также конструктор запросов 1С — и запрос будет открыт в конструкторе запросов 1С.