Иллюстрированный самоучитель по языку системы 1С:Предприятие

Операторы языка запросов

Сравните два примера:

Пример 1.

Здесь нас интересуют товары, встречающиеся в документах.

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

Документ.РасходнаяКредит.Товар,

Документ.РасходнаяНал.Товар,

Документ.РасходнаяРеализ.Товар,

Документ.Счет.Товар;

Пример 2.

Здесь нас интересуют сами документы указанных видов как таковые.

ДОКУМ = Документ.РасходнаяБН.ТекущийДокумент,

Документ.РасходнаяКредит.ТекущийДокумент,

Документ.РасходнаяНал.ТекущийДокумент,

Документ.РасходнаяРеализ.ТекущийДокумент,

Документ.Счет.ТекущийДокумект;

Использование для документов конструкции НомерСтроки в описании внутренней переменной, означает выборку номеров строк документов (не самих строк, а чисел, обозначающих номера строк в документе).

СТРОКА = Документ.РасходнаяБН.НомерСтроки;

Для регистров использование конструкции ТекущийДокумент в описании внутренней переменной означает выборку документов (целиком всего документа как объекта конфигурации), которые произвели движение по данному регистру.

Использование для регистра конструкции НомерСтроки в описании внутренней переменной, означает выборку связанных номеров строк тех документов, которые произвели движение по регистру (в случае, когда в Модулях документов в конфигурации перед движением регистра использовали метод ПривязыватьСтроку).

Пример:

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

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

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

|Период с НачДата по КонДата;

|ВидТоплива = Регистр.ПокупателиКолво.ВидыТоплива;

|Покуп = Регистр.ПокупателиКопво.Покупатели;

|Док = Регистр.ПокупателиКолво.ТекущийДокумент;

|Ном = Регистр.ПокупателиКолво.НомерСтроки;

|Вес = Регистр.ПокупателиКолво.Кг;

|Группировка ВидТоплива; // по измерению Регистра

|Группировка Док; //по документам, двигавшим Регистр

|Группировка Ном; // по номерам строк документов

|Функция ВсегоКолво = КонОст(Вес);

|Функция ПриходКолво = Приход(Вес);

|Условие(Покуп = Покупат);

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

;

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

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

Возврат;

КонецЕсли;

В программном модуле конфигурации (т. е. вне текста запроса) существует доступ (там, где это имеет смысл) к значениям всех объявленных в тексте запроса внутренних переменных, даже тех, которые не участвуют ни в группировках, ни в функциях. Другими словами, если объявленная в тексте запроса внутренняя переменная не задействована в запросе ни в группировке, ни в функции ни в условии, данная внутренняя переменная все же присутствует в запросе.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.