Программирование в системе 1С Предприятие 7.7

  73c64bed     

Создание запроса


Запрос создается функцией «СоздатьОбъект(«Запрос»)». Для выполнения запроса используется функция «Выполнить(<ТекстЗапроса>)», которая возвращает 1, если запрос выполнился. <ТекстЗапроса> – это строковое выражение на “языке запросов”.

Пример:

НашЗапрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)

|СКЛАД = Документ.РасходнаяНакладная.Склад;

|ТОВАР = Документ.РасходнаяНакладная.Товар;

|КОЛИЧЕСТВО = Документ.РасходнаяНакладная.Количество;

|Группировка ТОВАР Упорядочить По ТОВАР.Код;

|Группировка СКЛАД Упорядочить По СКЛАД.Код;

|Функция КОЛ = Сумма(КОЛИЧЕСТВО);

|"//}}ЗАПРОС

;

// Если ошибка в запросе, то выход из процедуры

Если НашЗапрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

Структура временного набора данных, созданная запросом "НашЗапрос" после его выполнения, представлена на следующем рисунке:

Товар

Склад

Кол.

Итог общий

X

X

62

Итог по товару Стол

Стол

X

35

Строка по товару Стол на складе Первый

Стол

Первый

10

Строка по товару Стол на складе Второй

Стол

Второй

20

Строка по товару Стол на складе Третий

Стол

Третий

5

Итог по товару Стул

Стул

X

9

Строка по товару Стул на складе Второй

Стул

Второй

7

Строка по товару Стул на складе Третий

Стул

Третий

2

Итог по товару Шкаф

Шкаф

X

18

Строка по товару Шкаф на складе Первый

Шкаф

Первый

8

Строка по товару Шкаф на складе Третий

Шкаф

Третий

10

После выполнения запроса в программе можно использовать полученный временный набор данных. Изначально объект "НашЗапрос" спозиционирован на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому общие итоги по запросу можно использовать сразу же после выполнения запроса.

Далее, допустим, в цикле мы проходим только по самой внешней группировке запроса: "Товар". В теле этого цикла объект "НашЗапрос" позиционируется во временном наборе данных на записи, содержащие итоги по каждому конкретному товару, поэтому в теле этого цикла мы можем использовать итоги по товарам.

После завершения цикла по самой внешней группировке, объект "НашЗапрос" снова позиционируется на первой записи временного набора данных, где содержится общий итог по запросу. Поэтому, общие итоги по запросу можно использовать в двух местах: до и после цикла по самой внешней группировке запроса.

//Итог общий

Пока НашЗапрос.Группировка("Товар") = 1 Цикл

//Итог по товару

КонецЦикла;

//Итог общий

 



Содержание раздела