проверка на пустую строку в запросе
«Если в тексте запроса надо сделать проверку на пустое значение ссылочного типа, это делается так:
«ГДЕ Поле = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)»;
А если «Поле» — это строковый тип, как его проверить на пустую строку?»
активный пользователь
Дата регистрации: 18.02.2002
Сообщений: 20934
24.01.2014 12:23
> А если «Поле» — это строковый тип, как его проверить на пустую строку?
ГДЕ Поле = """"
читатель
Дата регистрации: 22.04.2008
Сообщений: 111
24.01.2014 15:46
Спасибо. Все гениальное — просто))
Показывать по 10 20 40 сообщений
Читают тему:
Мероприятия
© ООО «1С-Паблишинг» (материалы)
При использовании материалов активная прямая гиперссылка на перепечатанный материал обязательна.
Редакция БУХ.1С не несет ответственности за мнения и информацию, опубликованную в комментариях к материалам.
Редакция уважает мнение авторов, но не всегда разделяет его.
Дизайн сайта
© ООО «1C» 2000-2023 г.
Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу, а также дать вам возможность делиться информацией в социальных сетях. Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.
Пустая ссылка в запросе 1с проверка и использование
В статье вы узнаете, как применяется пустая ссылка в запросе 1с. Пустые ссылки можно использовать в различных конструкциях языка запросов:
- условиях раздела ГДЕ;
- в качестве значения поля запроса;
- конструкциях ВЫБОР КОГДА…;
- конструкциях ЕСТЬNULL;
- условиях связей таблиц.
Пустая ссылка в условиях запросов 1с
Для использования пустой ссылки ее необходимо передать ее в запрос при помощи параметра. Также можно использовать конструкцию ЗНАЧЕНИЕ.
ЗНАЧЕНИЕ(.ПустаяСсылка)
Здесь ОбъектМетаданных выражение вида:
- Документ.ИмяДокумента;
- Справочник.ИмяДокумента и т.д.
Пример 1. При помощи запроса получить верхний уровень иерархии справочника Номенклатура.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
Пример 2. При помощи запроса получить все элементы справочника Номенклатура, кроме тех, у кого нет родителя.
Запрос = Новый Запрос; ПустаяСсылка = Справочники.Номенклатура.ПустаяСсылка; Запрос.УстановитьПараметр("ПустаяСсылка", ПустаяСсылка); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | НЕ Номенклатура.Родитель = &ПустаяСсылка";
Следует помнить, что в запросе нельзя реализовать проверку сразу на все пустые ссылки. Всегда требуется указывать, пустую ссылку какого справочника, документа вы имеете в виду.
Пустая ссылка в качестве значения поля
Пустая ссылка в запросе 1с может использоваться в качестве значения поля. Как в чистом виде, так и в конструкциях ВЫБОР КОГДА… или ЕСТЬNULL.
Пример 3. Создать пустую временную таблицу ТаблицаНоменклатуры.
Запрос.Текст = "ВЫБРАТЬ | ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура, | 0 КАК Цена |ПОМЕСТИТЬ ТаблицаНоменклатуры |ГДЕ | ЛОЖЬ
Пример 4. При помощи запроса получить список номенклатуры со значениями дополнительного сведения Цвет.
Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | ЕСТЬNULL(Сведения.Значение, | ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка)) КАК Цвет |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК Сведения | ПО Номенклатура.Ссылка = Сведения.Объект | И Сведения.Свойство = &СвойствоЦвет";
Пример 5. В запросе из предыдущего примера использовать конструкцию ВЫБОР КОГДА… вместо ЕСТЬNULL.
Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | ВЫБОР | КОГДА НЕ Сведения.Значение ЕСТЬ NULL | ТОГДА Сведения.Значение | ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ЗначенияСвойствОбъектов.ПустаяСсылка) | КОНЕЦ КАК Цвет |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК Сведения | ПО Номенклатура.Ссылка = Сведения.Объект | И Сведения.Свойство = &СвойствоЦвет";
Пустая ссылка в связях запроса 1с
Проверку на пустую ссылку можно использовать и в условиях связи таблиц.
Пример 6. Получить список номенклатуры, а также значения дополнительного сведения Индекс. Индекс выводить только для номенклатуры с заполненным реквизитом СтранаПроисхождения.
Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Сведения.Значение КАК ПочтовыйИндекс |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК Сведения | ПО (Номенклатура.Ссылка = Сведения.Объект | И Сведения.Свойство = &СвойствоИндекс | И Номенклатура.СтранаПроисхождения | <> ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка))";
Также прочитайте статью о структуре оператора Выбрать, языка запросов: Язык запросов 1с — оператор Выбрать
Пустая ссылка в запросе в 1С
В языке запросов 1С часто требуется проверить: является ли значение пустой ссылкой.
Пустая ссылка — это такое значение ссылочных объектов, когда оно имеет этот же тип, но само значение не выбрано.
На языке программирования 1С данное значение можно получить через менеджеры объекта.
- Перечисления.Пол.ПустаяСсылка(),
- Справочники.Организации.ПустаяСсылка(),
- ПланыСчетов.Хозрасчетный.ПустаяСсылка(),
- ПредопредленноеЗначение(«ПланСчетов.Хозрасчетный.ПустаяСсылка»)
Альтернативой сравнению с пустой ссылкой имеется метод Пустая() у значения ссылочного типа:
Например:
булКонтрагентВыбран = ВыбКонтрагент.Пустая();
- Как же в запросе 1С сравнить на пустое значение
- 1.Если требуется получить значение пустого типа.
- 2. Если требуется сравнить со значением не составного типа:
- 3. Если требуется проверка составного значения:
Как же в запросе 1С сравнить на пустое значение
Для этого у нас есть несколько вариантов в зависимости от требований задачи:
1.Если требуется получить значение пустого типа.
Воспользуемся функцией ЗНАЧЕНИЕ()
Выбрать
ЗНАЧЕНИЕ (Перечисление.Пол.ПустаяСсылка)//Без вопроса в единственном числеЛибо через переданный в запрос параметр:
Выбрать
&ПустойПараметрНужногоТипа2. Если требуется сравнить со значением не составного типа:
Выбрать
Значение(Перечисление.Пол.ПустаяСсылка)<>Значение(Перечисление.Пол.Мужской) как ЭтоБулевоИстинаВыбрать
Выбор когда &ПустойПараметрНужногоТипа ИЛИ Значение(Перечисление.Пол.Мужской) Тогда Истина Иначе Ложь Конец как ЭтоНеЖенскийПол3. Если требуется проверка составного значения:
В этом случае значение
- может быть неопределенного типа (очищено или ни разу не выбрано)
- пустой ссылкой любого из типов (выбран тип, но не выбрано значение)
- выбранным значением любого из типов (выбрано значение)
В этом случае обычно первые два варианта считаются пустым значением, но пустыми ссылками являются только вторые.
//Мы инициализировали массив заполненных значений и сравнили его с пустым
Выбор когда ЗНАЧЕНИЕ(Значение(Перечисление.Пол.ПустаяСсылка) в (Значение(Перечисление.Пол.Мужской),Значение(Перечисление.Пол.Женский)) ИЛИ Есть NULL Тогда Истина Иначе Ложь конец ЗначениеПустое
//Мы инициализировали массив пустых ссылок и проверили вхождение в него нашего «неизвестного» значения
Выбор когда ЗНАЧЕНИЕ(Значение(Перечисление.Пол.Мужской) в (Значение(Перечисление.Пол.ПустаяСсылка),Значение(Справочник.Контрагенты.ПустаяСсылка)) Тогда Истина Иначе Ложь конец ЗначениеПустое
Также мы можем передать массив параметром
Выбрать Выбор когда ЗНАЧЕНИЕ(Значение(Перечисление.Пол.ПустаяСсылка) в (&МассивВсехПустыхСсылок) Тогда Истина Иначе Ложь конец ЗначениеПустое
Как получить значение ЛюбаяСсылка?
Еще про перечисление в запросе 1С.
Люди будут рекламировать свои товары всегда — и в хорошие времена и в плохие. В хорошие времена они хотят рекламировать; в тяжелые времена они должны рекламировать.
— Брюс Бартон, рекламный агент
Пустая ссылка, дата или строка в запросе 1С 8.3 и 8.2
В этой статье будут рассмотрены способы проверки на пустое значение в зависимости от типа проверяемого реквизита в запросе 1С 8.3, в том числе пустой ссылки.
Проверка на NULL
Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL.
Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и «ЕСТЬNULL()». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL.
В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.
ВЫБРАТЬ
КонтактныеЛицаПартнеров.Ссылка
ИЗ
Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеров
ПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель
ГДЕ
СегментыПартнеров.Ссылка ЕСТЬ NULLПустая дата
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!Проверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже:
ВЫБРАТЬ
Встреча.Ссылка
ИЗ
Документ.Встреча КАК Встреча
ГДЕ
Встреча.Дата = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)Пустая ссылка в запросе 1С
В случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка).
В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион.
ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.БизнесРегион = ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)Чтобы проверить на «ЗначениеЗаполнено» нужно сделать обратное условие:
Пустая строка
Для проверки строковых типов производится сравнение с другим образцом. В данном случае – «».
Получите понятные самоучители по 1С бесплатно:
- Самоучитель по 1С Бухгалтерии 8.3;
- Самоучитель по 1С ЗУП 8.3.
Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием.
ВЫБРАТЬ
Партнеры.Ссылка
ИЗ
Справочник.Партнеры КАК Партнеры
ГДЕ
Партнеры.Наименование = «»- ЕСТЬNULL в запросе 1С 8.3 (8.2)
- Остатки и обороты с регистраторами 1С
- Язык запросов 1С 8.3 и 8.2 — краткое руководство по всем конструкциям
- Проверка на NULL в запросе 1С 8
