Страна
1С: Бухгалтерия 7.7 |
1С: Аспект 7.7 |
Программы |
1С: Торговля и Склад 7.7 |
Windows XP |
1С: Бухгалтерия 7.7 |
1С: Аспект 7.7 |
1С: Торговля и Склад 7.7 |
1С: Бухгалтерия 7.7 |
В реальных задачах крайне рекомендуется уточнять у пользователей условия на такого рода неравенства, потому что пользователь
часто имеет в виду «меньше или равно», а не «строго меньше».
Возможно, в данном запросе товары с ценой 1000 тоже подойдут, тогда знак «<» надо заменить на «<=».
При указании нескольких логических сомножителей И, ИЛИ, НЕ целесообразно расставлять скобки, чтобы правильно определить порядок выполнения логических операций и повысить наглядность запроса.
Например, следующие два запроса могут привести к неожиданным для программиста результатам, потому что оператор И имеет больший приоритет, чем ИЛИ (а оператор НЕ имеет еще больший приоритет, чем И):
ВЫБРАТЬ Наименование,
ЗакупочнаяЦена КАК Цена,
СтранаПроисхождения КАК Страна
ИЗ Справочник.Номенклатура
ГДЕ СтранаПроисхождения = "Россия" ИЛИ СтранаПроисхождения = "США"
И ЗакупочнаяЦена < 1000
В результате мы получим следующие записи:
Клавиатура Apple Pro Keyboards |
Лазерный принтер Minolta-QMS |
Лазерный принтер HP LaserJet 2200 |
Монитор 19" Hitachi CM715ET |
Ноутбук Rover Computers Explorer |
Этот запрос будет интерпретирован системой как «Выбрать все товары из страны Россия, независимо от цены, а также товары
из страны США, которые дешевле 1000». Т.е. условие по цене будет проверяться только для товаров из США, а товары из России будут включены в запрос при любой цене.
Вероятно, программист имел в виду совсем другое: «Выбрать товары из России и США, которые дешевле 1000», что реализовано
вторым запросом. Условие по цене будет проверяться для всех товаров, независимо от страны-производителя:
ВЫБРАТЬ Наименование,
ЗакупочнаяЦена КАК Цена,
СтранаПроисхождения КАК Страна
ИЗ Справочник.Номенклатура
ГДЕ (СтранаПроисхождения = "Россия" ИЛИ СтранаПроисхождения = "США")
И ЗакупочнаяЦена < 1000
Клавиатура Apple Pro Keyboards |
Лазерный принтер Minolta-QMS |
Лазерный принтер HP LaserJet 2200 |
Монитор 19" Hitachi CM715ET |
Программное обеспечение |
Услуги |
Клавиатуры |
Принтеры |
Мониторы |
Чтобы выбрать товары, у которых не указана страна (строковое поле), нужно применить обычное сравнение на пустую строку:
ВЫБРАТЬ Наименование, СтранаПроисхождения КАК Страна
ИЗ Справочник.Номенклатура
ГДЕ СтранаПроисхождения = ""
Доставка |
Инсталляция ПО |
Консультации по настройке ОС Windows |
Монитор 15" LG Studioworks 575N |
Если стоит задача выбрать элементы с неуказанным реквизитом, имеющим ссылочный тип, тогда следует поступать по-другому. Например, требуется выбрать все товары с незаполненным полем ОсновнойПоставщик, которое является ссылкой на справочник Контрагенты.
Предлагается следующая схема для решения этой задачи:
Запрос = Новый Запрос("
|ВЫБРАТЬ Наименование, ОсновнойПоставщик
|ИЗ Справочник.Номенклатура
|ГДЕ ОсновнойПоставщик = &ПустойКонтрагент ");
Запрос.УстановитьПараметр("ПустойКонтрагент",
Справочники.Контрагенты.ПустаяСсылка()); |
В условии запроса используется параметр ПустойКонтрагент. Этот параметр до выполнения запроса получает значение пустой ссылки на справочник Контрагенты. Для этого используется метод ПустаяСсылка объекта СправочникМенеджер.
Результат приведенного выше запроса будет следующий: