1с как вывести пустое условие в запросе
Перейти к содержимому

1с как вывести пустое условие в запросе

  • автор:

проверка на пустую строку в запросе

«Если в тексте запроса надо сделать проверку на пустое значение ссылочного типа, это делается так:
«ГДЕ Поле = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)»;
А если «Поле» — это строковый тип, как его проверить на пустую строку?»

активный пользователь
Дата регистрации: 18.02.2002
Сообщений: 20937
24.01.2014 12:23

> А если «Поле» — это строковый тип, как его проверить на пустую строку?

ГДЕ Поле = """"

читатель
Дата регистрации: 22.04.2008
Сообщений: 111
24.01.2014 15:46

Спасибо. Все гениальное — просто))

Показывать по 10 20 40 сообщений

Читают тему:

Мероприятия

© ООО «1С-Паблишинг» (материалы)

При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.

Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.

Редакция уважает мнение авторов, но не всегда разделяет его.

Дизайн сайта

© ООО «1C» 2000-2024 г.

Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.

Пустая ссылка, дата или строка в запросе 1С 8.3

В данной статье рассмотрены примеры работы с пустыми значениями в запросах 1С 8. Как указать пустую дату, пустую строку или пустую ссылку в языке запросов – читайте далее.

//любое пустое значение можно задать в виде параметра //Ниже пример запроса, который возвращает пустые значения, переданные в качестве параметра Запрос = Новый Запрос("ВЫБРАТЬ | &ПустаяДата КАК ПустаяДата, | &ПустаяСтрока КАК ПустаяСтрока, | &ПустаяСсылкаНаТовар КАК ПустаяСсылкаНаТовар, | &ПараметрNULL КАК ПараметрNULL, | &ПараметрНеопределено КАК ПараметрНеопределено"); Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1)); Запрос.УстановитьПараметр("ПустаяСтрока", ""); Запрос.УстановитьПараметр("ПустаяСсылкаНаТовар", Справочники.Товары.ПустаяСсылка()); Запрос.УстановитьПараметр("ПараметрNULL", Null); Запрос.УстановитьПараметр("ПараметрНеопределено", Неопределено);

Пустая дата в запросе 1С 8

//Кроме того, пустые значения можно задать непосредственно в запросе //Для формирования пустой даты используется конструкция ДатаВремя(1,1,1) //Пустая строка заключается в двойные кавычки //Пустая ссылка устанавливается при помощи оператора Значение // Запрос возвращает документы установки цен с пустой датой утверждения Запрос = Новый Запрос("ВЫБРАТЬ | УстановкаЦен.Ссылка КАК Ссылка |ИЗ | Документ.УстановкаЦен КАК УстановкаЦен |ГДЕ | УстановкаЦен.ДатаУтверждения = ДАТАВРЕМЯ(1, 1, 1)");

Проверка на пустую строку в запросе 1С 8.3

//Запрос вернет все документы установки цен, где не заполнен комментарий Запрос = Новый Запрос("ВЫБРАТЬ | УстановкаЦен.Ссылка КАК Ссылка |ИЗ | Документ.УстановкаЦен КАК УстановкаЦен |ГДЕ | УстановкаЦен.Комментарий = """"");

Пустая ссылка (Значение) в запросе 1С 8

// Запрос вернет все товары, у которых не заполнен основной поставщик Запрос = Новый Запрос("ВЫБРАТЬ | Товары.Ссылка КАК Ссылка |ИЗ | Справочник.Товары КАК Товары |ГДЕ | Товары.ОсновнойПоставщик = Значение(Справочник.Контрагенты.ПустаяСсылка)");

Проверка на NULL в запросе

Значение типа NULL может появиться в результате использования соединений, либо при обращении к недоступным реквизитам (реквизиты групп у элементов и реквизиты элементов у групп будут иметь тип NULL)

//Запрос вернет все товары, по которым нет остатков на складе Запрос = Новый Запрос("ВЫБРАТЬ | Товары.Ссылка КАК Ссылка |ИЗ | Справочник.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки | ПО ОстаткиТоваровОстатки.Товар = Товары.Ссылка |ГДЕ | ОстаткиТоваровОстатки.Товар ЕСТЬ NULL");

