Идёт загрузка страницы...

htp://aptem.net.ru





Запросы


1С:Предприятие

Учебник

Основы 1С
Пошаговый пример
Конфигуратор
Встроенный язык
Справочники
Документы
Отчеты
Регистры
Запросы
Таблица значений
Список значений
Экранные формы
Встроенные функции
События
Конструкторы
Текстовые файлы
DBF-файлы
Файловая система
Диаграммы

Примеры

Мини-склад
Работенка
Почтальон Печкин
Денежки
Мини-библиотека
Доставочка
Реверси
Охота на лис
Конкурент-магазин
Кадровый учет

Простой склад

Бухгалтерия

Введение
Бухгалтерские счета
Операции и проводки
Бухгалтерские итоги
Бухгалтерский запрос

Простая бухгалтерия

Зарплата

Введение
Журналы расчетов
Виды и группы расчета
Календари
Мини-зарплата

Учебник / Запросы
Общая схема
Переменные в запросе
Группировка и сортировка
Двойная группировка
Функции в запросе

Условие отбора
Поймал новый русский золотую рыбку и спрашивает:
- Чего тебе надобно, золотая рыбка?


Общая схема выполнения запроса
Запрос -- это обращение к системе 1С с просьбой выбрать определенные данные из базы данных. Например, с помощью запроса можно быстро организовать выбор всех сотрудников с определенной должностью. Для организации запроса необходимо выполнить следующие действия.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "<текст запроса на особом языке запросов>"
Запрос.Выполнить(ТекстЗапроса);

//далее идет обработка результатов запроса


Переменные в запросе
С помощью переменных запроса происходит обращение к требуемым данным. Переменные запроса чаще всего ссылаются на справочники и документы. Кроме того можно ссылаться на журналы расчетов, регистры, бухгалтерские счета.

|ФИО = Справочник.Сотрудники.Наименование;
|Долж = Справочник.Сотрудники.Должность;
|ДатаПриема = Справочник.Сотрудники.ДатаПриема;
|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;
|";


Группировка и сортировка
Практически в любом запросе есть ключевое слово Группировка. Оно означает, что нужно выбрать из таблицы только те записи, у которых значение определенного поля различается. Этот запрос выберет из справочника Сотрудники список используемых должностей и отсортирует этот список по алфавиту.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
КонецЦикла;


Двойная группировка
Этот запрос совершает очень полезную работу: он группирует всех сотрудников по должностям. Заметьте, что сначала идет группировка по должности, а затем по сотруднику, это очень важно. Обратите внимание на переменную запроса Сотр. Она ссылается на строку справочника Сотрудники. Чтобы вывести ФИО сотрудника используется обращение к атрибуту объекта: Сотр.Наименование.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Группировка Сотр упорядочить по Сотр.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
............Пока Запрос.Группировка("Сотр")=1 Цикл
................Сообщить("......" + Запрос.Сотр.Наименование);
............КонецЦикла;
КонецЦикла;


Функции в запросе
Этот запрос совершает очень полезную работу: он подсчитывает, сколько сотрудников работает по каждой должности. Другие возможные функции приведены в Синтакс-помощнике.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Функция Колво = Счётчик();
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
...Сообщить("По должности " + Строка(Запрос.Долж) +
.............." работает " + Строка(Запрос.Колво) + " чел.");
КонецЦикла;


Условие отбора
Часто требуется ограничить выборку только нужными значениями. Например, этот запрос выбирает всех сотрудников с определенной должностью.

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|КодДолж = Справочник.Сотрудники.Должность.Код;
|Группировка Сотр упорядочить по Сотр.Наименование;
|Условие (КодДолж = 7);
|";
Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Сотр);
КонецЦикла;