Для чего нужны запросы в 1с
Запрос — один из механизмов получения данных из базы 1С (в отличии от прямой выборки), имеет свой синтаксис (язык запроса), который транслируется (конвертируется и передается) системой в непосредственный запрос к базе данных (как встроенной файловой, так и внешней СУБД).
Синтаксис языки запроса 7.7 и 8.x несовместимы, но в 8 версии он похож больше на sql-запросы (но не является его копией).
Какие механизмы есть в запросе:
- выборка из данных и виртуальных таблиц
- сортировка (порядочивание)
- группировка (с расчетом показателей по группировке)
- отборы (фильтрация)
- формирование итогов (суммирования, определение например минимума-максимума)
- промежуточные расчеты (временные таблицы)
В данной группе статей приводятся обучающие статьи по синтаксису запроса, их оптимизации, особенностях применения запрос для выборки различных данных.
Использование запросов является рекомендуемым способом, так-как при больших объемах, является более оптимизированным и быстрым и, как следует из его функционала, в большинстве случаев единственным подходящим.
Текст языка запроса чаще всего используется в качестве способа формирования данных(источник) для СКД
Для чего нужны запросы в 1с
«Болтовня ничего не стоит. Покажите мне код.»
Линус Торвальдс (создатель Linux)
Основы языка запросов в 1С 8.3, представленные в уроках ниже, предназначены для тех, кто уже прошёл первые два этапа обучения (ссылка) и уверенно владеет внутренним языком 1С.
Если у вас есть опыт работы с запросами или с SQL, то, возможно, вам лучше сразу перейти к упражнениям (ссылка) для продвинутых. Язык запросов в 1С имеет много общего с SQL.
Зачем вообще нужен язык запросов и так ли он необходим?
Как следует из названия, он предназначен для того, чтобы ЗАПРАШИВАТЬ данные, которые хранятся в базе 1С. Это может быть информация о контрагентах, номенклатуре, документах .
В принципе, всё это можно получить и не зная языка запросов. Для этого можно использовать, так называемую, объектную технику, когда мы получаем все данные прямо из внутреннего языка 1С без использования запросов напрямую.
Но и в этом случае 1С всё-равно будет преобразовывать наш объектный код в маленькие порции запросов и часто она будет это делать не так эффективно, как если бы мы сами написали весь запрос целиком.
Давайте представим, что у компании есть контейнер фруктов, который находится в другом городе.
Каждое утро для сотрудников компании требуется какой-то определенный вид фруктов. Наша задача написать программу, которая будет получать из контейнера (в другом городе) только те фрукты, которые хотят сотрудники этим утром.
Если мы будем использовать объектную технику (без применения запросов), то наша программа в худших случаях может работать примерно так:
- Мы звоним в другой город и говорим, что нам нужен контейнер.
- Фирма, которая хранит контейнер, нанимает грузовик, грузит на него контейнер и перевозит в наш город.
- Мы перебираем сами все фрукты и выбираем только яблоки.
- Возвращаем контейнер обратно в другой город.
Вы сами видите, что этот способ дорогой, долгий и неэффективный.
А вот как будет выглядеть программа, которая использует запросы:
- Мы посылаем на склад, где хранится наш контейнер СМС с текстом «ХОТИМ 10 ЯБЛОК».
- Работники склада на месте отбирают 10 яблок и отсылают нам через службу доставки.
Как видите, второй способ имеет ряд преимуществ. Он более быстрый и дешёвый в сравнении с первым.
Если перенести эту аналогию на базы данных, то получится, что:
- Контейнер — это наша база данных.
- Склад в другом городе — это сервер, то есть компьютер, который может храниться в другом здании, городе или даже стране.
- Наша компания — это клиент, конечный пользователь базы данных.
- Текст СМС — это текст запроса, который клиент посылает серверу.
- Служба доставки — это линия связи (локальная сеть или интернет) которая связывает клиента с сервером.
- Яблоки — это информация, которую клиент получает от сервера в ответ на запрос.
Получается, если программа не использует запросы, то 1С приходится каждый раз перекачивать почти всю базу с сервера на компьютер пользователя, чтобы выбрать из неё пусть даже совсем небольшую порцию информации.
И, если в эпоху 1С 7.7 выросли целые поколения программистов, не умеющих писать запросы, то для 1С 8 это умение является таким же необходимым как навык писать условные операторы, циклы и процедуры.
Система 1С 8, в отличие от старых версий, отличается более «строгой» реализацией клиент-серверной архитектуры, в частности, требует переноса выполнения всей бизнес-логики на сервер.
Это с одной стороны накладывает определенные ограничения, но с другой стороны даёт преимущества, о которых программисты семёрки могли только мечтать.
Я имею в виду работу в режиме управляемого приложения, когда весь интерфейс пользователя описывается декларативно и появляется возможность легко адаптировать его под другие платформы (linux) или даже запускать в веб-браузере.
Вот почему запросы фактически являются стандартом де факто для получения данных из базы 1С.
Язык запросов 1С 8.3 и 8.2 — краткое руководство по всем конструкциям
Язык запросов является одним из основополагающих механизмов 1С 8.3 для разработчиков. При помощи запросов можно быстро получить любые данные, хранящиеся в базе. Его синтаксис очень похож на SQL, но есть и отличия.
Основные достоинства языка запросов 1С 8.3 (8.2) перед SQL:
- разыменование ссылочных полей (обращение черед одну или несколько точек к реквизитам объектов);
- работа с итогами очень удобная;
- возможность создавать виртуальные таблицы;
- запрос можно писать как на английском, так и на русском языках;
- возможность блокировать данные для исключения взаимных блокировок.
Недостатки языка запросов в 1С:
- в отличие от SQL, в 1С запросы не позволяют изменять данные;
- отсутствие хранимых процедур;
- невозможность преобразования строки в число.
Рассмотрим наш мини учебник по основным конструкциям языка запросов 1С.
ВЫБРАТЬ (Select)
В связи с тем, что запросы в 1С позволяют лишь получать данные, любой запрос должен начинаться со слова «ВЫБРАТЬ». После этой команды указываются поля, данные из которых нужно получить. Если указать «*», то будут выбраны все доступные поля. Место, откуда будут выбираться данные (документы, регистры, справочники и прочее) указывается после слова «ИЗ».
В рассмотренном ниже примере выбираются наименования всей номенклатуры из справочника «Номенклатура». После слова «КАК» указываются псевдонимы (имена) для таблиц и полей.
ВЫБРАТЬ
Номенклатура.Наименование КАК НаименованиеНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура
Рядом с командой «ВЫБРАТЬ» можно указать ключевые слова:
- РАЗЛИЧНЫЕ. Запрос будет отбирать только отличающиеся хотя бы по одному полю строки (без дублей).
- ПЕРВЫЕ n, где n – количество строк с начала результата, которые необходимо отобрать. Чаще всего такая конструкция используется совместно с сортировкой (УПОРЯДОЧИТЬ ПО). Например, когда нужно отобрать определенное количество последних по дате документов.
- РАЗРЕШЕННЫЕ. Данная конструкция позволяет выбирать из базы только те записи, которые доступны текущему пользователю. Баз использования этого ключевого слова пользователю будет выведено сообщение об ошибке при попытке обращения запроса к тем записям, доступа к которым у него нет.
Эти ключевые слова могут использоваться как все вместе, так и по отдельности.
ДЛЯ ИЗМЕНЕНИЯ
Это предложение блокирует данные для исключения взаимных конфликтов. Заблокированные данные не будут считываться из другого соединения до окончания транзакции. В данном предложении можно указывать конкретные таблицы, которые нужно заблокировать. В противном случае будут заблокированы все. Конструкция актуальна лишь для режима автоматических блокировок.
Чаще всего предложение «ДЛЯ ИЗМЕНЕНИЯ» используется при получении остатков. Ведь при одновременной работе нескольких пользователей в программе, пока один получает остатки, другой может их изменить. В таком случае полученный остаток будет уже не верен. Если же заблокировать данные этим предложением, то пока первый сотрудник не получит корректный остаток и не совершит с ним все необходимые манипуляции, второй сотрудник будет вынужден ждать.
Получите понятные самоучители по 1С бесплатно:
ВЫБРАТЬ
Взаиморасчеты.Сотрудник,
Взаиморасчеты.СуммаВзаиморасчетовОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыССотрудниками.Остатки КАК Взаиморасчеты
ДЛЯ ИЗМЕНЕНИЯ
ГДЕ (WHERE)
Конструкция необходима для наложения какого-либо отбора на выгружаемые данные. В некоторых случая получения данных из регистров разумнее прописывать условия отборов в параметрах виртуальных таблиц. При использовании «ГДЕ», сначала получаются все записи, и только потом применяется отбор, что значительно замедляет выполнение запроса.
Ниже приведен пример запроса получения контактных лиц с определенной должностью. Параметр отбора имеет формат: &ИмяПараметра (имя параметра произвольное).
ВЫБРАТЬ
КонтактныеЛица.Ссылка
ИЗ
Справочник.КонтактныеЛица КАК КонтактныеЛица
ГДЕ
КонтактныеЛица.Должность = &ИмяПараметра
ВЫБОР (CASE)
Конструкция позволяет указывать условия непосредственно в теле запроса.
В приведенном ниже примере «ДополнительноеПоле» будет содержать текст в зависимости от того проведен документ или нет:
ВЫБРАТЬ
ПоступлениеТиУ.Ссылка,
ВЫБОР
КОГДА ПоступлениеТиУ.Проведен
ТОГДА «Документ проведен!»
ИНАЧЕ «Документ не проведен…»
КОНЕЦ КАК ДополнительноеПоле
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТиУ
СОЕДИНЕНИЕ (JOIN)
Соединения связывают две таблицы по определенному условию связи.
ЛЕВОЕ/ПРАВОЕ СОЕДИНЕНИЕ
Суть ЛЕВОГО соединения заключается в том, что полностью берется первая указанная таблица и к ней по условию связи привязывается вторая. Если записей, соответствующих первой таблице во второй не нашлось, то в качестве их значений подставляется NULL. Проще говоря, главной является первая указанная таблица и к её данным уже подставляются данные второй таблицы (если они есть).
Например, необходимо получить номенклатурные позиции из документов «Поступление товаров и услуг» и цены из регистра сведений «Цены номенклатуры». В данном случае, если цена у какой-либо позиции не найдена, вместо нее подставиться NULL. Из документа все позиции будут выбраны вне зависимости от того, есть ли на них цена или нет.
ВЫБРАТЬ
ПоступлениеТиУ.Номенклатура,
Цены.Цена
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТиУ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
ПО ПоступлениеТиУ.Номенклатура = Цены.Номенклатура
В ПРАВОМ все в точности да наоборот.
ПОЛНОЕ СОЕДИНЕНИЕ
Данный вид соединения отличается от предыдущих тем, что в результате будут возвращены все записи как первой таблицы, так и второй. Если по заданному условию связи в первой или второй таблице не найдено записей, вместо них будет возвращено значение NULL.
При использовании в предыдущем примере полного соединения будут выбраны все позиции номенклатуры из документа «Поступление товаров и услуг» и все последние цены из регистра «Цены номенклатуры». Значения не найденных записей, как в первой, так и во второй таблице будут равняться NULL.
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Отличием ВНУТРЕННЕГО соединения от ПОЛНОГО является то, что если хотя бы в одной из таблиц не найдена запись, то запрос не выведет ее вообще. В результате будут выбраны только те номенклатурные позиции из документа «Поступление товаров и услуг», для которых в регистре сведений «Цены номенклатуры» есть записи, если в предыдущем примере заменить «ПОЛНОЕ» на «ВНУТРЕННЕЕ».
СГРУППИРОВАТЬ ПО (GROUP BY)
Группировка в запросах 1С позволяет сворачивать строки таблицы (группировочные поля) по определенному общему признаку (группируемым полям). Группировочные поля могут выводиться только с применением агрегатных функций.
Результатом следующего запроса будет список видов номенклатуры с максимальными ценами по ним.
ВЫБРАТЬ
Цены.Номенклатура.ВидНоменклатуры,
МАКСИМУМ(Цены.Цена) КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
СГРУППИРОВАТЬ ПО
Цены.Номенклатура.ВидНоменклатуры
ИТОГИ
В отличие от группировки при использовании итогов выводятся все записи и уже к ним добавляются итоговые строки. Группировка выводит лишь обобщенные записи.
Итоги можно подводить по всей таблице целиком (с использованием ключевого слова «ОБЩИЕ»), по нескольким полям, по полям с иерархической структурой (ключевые слова «ИЕРАРХИЯ», «ТОЛЬКО ИЕРАРХИЯ»). При подведении итогов не обязательно использовать агрегатные функции.
Рассмотрим пример, аналогичный примеру выше с использованием группировки. В данном случае результат запроса вернет не только сгруппированные поля, но и детальные записи.
ВЫБРАТЬ
Цены.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
Цены.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
ИТОГИ
МАКСИМУМ(Цена)
ПО
ВидНоменклатуры
ИМЕЮЩИЕ (HAVING)
Данный оператор схож с оператором «ГДЕ», но используется только для агрегатных функций. Остальные поля, кроме используемых этим оператором, должны быть сгруппированы. Оператор «ГДЕ» не применим для агрегатных функций.
В рассмотренном ниже примере отбираются максимальные цены номенклатуры, если они превышают 1000, сгруппированные по виду номенклатуры.
ВЫБРАТЬ
Цены.Номенклатура.ВидНоменклатуры,
МАКСИМУМ(Цены.Цена) КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
СГРУППИРОВАТЬ ПО
Цены.Номенклатура.ВидНоменклатуры
ИМЕЮЩИЕ
МАКСИМУМ(Цены.Цена) > 1000
УПОРЯДОЧИТЬ ПО
Оператор «УПОРЯДОЧИТЬ ПО» сортирует результат запроса. Для того, чтобы гарантированно выводить записи в постоянном порядке, используется АВТОУПОРЯДОЧИВАНИЕ. Примитивные типы сортируются по обычным правилам. Ссылочные типы сортируются по GUID.
Пример получения списка сотрудников, отсортированного по наименованию:
ВЫБРАТЬ
Сотрудники.Наименование КАК Наименование
ИЗ
Справочник.Сотрудники КАК Сотрудники
УПОРЯДОЧИТЬ ПО
Наименование
АВТОУПОРЯДОЧИВАНИЕ
Прочие конструкции языка запросов 1С
- ОБЪЕДИНИТЬ – результаты двух запросов в один.
- ОБЪЕДИНИТЬ ВСЕ – аналог ОБЪЕДИНИТЬ, но без группировки одинаковых строк.
- ПУСТАЯ ТАБЛИЦА – иногда используется при объединении запросов для указания пустой вложенной таблицы.
- ПОМЕСТИТЬ – создает временную таблицу для оптимизации сложных запросов 1С. Такие запросы называются пакетными.
Функции языка запросов
- ПОДСТРОКА обрезает строку с определенной позиции на указанное количество символов.
- ГОД…СЕКУНДА позволяют получить выбранное значение числового типа. Входным параметром является дата.
- НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА используются при работе с датами. В качестве дополнительного параметра указывается тип периода (ДЕНЬ, МЕСЯЦ, ГОД и т. п.).
- ДОБАВИТЬКДАТЕ позволяет прибавить или отнять от даты указанное время определенного типа (СЕКУНДА, МИНУТА, ДЕНЬ и т. п.).
- РАЗНОСТЬДАТ определяет разницу между двумя датами с указанием типа выходного значения (ДЕНЬ, ГОД, МЕСЯЦ и т. п.).
- ЕСТЬNULL заменяет отсутствующее значение на указанное выражение.
- ПРЕДСТАВЛЕНИЕ и ПРЕДСТАВЛЕНИЕССЫЛКИ получают строковое представление указанного поля. Применяются для любых значений и только ссылочных соответственно.
- ТИП, ТИПЗНАЧЕНИЯ используются для определения типа входного параметра.
- ССЫЛКА является логическим оператором сравнения для типа значения реквизита.
- ВЫРАЗИТЬ используется для преобразования значения к нужному типу.
- ДАТАВРЕМЯ получает значение типа «Дата» из числовых значений (Год, Месяц, День, Час, Минута, Секунда).
- ЗНАЧЕНИЕ в запросе 1С используется для указания предопределенных значений — справочников, перечислений, планов видов характеристик. Пример использования: «Где ЮрФизЛицо = Значение(Перечисление.ЮрФизЛица.ФизЛицо)«.
Конструктор запросов
Для создания запросов с 1С есть очень удобный встроенный механизм – конструктор запросов. Он содержит следующие основные вкладки:
- «Таблицы и поля» — содержит поля, которые необходимо выбрать и их источники.
- «Связи» — описывает условий для конструкции СОЕДИНЕНИЕ.
- «Группировка» — содержит описание конструкций группировок и суммируемых полей по ним.
- «Условия» — отвечает за отборы данных в запросе.
- «Дополнительно» — дополнительные параметры запроса, такие как ключевые слова команды «ВЫБРАТЬ» и пр.
- «Объединения/Псевдонимы» — указываются возможности объединения таблиц и задаются псевдонимы (конструкция «КАК»).
- «Порядок» — отвечает за сортировку результата запросов.
- «Итоги» — аналогична вкладке «Группировка», но применяется для конструкции «ИТОГИ».

Текст самого запроса можно просмотреть, нажав в левом нижнем углу на кнопку «Запрос». В данной форме его можно откорректировать вручную или скопировать.

Консоль запросов
Для быстрого просмотра результата запроса в режиме «Предприятие», либо отладки сложных запросов используется консоль запросов. В ней пишется текст запроса, устанавливаются параметры, и показывается его результат.
Для чего нужны запросы в 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С.