Работа с запросами в 1С:Предприятие

Бесплатная консультация юриста

+7 (800) 302-87-29

Реклама jurik.ru

В системе 1С:Предприятие работа с данными часто осуществляется через язык запросов. Он позволяет формировать сложные условия выборки‚ объединять таблицы‚ выполнять агрегатные функции и сразу получать результат в виде объекта Выборка. Ниже рассмотрены основные шаги: создание запроса‚ его выполнение и работа с полученной выборкой.


Что такое запрос в 1С

Запрос – это текстовый объект‚ описывающий набор инструкций для извлечения данных из информационной базы. Он аналогичен SQL‑запросам‚ но использует собственный синтаксис 1С и работает непосредственно с объектами конфигурации (справочниками‚ документами‚ регистрами и т.д.).

  • Источник данных – таблица или виртуальная таблица (например‚ Справочник.Контрагенты).
  • Поля – выбираемые атрибуты (реквизиты) источника.
  • Условия – ограничения (WHERE)‚ соединения (JOIN)‚ группировки (GROUP BY) и сортировки (ORDER BY).
  • Функции – агрегатные (SUM‚ COUNT‚ MIN‚ MAX) и скалярные (Дата‚ Строка‚ Число и др.).

Основные конструкции языка запросов

Ниже приведены типичные элементы‚ которые встречаются в большинстве запросов.

ВЫБРАТЬ
 Контрагент.Наименование КАК Наименование‚
 Контрагент.ИНН КАК ИНН‚
 СУММА(Документ.Сумма) КАК СуммаДокументов
ИЗ
 Справочник.Контрагенты КАК Контрагент
 ЛЕВОЕ СОЕДИНЕНИЕ
 Документ.РеализацияТоваровУслуг КАК Документ
 ПО Контрагент.Ссылка = Документ.Контрагент
ГДЕ
 Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
СГРУППИРОВАТЬ ПО
 Контрагент.Наименование‚
 Контрагент.ИНН
УПОРЯДОЧИТЬ ПО
 СуммаДокументов УБЫВ

В примере:

  • Выбираются наименование и ИНН контрагента‚ а также сумма его документов за период.
  • Используется левое соединение‚ чтобы включить контрагентов без документов (сумма будет равна NULL).
  • Параметры &ДатаНачала и &ДатаОкончания передаются при выполнении запроса.

Как получить выборку

Получение данных из запроса происходит в три этапа:

  1. Создание объекта Запрос и задание его текста.
  2. Выполнение запроса методом Выполнить – получаем объект РезультатЗапроса.
  3. Получение выборки через метод Выбрать у результата и итерация по ней.

Создание объекта Запрос

Запрос = Новый Запрос;
Запрос.Текст =
 "ВЫБРАТЬ
 Контрагент.Наименование КАК Наименование‚
 Контрагент.ИНН КАК ИНН‚
 СУММА(Документ.Сумма) КАК СуммаДокументов
 ИЗ
 Справочник.Контрагенты КАК Контрагент
 ЛЕВОЕ СОЕДИНЕНИЕ
 Документ.РеализацияТоваровУслуг КАК Документ
 ПО Контрагент.Ссылка = Документ.Контрагент
 ГДЕ
 Документ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
 СГРУППИРОВАТЬ ПО
 Контрагент.Наименование‚
 Контрагент.ИНН
 УПОРЯДОЧИТЬ ПО
 СуммаДокументов УБЫВ";

Выполнение запроса

// Устанавливаем параметры
Запрос.УстановитьПараметр("ДатаНачала"‚ НачалоДня(ТекущаяДата));
Запрос.УстановитьПараметр("ДатаОкончания"‚ КонецДня(ТекущаяДата));

// Выполняем
Результат = Запрос.Выполнить;

Получение и обработка выборки

Выборка = Результат.Выбрать;

Пока Выборка;Следующий Цикл
 // Доступ к полям по именам‚ указанным в запросе
 Наименование = Выборка.Наименование;
 ИНН = Выборка.ИНН;
 СуммаДокументов = Выборка.СуммаДокументов;

 // Пример вывода в сообщение
 Сообщение = Новый СообщениеПользователю;
 Сообщение.Текст = СтрокШаблона(
 "Контрагент: %1‚ ИНН: %2‚ Сумма за день: %3"‚
 Наименование‚
 ИНН‚
 СуммаДокументов
 );
 Сообщение.Сообщить;
КонецЦикла;

Важно помнить‚ что после завершения работы с выборкой объект Выборка автоматически закрывается‚ но при необходимости можно вызвать Выборка.Закрыть явно.


Полезные советы и типичные ошибки

  • Параметры всегда передавайте через УстановитьПараметр – это защищает от инъекций и обеспечивает корректную работу с типами данных.
  • Пустые результаты проверяйте через Результат.Пустой перед получением выборки‚ чтобы избежать лишних циклов.
  • Большие объёмы данных – если ожидается множество строк‚ рассмотрите использование ВиртуальнаяТаблица или пакетную обработку (Выбрать с ограничением TOP N).
  • Типы полей – при работе с датами и числами убедитесь‚ что типы совпадают с типами полей в базе‚ иначе могут возникнуть ошибки неявного приведения.
  • Отладка – выведите текст запроса в консоль (Сообщить(Запрос.Текст)) и проверьте его в конструкторе запросов 1С.

Язык запросов в 1С – мощный инструмент для извлечения и агрегирования данных. Понимание его синтаксиса и правильного порядка работы с объектами Запрос‚ РезультатЗапроса и Выборка позволяет эффективно решать задачи аналитики‚ формирования отчётов и обработки документов. Следуя приведённым примерам и рекомендациям‚ вы сможете быстро получать нужные выборки и избегать типичных pitfalls.