На платформе 1С 7.7 есть возможность получения данных ИБ в табличном виде, готовом для использования в отчетах или обработках. Такая возможность реализована с помощью программного объекта агрегатного типа Запрос.
Передавая ранее созданному объекту текст запроса, на выходе вы получаете необходимую выборку данных.
В тексте запроса Вы можете использовать простейшие агрегатные функции (вроде Количество, Сумма и т.п.), а также собственные функции, описанные в глобальном модуле. Эти функции обязательно должны быть экспортными.
С помощью запросов можно извлекать информацию из таблиц объектов следующего типа:
- Справочник
- Документ
- Операция
- Счет
- Регистр
- ЖурналРасчетов
В общем случае синтаксис запроса включает следующие блоки (приведены в рекомендованной последовательности):
[Заголовок] ОбластьПеременных [ОбластьГруппировок] [ОбластьУсловий] [ОбластьФункций]
Особенность языка запросов на платформе 1С 7.7. заключается в том, что вы можете использовать эти области в любой последовательности. Однако, область переменных
должна располагаться всегда в начале, т.к. транслятор запроса однопроходный и выдаст ошибку при попытке использования переменной до ее описания. Я же рекомендую придерживаться одной общепринятой схемы построения текстов запросов. Так будет удобнее читать запросы Вам и вашим последователям.
Заголовок
Заголовок является необязательной частью запроса и включает в себя дополнительные системные фильтры, которые влияют на выборку данных:
- Период с … по … — уточняют период, за который выбирать объекты, привязанные к дате;
- Обрабатывать — уточняют, как поступать с объектами, помеченными на удаление;
- ОбрабатыватьДокументы — уточняют, как поступать с непроведенными документами;
- ОбрабатыватьОперации — уточняют, как поступать с операциями с выключенными проводками;
Подробнее: Заголовки запроса (Период с, Обрабатывать и ОбрабатыватьДокументы)
Область переменных
В обязательной области переменных описываются внутренние переменные запроса. Описание переменной запроса включает в себя имя переменной и путь к данным:
Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; Количество = Регистр.ОстаткиТМЦ.Количество;
Кроме того, переменные могут использоваться в других местах запроса: группировках, условиях и агрегатных функциях. В качестве имен переменных нельзя использовать зарезервированные ключевые слова языка запросов:
Без | Год | Групп |
Группировка | День | Документ |
И | Или | Квартал |
Когда | Месяц | Неделя |
НомерСтроки | Обрабатывать | ОбрабатыватьДокументы |
Период | ПериодЖурнала | ОбрабатыватьОперации |
По | С | СтрокаДокумента |
Упорядочить | Условие | Функция |
Подробнее: Переменные запроса
Область группировок
Необязательная область группировок на языке запросов выполняют несколько важных ролей:
- построение иерархической последовательности обхода выборки данных;
- рассчет промежуточных итогов агрегатных функций;
- упорядочивание данных;
Группировка Номенклатура;
Область условий
Необязательная область условий используется для наложения фильтров на данные БД чтобы сократить размер итоговой выборки. В условиях поддерживаются операции сравнения, а также вхождения в массив.
Условие (Количество > 0);
Подробнее: условия запроса.
Область функций
Используется для описания агрегатных функций рассчета итогов по группировкам запроса
Функция ОбщееКоличество = Сумма(Количество);