Запрос выполнить выбрать 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С.

Источник

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Вам будет интересно