Проверка на пустой результат выполнения запроса

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

Возврат НЕ Запрос.Выполнить().Пустой()

Методическая рекомендация (полезный совет)

2. В то же время если требуется выбрать (или выгрузить) результат запроса, то предварительный вызов метода Пустой не требуется.
Например, вместо:

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда // избыточный вызов
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
.

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
.

Пустая ссылка в запросе 1С 8.3

Анна Викулина

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

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

Виды пустых значений

Рассмотрим типы пустых значений, которые могут встретиться или потребоваться в запросе.

  • Для типа Число – пустым значением является ноль – 0.
  • Для типа Строка – пустая строка – «».
  • Для типа Дата – первое января первого года – 01.01.0001 00:00:00. Именно с этой даты ведется отсчет времени в 1С.*
  • Для типа Булево – значением по умолчанию, технически, является Ложь, но логически оба значения типа являются заполненными. Поэтому принятие решения о том пустое значение Ложь или нет, основывается на логике конкретного алгоритма.

*Будьте внимательны, вне 1С существуют различные системы счисления дат с разными точками отсчета.

Отсутствующее значение в полном смысле соответствует только типу Null. Этот тип содержит лишь одно значение, которое обозначает отсутствие значения.

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

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

Работа с пустыми значениями в запросе

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

Типы Число, Строка, Булево описываются в запросе как во встроенном языке:

ВЫБРАТЬ 0 КАК ПримерТипаЧисло, "Привет мир" КАК ПримерТипаСтрока, Истина КАК ПримерТипаБулево

Неопределено, являясь по существу примитивным типом, описывается аналогично:

Выбрать Партии.Период Из РегистрНакопления.Партии Как Партии Где Остатки.ДокументПартии = Неопределено

Пустые ссылочные значения определяются немного сложнее. У всех ссылочных объектов предусмотрено предопределенное служебное значение ПустаяСсылка. Благодаря этому есть возможность единым способом выбрать пустую ссылку – через функцию Значение:

Выбрать Значение(Справочник.Номенклатура.ПустаяСсылка) Как Пустая Номенклатура

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

  • Оператор Есть Null позволяет создать логическое выражение сравнивающее выбранное значение со значением Null.
  • Функция ЕстьNull возвращает первый аргумент, если он не равен Null, и второй аргумент в обратном случае.

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

Практические примеры

Проверка на пустую ссылку

С использованием функции Значение

Выбрать Товары.Ссылка Как Номенклатура, Товары.Ссылка = Значение(Справочник.Номенклатура.ПустаяСсылка) Как ЭтаСсылкаПустая Из втТовары Как втТовары

С использованием оператора Есть Null

Выбрать Товары.Ссылка Как Номенклатура, Товары.Ссылка Есть Null Как ЭтаСсылкаПустая Из втТовары Как втТовары

Null при левом или полном соединении

Проверка на Null

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

Выбрать втТовары.Ссылка Как Номенклатура, Остатки.КоличествоОстаток Как Количество, Остатки.КоличествоОстаток Есть Null Как НетОстатка Из втТовары как втТовары Левое Соединение РегистрНакопления.ТоварыНаСкладах.Остатки Как Остатки По втТовары.Ссылка = Остатки.Номенклатура

Обработка Null-значений

Модификация предыдущего запроса для демонстрации часто встречающейся методики по получению каких-либо значений по умолчанию, взамен отсутствующих. В данном примере с использованием функции ЕстьNull, производится замена отсутствующего значения остатка, на логически правильное 0.

Выбрать втТовары.Ссылка Как Номенклатура, ЕстьNull(Остатки.КоличествоОстаток, 0) Как Количество Из втТовары как втТовары Левое Соединение РегистрНакопления.ТоварыНаСкладах.Остатки Как Остатки По втТовары.Ссылка = Остатки.Номенклатура

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *