Недокументированный синтаксис оператора «ВЫБОР» в запросе 1С

Недокументированный синтаксис оператора «ВЫБОР» в запросе 1С

Недавно обнаружил не совсем стандартное, не описанное в официальной документации использование оператора «ВЫБОР» в запросах 1С, и спешу им поделиться с уважаемыми читателями. В документации описан следующий пример использования оператора выбора в языке запрсов 1С:

"ВЫБРАТЬ
|   Номенклатура.Наименование,
|   ВЫБОР
|       КОГДА Номенклатура.ЭтоГруппа = ИСТИНА
|           ТОГДА ""Это Группа""
|       КОГДА Номенклатура.ЗакупочнаяЦена > 1000
|           ТОГДА ""1000 -""
|       КОГДА Номенклатура.ЗакупочнаяЦена > 100
|           ТОГДА ""100 – 1000""
|       КОГДА Номенклатура.ЗакупочнаяЦена > 10
|           ТОГДА ""10 – 100""
|       КОГДА Номенклатура.ЗакупочнаяЦена > 0
|           ТОГДА ""0 – 10""
|       ИНАЧЕ ""Не Задана""
|   КОНЕЦ КАК Цена
|ИЗ
|   Справочник.Номенклатура КАК Номенклатура"

А вот такой конструкции в документации я не обнаружил:

Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВЫБОР &Перем
| КОГДА 1
| ТОГДА ""Раз""
| КОГДА 2
| ТОГДА ""Два""
| КОГДА 3
| ТОГДА ""Три""
| ИНАЧЕ ""Много""
| КОНЕЦ КАК РезультатВыбора");
Запрос.УстановитьПараметр("Перем",2);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(Выборка.РезультатВыбора);


Прямо классический switch … case … default из С в чистом виде получился.


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

Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания - поддержите автора.

Комментарии:

  1. GoKerze:

    Подскажите пожалуйста, литературу по запросам.

    1. Администратор:

      1). Встроенная справка по языку запросов
      2). http://v8.1c.ru/metod/books/book.jsp?id=436

  2. Сергей:

    Не забудьте добавить что данная конструкция будет работать только с простыми типами (строка, число, булево)

  3. Сергей:

    хотя нет ) с любыми значениями работает )

Оставить комментарий на Сергей