В системе 1С:Предприятие работа с данными часто осуществляется через язык запросов. Он позволяет формировать сложные условия выборки‚ объединять таблицы‚ выполнять агрегатные функции и сразу получать результат в виде объекта Выборка. Ниже рассмотрены основные шаги: создание запроса‚ его выполнение и работа с полученной выборкой.
Что такое запрос в 1С
Запрос – это текстовый объект‚ описывающий набор инструкций для извлечения данных из информационной базы. Он аналогичен SQL‑запросам‚ но использует собственный синтаксис 1С и работает непосредственно с объектами конфигурации (справочниками‚ документами‚ регистрами и т.д.).
- Источник данных – таблица или виртуальная таблица (например‚
Справочник.Контрагенты). - Поля – выбираемые атрибуты (реквизиты) источника.
- Условия – ограничения (WHERE)‚ соединения (JOIN)‚ группировки (GROUP BY) и сортировки (ORDER BY).
- Функции – агрегатные (SUM‚ COUNT‚ MIN‚ MAX) и скалярные (Дата‚ Строка‚ Число и др.).
Основные конструкции языка запросов
Ниже приведены типичные элементы‚ которые встречаются в большинстве запросов.
ВЫБРАТЬ Контрагент.Наименование КАК Наименование‚ Контрагент.ИНН КАК ИНН‚ СУММА(Документ.Сумма) КАК СуммаДокументов ИЗ Справочник.Контрагенты КАК Контрагент ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Документ ПО Контрагент.Ссылка = Документ.Контрагент ГДЕ Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО Контрагент.Наименование‚ Контрагент.ИНН УПОРЯДОЧИТЬ ПО СуммаДокументов УБЫВ
В примере:
- Выбираются наименование и ИНН контрагента‚ а также сумма его документов за период.
- Используется левое соединение‚ чтобы включить контрагентов без документов (сумма будет равна NULL).
- Параметры
&ДатаНачалаи&ДатаОкончанияпередаются при выполнении запроса.
Как получить выборку
Получение данных из запроса происходит в три этапа:
- Создание объекта
Запроси задание его текста. - Выполнение запроса методом
Выполнить– получаем объектРезультатЗапроса. - Получение выборки через метод
Выбратьу результата и итерация по ней.
Создание объекта Запрос
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Контрагент.Наименование КАК Наименование‚ Контрагент.ИНН КАК ИНН‚ СУММА(Документ.Сумма) КАК СуммаДокументов ИЗ Справочник.Контрагенты КАК Контрагент ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Документ ПО Контрагент.Ссылка = Документ.Контрагент ГДЕ Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО Контрагент.Наименование‚ Контрагент.ИНН УПОРЯДОЧИТЬ ПО СуммаДокументов УБЫВ";
Выполнение запроса
// Устанавливаем параметры
Запрос.УстановитьПараметр("ДатаНачала"‚ НачалоДня(ТекущаяДата));
Запрос.УстановитьПараметр("ДатаОкончания"‚ КонецДня(ТекущаяДата));
// Выполняем
Результат = Запрос.Выполнить;
Получение и обработка выборки
Выборка = Результат.Выбрать; Пока Выборка;Следующий Цикл // Доступ к полям по именам‚ указанным в запросе Наименование = Выборка.Наименование; ИНН = Выборка.ИНН; СуммаДокументов = Выборка.СуммаДокументов; // Пример вывода в сообщение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = СтрокШаблона( "Контрагент: %1‚ ИНН: %2‚ Сумма за день: %3"‚ Наименование‚ ИНН‚ СуммаДокументов ); Сообщение.Сообщить; КонецЦикла;
Важно помнить‚ что после завершения работы с выборкой объект Выборка автоматически закрывается‚ но при необходимости можно вызвать Выборка.Закрыть явно.
Полезные советы и типичные ошибки
- Параметры всегда передавайте через
УстановитьПараметр– это защищает от инъекций и обеспечивает корректную работу с типами данных. - Пустые результаты проверяйте через
Результат.Пустойперед получением выборки‚ чтобы избежать лишних циклов. - Большие объёмы данных – если ожидается множество строк‚ рассмотрите использование
ВиртуальнаяТаблицаили пакетную обработку (Выбратьс ограничениемTOP N). - Типы полей – при работе с датами и числами убедитесь‚ что типы совпадают с типами полей в базе‚ иначе могут возникнуть ошибки неявного приведения.
- Отладка – выведите текст запроса в консоль (
Сообщить(Запрос.Текст)) и проверьте его в конструкторе запросов 1С.
Язык запросов в 1С – мощный инструмент для извлечения и агрегирования данных. Понимание его синтаксиса и правильного порядка работы с объектами Запрос‚ РезультатЗапроса и Выборка позволяет эффективно решать задачи аналитики‚ формирования отчётов и обработки документов. Следуя приведённым примерам и рекомендациям‚ вы сможете быстро получать нужные выборки и избегать типичных pitfalls.