Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1C_pr77_Lang2.doc
Скачиваний:
7
Добавлен:
20.11.2019
Размер:
2.52 Mб
Скачать

ОбрабатыватьДокументы

Назначить условие обработки документов в запросе.

Синтаксис:

ОбрабатыватьДокументы[Непроведенные|Проведенные|Все];

Англоязычный синоним:

ProcessDocuments[NonTransacted|Transacted|All];

Описание:

Оператор ОбрабатыватьДокументы назначает режим обработки докумен­тов в запросе. В операторе указывается, какими документами должен оперировать запрос: проведенными, непроведенными или теми и другими. По умолчанию в запросе обрабатываются только проведенные документы.

Пример:

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

ТекстЗапроса = "//{{ЗАПРОС(ОбработкаДок)

|Период с '01.10.96' по '05.10.96';

|ОбрабатыватьДокументы Все;

|Тов = Справочник.Товары.ТекущийЭлемент, Документ.РасхНакл.Товар;

|Группировка Тов упорядочить по Тов.Наименование;

|Группировка Документ;

|Группировка СтрокаДокумента;

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

;

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

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

Возврат;

КонецЕсли;

ОбрабатыватьОперации

Назначить условие обработки бухгалтерских операций в запросе.

Синтаксис:

ОбрабатыватьОперации[Включенные|Выключенные|Все];

Англоязычный синоним:

ProcessOperations[On|Off|All];

Описание:

Оператор ОбрабатыватьОперации назначает режим обработки бухгалтер­ских операций в запросе. В операторе указывается, какими операциями должен оперировать запрос: с включенными проводками, с выключенными проводками или теми и другими. По умолчанию в запросе обрабатываются только операции с включенными проводками.

Пример:

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

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

"//{{ЗАПРОС(ОбработкаОпер)

|Период с '01.10.96' по '05.10.96';

|ОбрабатыватьОперации Все;

|Опер = Операция.ТекущийДокумент;

|Группировка Опер;

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

;

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

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

Возврат;

КонецЕсли;

Обрабатывать

Назначить условие обработки помеченных на удаление объектов в запросе.

Синтаксис:

Обрабатывать[ПомеченныеНаУдаление|НеПомеченныеНаУдаление|Все];

Англоязычный синоним:

Process[MarkedOnRemoving|NonMarkedOnRemoving|All];

Описание:

Оператор Обрабатывать назначает режим обработки помеченных на уда­ление объектов в запросе. В операторе указывается, какими объектами должен оперировать запрос: не помеченными на удаление, помеченными на удаление или теми и другими. По умолчанию в запросе обрабатываются все объекты.

Пример:

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

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

"//{{ЗАПРОС(Обработка)

|Период с '01.10.96' по '05.10.96';

|Обрабатывать НеПомеченныеНаУлаление;

|Товар = Справочник.Товар.ТекущийЭлемент;

|Группировка Товар упорядочить по Товар.Наименование;

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

;

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

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

Возврат;

КонецЕсли;

Функция

Вычисляет функцию и включает ее результат в запрос.

Синтаксис:

Функция <ИмяФункции> = <ТипФункции> (<Параметр>|<УточненныйПараметр>)

[Когда (<Условие>)];

Англоязычный синоним:

Function <ИмяФункции>= <ТипФункции> (<Параметр>|<УточненныйПараметр>)

[When (<Условие>)];

Параметры:

<ИмяФункции>

Имя, которое присваивается функции. По этому имени можно в дальнейшем обращаться к значению вычисленной функции из вызы­вающего программного модуля как к атрибуту запроса. Данную внутреннюю переменную заранее объявлять не нужно. Она фактически неявно объявляется в операторе Функция.

<TипФyнкции>

Ключевое слово одной из встроенных функ­ций языка. Может быть одним из приведен­ных ниже.

<Параметр>

Имя объявленной ранее внутренней перемен­ной, значение которой используется как пара­метр встроенной функции <ТипФункции>. В функциях: Сумма, Среднее, Максимум, Минимум в качестве данного параметра воз­можно использование арифметического выра­жения в терминах встроенного языка 1С:Предприятие.

<УточненныйПараметр>

