Недокументированный синтаксис оператора «ВЫБОР» в запросе 1С
Недавно обнаружил не совсем стандартное, не описанное в официальной документации использование оператора «ВЫБОР» в запросах 1С, и спешу им поделиться с уважаемыми читателями. В документации описан следующий пример использования оператора выбора в языке запрсов 1С:
"ВЫБРАТЬ
| Номенклатура.Наименование,
| ВЫБОР
| КОГДА Номенклатура.ЭтоГруппа = ИСТИНА
| ТОГДА ""Это Группа""
| КОГДА Номенклатура.ЗакупочнаяЦена > 1000
| ТОГДА ""1000 -""
| КОГДА Номенклатура.ЗакупочнаяЦена > 100
| ТОГДА ""100 – 1000""
| КОГДА Номенклатура.ЗакупочнаяЦена > 10
| ТОГДА ""10 – 100""
| КОГДА Номенклатура.ЗакупочнаяЦена > 0
| ТОГДА ""0 – 10""
| ИНАЧЕ ""Не Задана""
| КОНЕЦ КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Номенклатура"
А вот такой конструкции в документации я не обнаружил:
Запрос = Новый Запрос(" |ВЫБРАТЬ | ВЫБОР &Перем | КОГДА 1 | ТОГДА ""Раз"" | КОГДА 2 | ТОГДА ""Два"" | КОГДА 3 | ТОГДА ""Три"" | ИНАЧЕ ""Много"" | КОНЕЦ КАК РезультатВыбора"); Запрос.УстановитьПараметр("Перем",2); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Сообщить(Выборка.РезультатВыбора);
Прямо классический switch … case … default из С в чистом виде получился.
Примечание: Так как от ошибок никто не застрахован, исходный код может содержать различные ошибки, неточности и т.д. Если таковые будут замечены, просьба сообщить мне об этом.
Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания - поддержите автора.
Комментарии:
Чтобы оставить комментарий, Вы должны войти в систему.
Подскажите пожалуйста, литературу по запросам.
1). Встроенная справка по языку запросов
2). http://v8.1c.ru/metod/books/book.jsp?id=436
Не забудьте добавить что данная конструкция будет работать только с простыми типами (строка, число, булево)
хотя нет ) с любыми значениями работает )