1С Предприятие 7.7. Документация

       

Условие


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

Синтаксис:

Условие(<ЛогическоеВыражение>);

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

Condition

Параметры:



<ЛогическоеВыражение>

Логическое выражение встроенного языка 1С:Предприятие.

Описание:

Оператор Условие назначает условие включения информации в запрос. Если значение <ЛогическоеВыражение> верно, то информация включается в запрос, иначе нет.

Пример:

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

"//{{ЗАПРОС(Одинарный)

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

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

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

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

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

|Условие(Ктг.Выбран() = 1);   // только для тех сотрудников

| //у кого заполнен реквизит Категория

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

;

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

Пример:

* Здесь показан отрывок текста процедуры, в которой формируется некоторый отчет, причем переменные:

ВыбТовар, ВыбОтдел, ВыбСотрудник

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

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

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

"//{{ЗАПРОС(Квоты)

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

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

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

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

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

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

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

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

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

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

|Условие(Товар.ПринадлежитГруппе(ВыбТовар) = 1);

|Условие(Отдел = ВыбОтдел);

|Условие(Сотрудник = ВыбСотрудник.Сотрудник);

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

;

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

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


   Возврат;

КонецЕсли;

В параметре оператора Условие, в принципе, можно записывать логические выражения любой сложности (по правилам встроенного языка 1С:Предприятие), используя любые логические операторы (>, <, =, >=, <>, И, ИЛИ, НЕ и другие), при этом в качестве операндов могут участвовать как внутренние, так и внешние переменные запроса (если существуют внутренняя и внешняя переменные с одинаковым именем, то использоваться по данному имени будет внутренняя переменная).

Пример:

Условие(Цена > 23.5);

Условие((Товар.ПринадлежитГруппе(ВыбТовар) = 1) И (Товар.Розн_Цена = 100));

Если в описании запроса использовано несколько операторов Условие, то они объединяются по логическому "И".

Пример:

* Использование двух операторов:

Условие(Товар.Наименование <> "Стол");

Условие(Товар.Наименование <> "Шкаф");

* аналогично записи одного оператора:

Условие((Товар.Наименование <> "Стол") И (Товар.Наименование<> "Шкаф"));

Логический оператор принадлежности

Кроме обычных логических операторов (>, <, =, >=, <=, <>, И, ИЛИ, НЕ) в операторе "Условие ..." языка запросов можно использовать дополнительный оператор — логический оператор принадлежности.

Синтаксис:

В

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

In

Описание:

Оператор языка запросов "Условие (А в Б);" говорит о том, что условие истинно, когда значение А является подмножеством значения Б.

Следует особо отметить, что если значение Б пустое (объект не выбран), то условие является истинным, в отличии от оператора «=» (равно).

Если на принадлежность проверяется значение типа элемент справочника, то проверка выполняется с учетом его возможного вхождения в группу справочника. Аналогично, проверка на принадлежность субсчета осуществляется с учетом его возможного вхождения в счет-группу.

В качестве включающего подмножества логического оператора принадлежности (второй параметр после слова «в») может выступать как простое значение, так и список значений. В этом случае проверка выполняется с учетом вы-шеотмеченных особенностей для каждой строки списка значений.



Скорость выполнения запросов оптимизирована под использование оператора принадлежности, как в клиент-серверной, так и в файл-серверной версии системы 1С:Предприятие.

Внимание. Логический оператор принадлежности не поддерживается встроенным языком системы 1С:Предприятие, а применяется только в языке запросов.

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

Пример:

* без использования логического оператора принадлежности

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

...

| Товар = Документ.ВидДокумента.Товар;";

...

Если ВыбТовар.Выбран() = 1 Тогда

   Если ВыбТовар.ЭтоГруппа() = 1 Тогда

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

               "Условие(Товар.ПринадлежитГруппе(ВыбТовар) = 1);";

   Иначе

      ТекстЗапроса = ТекстЗапроса + "Условие(Товар = ВыбТовар);";

   КонецЕсли

КонецЕсли;

* с использованием логического оператора принадлежности

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

...

|Товар = Документ.ВидДокумента.Товар;";

...

|Условие (Товар в ВыбТовар);

...

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