Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
|
1c:база:запросы [2014/12/24 17:21] admin создано |
1c:база:запросы [2020/10/01 03:34] (текущий) admin мелкое оформление |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Запросы ====== | ||
| + | ===== Описание ===== | ||
| + | Запросы представляют собой, табличную модель доступа к данным. С помощью запросов удобно организовывать чтение данных, | ||
| + | Перед тем как возьметесь за конструктор, | ||
| + | </ | ||
| + | ===== Виды таблиц ===== | ||
| + | Таблицы в 1С делятся на реальные и виртуальные. Реальные таблицы, | ||
| + | <WRAP round important> | ||
| + | Если используется какое-либо условие при обращении к виртуальной таблице, | ||
| + | </ | ||
| + | Не следует переоценивать роль параметров виртуальной таблицы. Бывает начинающие разработчики разобравшись как устанавливаются параметры в виртуальных таблицах, | ||
| + | Запрос объявляется следующим образом: | ||
| + | <code 1c> | ||
| + | // и далее можно указать текст запроса, | ||
| + | Запрос.Текст = " | ||
| + | </ | ||
| + | ===== Основной синтаксис языка запросов. ===== | ||
| + | Для составления запроса, | ||
| + | Опишем основные разделы часто используемые при построении запросов, | ||
| + | |||
| + | ==== Таблицы и поля ==== | ||
| + | Любой запрос начинается с выражения «Выбрать» или Select, далее следуют перечисление полей которые вы хотите видеть в запросе и источник откуда будут браться эти поля как в запросе выше, в качестве источника могут быть как таблицы базы данных, | ||
| + | {{http:// | ||
| + | |||
| + | ==== Группировка строк запроса. ==== | ||
| + | При формировании запроса очень часто бывает необходимо " | ||
| + | - Петров 100 | ||
| + | - Иванов 200 | ||
| + | - Иванов 400 | ||
| + | - Сидоров 90 | ||
| + | - Петров 150 | ||
| + | Здесь в процессе группировки в качестве группируемых полей будет выступать сотрудник, | ||
| + | В итоге мы должны получить следующие записи: | ||
| + | - Петров 250 | ||
| + | - Иванов 600 | ||
| + | - Сидоров 90 | ||
| + | Не следует путать группировку и итоги, что бы закрепить понимание, | ||
| + | Пример запроса с группировкой | ||
| + | < | ||
| + | Запрос.Текст = | ||
| + | " | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура, | ||
| + | | СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма | ||
| + | |ПОМЕСТИТЬ СправочникТоваров | ||
| + | |ИЗ | ||
| + | | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ||
| + | | | ||
| + | |СГРУППИРОВАТЬ ПО | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура"; | ||
| + | </ | ||
| + | {{http:// | ||
| + | |||
| + | ==== Условие и параметры в запросе ==== | ||
| + | На результат выборки запроса, | ||
| + | <code 1c> Запрос.Текст = | ||
| + | " | ||
| + | | Номенклатура.Ссылка | ||
| + | |ПОМЕСТИТЬ СправочникТоваров | ||
| + | |ИЗ | ||
| + | | Справочник.Номенклатура КАК Номенклатура | ||
| + | |ГДЕ | ||
| + | | Номенклатура.Ссылка В(& | ||
| + | </ | ||
| + | Передать параметр в запрос, | ||
| + | <code 1c> | ||
| + | |||
| + | ==== Псевдонимы ==== | ||
| + | В случаях когда результат запроса может быть сразу выгружен в табличную часть документа, | ||
| + | <code 1c> Запрос.Текст = | ||
| + | " | ||
| + | | Товары.Ссылка КАК Товар | ||
| + | |ПОМЕСТИТЬ СправочникТоваров | ||
| + | |ИЗ | ||
| + | | Справочник.Номенклатура КАК Товары | ||
| + | |ГДЕ | ||
| + | | Товары.Ссылка В(& | ||
| + | </ | ||
| + | {{http:// | ||
| + | ==== Объединения ==== | ||
| + | Когда необходимо выбрать данные из двух никак не связанных таблиц, | ||
| + | <code 1c> Запрос.Текст = | ||
| + | " | ||
| + | | Товары.Ссылка КАК Товар, | ||
| + | | Товары.Наименование, | ||
| + | | Товары.Код | ||
| + | |ПОМЕСТИТЬ СправочникТоваров | ||
| + | |ИЗ | ||
| + | | Справочник.Номенклатура КАК Товары | ||
| + | |ГДЕ | ||
| + | | Товары.Ссылка В(& | ||
| + | | | ||
| + | |ОБЪЕДИНИТЬ ВСЕ | ||
| + | | | ||
| + | |ВЫБРАТЬ | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура, | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура.Наименование, | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура.Код | ||
| + | |ИЗ | ||
| + | | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ||
| + | |ГДЕ | ||
| + | | РеализацияТоваровУслугТовары.Ссылка = & | ||
| + | </ | ||
| + | {{http:// | ||
| + | ==== Соединения ==== | ||
| + | Соединения позволяют получить <wrap hi>в одной строке результата запроса данные из нескольких таблиц</ | ||
| + | {{http:// | ||
| + | <code 1c> Запрос.Текст = | ||
| + | " | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура, | ||
| + | | ТоварыНаСкладахОстатки.КоличествоОстаток | ||
| + | |ИЗ | ||
| + | | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ||
| + | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки | ||
| + | | ПО РеализацияТоваровУслугТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура" | ||
| + | </ | ||
| + | |||
| + | Перед построением запроса, | ||
| + | * **Декартово произведение**, | ||
| + | * **Внутреннее соединение** или inner join(галочка " | ||
| + | * **Левое соединение** или left inner join (галочка " | ||
| + | * **Правое соединение** или right inner join тоже самое что и левое соединение, | ||
| + | * **Полное соединение** или full outer join (галочка " | ||
| + | |||
| + | ==== Вложенные запросы ==== | ||
| + | Вложенные запросы это " | ||
| + | {{http:// | ||
| + | Пример запроса, | ||
| + | < | ||
| + | " | ||
| + | | ВложенныйЗапрос.Номенклатура | ||
| + | |ИЗ | ||
| + | | (ВЫБРАТЬ | ||
| + | | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура | ||
| + | | ИЗ | ||
| + | | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ||
| + | | ГДЕ | ||
| + | | РеализацияТоваровУслугТовары.Ссылка = & | ||
| + | </ | ||
| + | |||
| + | ==== Сортировка ==== | ||
| + | Если необходимо упорядочить результаты запроса, | ||
| + | |||
| + | ==== Тип данных NULL ==== | ||
| + | NULL тип данных который можно получить только в одном месте: в запросе, | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ==== Использование функций ==== | ||
| + | Язык запросов обладает ограниченным набором функций, | ||
| + | |||
| + | ===== Получение данных из табличных частей документов ===== | ||
| + | Если необходимо получить данные из табличной части какого либо документа, | ||
| + | {{http:// | ||
| + | < | ||
| + | Запрос.Текст = | ||
| + | " | ||
| + | | ОтчетОРозничныхПродажах.Товары.( | ||
| + | | Номенклатура | ||
| + | | ) | ||
| + | |ИЗ | ||
| + | | Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах"; | ||
| + | |||
| + | </ | ||
| + | |||
| + | А вот так будет правильно: | ||
| + | {{http:// | ||
| + | < | ||
| + | Запрос.Текст = | ||
| + | " | ||
| + | | ОтчетКомитентуОПродажахТовары.Номенклатура | ||
| + | |ИЗ | ||
| + | | Документ.ОтчетКомитентуОПродажах.Товары КАК ОтчетКомитентуОПродажахТовары"; | ||
| + | </ | ||
| + | Разумеется в любом случае нужно наложить условие на поле " | ||