Конкретизация объявленной ранее внутренней переменной, значение которой используется как аргумент встроенной функции < ТипФункции>.

Когда

Необязательное добавочное ключевое слово, использование которого в команде означает, что вычисление функции следует производить только при условии, когда заданное логиче­ское выражение <Условие> истинно.

<Условие>

Логическое выражение встроенного языка 1С:Предприятие. В логическом выражении могут участвовать как внутренние, так и внешние переменные запроса (см. описание метода Условие). Используется только после ключевого слова Когда.

Описание:

Оператор Функция вычисляет функцию <ТипФункции> и присваивает ее значение внутренней переменной <ИмяФункции>.

Типы применяемых функций предопределены и могут быть следующими:

Тип Функции

Англояз. Синоним

Выполняемое действие

Сумма

Sum

Вычисляет сумму выбранных по запросу зна­чений параметра.1

Среднее

Avg

Вычисляет среднее из выбранных по запросу значений параметра.

Минимум

Min

Вычисляет минимум из выбранных по запросу значений параметра.

Максимум

Мах

Вычисляет максимум из выбранных по запро­су значений параметра.

Счётчик

Count

Подсчитывает количество записей, вошедших в выборку.

НачОст

BegRest

Вычисляет начальный остаток для выбранных по запросу значений параметра.2

КонОст

EndRest

Вычисляет конечный остаток для выбранных по запросу значений параметра.2

Приход

Debit

Вычисляет приход для выбранных но запросу значений параметра.2

Расход

Credit

Вычисляет расход для выбранных по запросу значений параметра.2

СНД

IDB

Вычисляет сальдо начальное дебетовое для выбранных по запросу значений параметра.3

СКД

FDB

Вычисляет сальдо конечное дебетовое для выбранных по запросу значений параметра.3

СНК

ICD

Вычисляет сальдо начальное кредитовое для выбранных по запросу значений параметра.3

СКК

FCD

Вычисляет сальдо конечное кредитовое для выбранных по запросу значений параметра.3

ДО

TD

Вычисляет дебетовые обороты для выбранных по запросу значений параметра.

КО

TC

Вычисляет кредитовые обороты для выбран­ных по запросу значений параметра.3

КорДО

CorTD

Вычисляет дебетовые обороты между коррес­пондирующим счетам или субконто для вы­бранных по запросу значений параметра.3, 4

КорКО

CorTC

Вычисляет кредитовые обороты между кор­респондирующим счетам или субконто для выбранных по запросу значений параметра.3, 4

1Замечание: Для ресурсов оборотных регистров допускается вызывать только тип функции "Сумма".

2Замечание: Типы функций НачОст, КонОст, Приход, Расход можно ис­пользовать только с параметрами, указывающими на ресурсы регистров остатков. Для ресурсов регистров остатков другие типы функций вызы­вать нельзя.

3Замечание: Функции СНД, СНК, СКД, СКК, ДО, КО, КорДО, КорКО можно использовать только с реквизитами проводки: Сумма, Количество или ВалСумма.

4Замечание: Функции КорДО и КорКО накапливают значения только тогда когда в запросе есть обращение к реквизитам проводок Счет, КорСчет Субконто или КорСубконто.

Замечание: В программном модуле, где используется запрос, <ИмяФункции> будет являться атрибутом запроса. При помощи данного атрибута можно обращаться к значению вычисленной в запросе функции.

Замечание: В функциях: Сумма, Среднее, Максимум, Минимум в качест­ве аргумента возможно использование арифметического выражения в терминах встроенного языка.

Пример:

...

|КолВо = Документ.ВидДокумента.Количество;

|Цена = Документ.ВидДокумента.Цена;

|Функция Сум = Сумма(КолВо * Цена);

|Функция Макс = Максимум(Окр(КолВо) * Окр(Цена));

|Функция Средн = Среднее(ФункцияОпределеннаяВМодуле(КолВо, Цена));

...

Пример:

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

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

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

"//{{ЗАПРОС(Функции)

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

|Оклад = Справочник.Сотрудники.Оклад;

|Подр = Справочник.Сотрудники.Подразделение;

|Ктг = Справочник.Сотрудники.Категория;

|Группировка Подр без групп;

|Группировка Ктг без групп;

