Разработка в 1С 8.0

     

Проверка вхождения значения в список (В / IN)


В условии можно проверять значения на вхождение в некоторый список или на принадлежность группе справочника (или элементу, если иерархический справочник состоит из одних элементов). В случае иерархического справочника можно применять конструкцию В ИЕРАРХИИ для проверки вхождения в группу независимо от уровня иерархии.

Следующие запросы демонстрируют варианты использования ключевого слова В:

//выбираем товары из заданного списка

ВЫБРАТЬ Наименование, ЗакупочнаяЦена

ИЗ Справочник.Номенклатура

ГДЕ Ссылка В (&СписокВыбранныхТоваров)

 

//выбираем товары, принадлежащие определенной группе

//независимо от уровня, на котором они находятся

ВЫБРАТЬ Наименование, ЗакупочнаяЦена

ИЗ Справочник.Номенклатура

ГДЕ Ссылка В ИЕРАРХИИ (&ВыбраннаяГруппа)

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

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

 

ВЫБРАТЬ Спр.Наименование, Спр.ЗакупочнаяЦена 

ИЗ Справочник.Номенклатура КАК Спр 

ГДЕ Спр.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Номенклатура 

ИЗ Документ.РасходнаяНакладная.Состав)  


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

 

ВЫБРАТЬ РАЗЛИЧНЫЕ Номенклатура, Номенклатура.ЗакупочнаяЦена

ИЗ Документ.РасходнаяНакладная.Состав

Это стало возможно, потому что разыменование полей заставляет систему 1С:Предприятие 8.0 производить неявное соединение таблиц. Рекомендуется всегда пользоваться разыменованием полей там, где это возможно, и не усложнять запросы лишними конструкциями.



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