|Функция Всего = Сумма(Оклад);

|Условие((Ктг.Выбран() = 1) И (Подр.Выбран() = 1));

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

;

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

Возврат;

КонецЕсли;

// ...

Итог = Запрос.Всего;

// ...

Оператор Функция предназначен для вычисления и накопления некоторых численных значений в процессе формирования выборки по запросу.

Кроме того, при формировании временного набора данных запрос специ­ально формирует итоговые записи, в которые заносит накопленные значения вычисленных функций для каждой вложенной Группировки (подробнее об этом см. главу данной книги «Структура запросов и методика их использова­ния»).

Операторы функций в запросе можно опускать, тогда запрос просто не бу­дет ничего вычислять, а просто во временный набор данных заносятся записи со значениями Группировок. Однако это справедливо только для работы запро­сов по справочникам и по документам. При работе запроса по регистрам следу­ет помнить, что в этом случае обязательно наличие Функций, причем только в том случае, когда их вычисленные значения отличны от нуля (хотя бы одной из заданных Функций), найденные объекты включаются во временный набор данных, формируемый запросом. Если при работе запроса по регистрам в тек­сте запроса операторы функций опущены, то программа не выдаст никакого сообщения об ошибке, добросовестно пройдет по всем Группировкам, не вы­числит никаких значений Функций и, значит, ничего не запишет во временном файле.

При создании в тексте запроса внутренней переменной, которую вы предпо­лагаете использовать в качестве параметра оператора Функция, надо учитывать, что тип этой внутренней переменной должен быть «число», т. к. функции в языке запросов обрабатывают только численные значения.

В тексте запроса, при описании оператора Функция можно использовать необязательное ключевое слово Когда, использование которого в операторе означает, что вычисление функции следует производить только при условии, что значение логического выражения, заданного в параметре ключевого слова является ИСТИНА. Синтаксис применяемого логического выражения полно­стью аналогичен синтаксису разрешенному к применению в операторах Условие.

Следует понимать, что не все функции внутри конкретной группировки за­проса могут иметь четко интерпретируемый смысл. Например, для группиров­ки по документу движения регистра следующие функции

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

|Функция РасхКол = Расход(Количество);

имеют четкий смысл — приращения, сделанные документом при движении регистра. С другой стороны, в той же группировке следующие функции:

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

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

явно не имеют смысла (в запросах по регистрам, обычно задают период за­проса при помощи оператора Период C. Функция НачКол в данном примере должна по смыслу показывать остаток ресурса "Количество" на начальную дату запроса. Внутри группировки по документу вопрос: «Какой начальный остаток ресурса на дату 10.01.97?» по документу, проведенному, например, 13.01.97, не имеет смысла). Поэтому в таких ситуациях функция будет иметь нулевое значение.

Пример:

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

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

'//{{ЗАПРОС(Функции)

|Период с ДатаОтчета;

|Товар = Регистр.КвотыТоваров.Товар;

|Отдел = Регистр.КвотыТоваров.Отдел;

|Сотрудник = Регистр.КвотыТоваров.Сотрудник;

|Партнер = Регистр.КвотыТоваров.Партнер;

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

|Количество = Регистр.КвотыТоваров.КвотаТовара;

|Группировка Товар;

|Группировка Отдел;

|Группировка Сотрудник;

|Группировка Партнер;

|Группировка Док;

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

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

|Функция РасхКол = Расход(Количество);

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

|// Следующие Функции вычисляем только при определенных

|// условиях, чтобы получить отфильтрованные итоги

|Функция ПрихКолТов = Приход(Количество) Когда (Док.ФлагТовара = 1);

|Функция РасхКолТов = Расход(Количество) Когда (Док.ФлагТовара = 1);

|Функция ПрихКолОтд = Приход(Количество) Когда (Док.ФлагОтдела = 1);

|Функция РасхКолОтд = Расход(Количество) Когда (Док.ФлагОтдела = 1);

|Функция ПрихКолСотр = Приход(Количество) Когда (Док.ФлагСотрудника = 1);

|Функция РасхКолСотр = Расход(Количество) Когда (Док.ФлагСотрудника = 1);

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

;

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

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

Возврат;

КонецЕсли;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]