|   |   | 
| 
 | Нестандартный синтаксис оператора "ВЫБОР" | ☑ | ||
|---|---|---|---|---|
| 0
    
        Vovan_Magadan 23.05.13✎ 04:59 | 
        Привет.
  Я тут случайно наткнулся на одну статью, на вашем любимом инфустарге http://infostart.ru/public/67585/ Суть её в том, автор рассказывает как сократить код, вместо: Выбрать Справочник.Номенклатура.Наименование, Выбор Когда Справочник.Номенклатура.Этогруппа = Истина Тогда «Это Группа» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 1000 Тогда «1000 -» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 100 Тогда «100 – 1000» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 10 Тогда «10 – 100» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 0 Тогда «0 – 10» Иначе «Не Задана» Конец Цена Писать: Запрос = Новый Запрос(" |ВЫБРАТЬ | ВЫБОР &Перем | КОГДА 1 | ТОГДА "Раз" | КОГДА 2 | ТОГДА "Два" | КОГДА 3 | ТОГДА "Три" | ИНАЧЕ "Много" | КОНЕЦ КАК РезультатВыбора"); Запрос.УстановитьПараметр("Перем",2); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Сообщить(Выборка.РезультатВыбора); Да действительно аналог касе, которого не хватало многим. НО меня удивило одно, у него запросах абсолютно разные сравнения, в первом он сравнивает как "> 1000", во втором " = 1". я там не зараген, т.к. не люблю их сайт. Вот и вопрос, как написать данный метод на сравнения большего и меньшего? | ВЫБОР Справочник.Номенклатура.ЗакупочнаяЦена | КОГДА 1 // тут норм | ТОГДА "Раз" | КОГДА 2 // тут норм | ТОГДА "Два" | КОГДА > 3 // тут ошибка | ТОГДА "Три" | ИНАЧЕ "Много" | |||
| 1
    
        mistеr 23.05.13✎ 05:18 | 
        Откуда ноги растут: http://msdn.microsoft.com/en-US/library/ms181765(v=SQL.90).aspx
  Simple CASE expression: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE expression: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Еще вопросы остались? | |||
| 2
    
        Balabass 23.05.13✎ 05:30 | 
        Еду в Магадан (с)     | |||
| 3
    
        Vovan_Magadan 23.05.13✎ 05:59 | 
        (1) да, как это вообще отвечает на мой вопрос? Смысл выкладывать в тему тоже самое что в (0) тока по русски?     | |||
| 4
    
        Михаил 1С 23.05.13✎ 06:03 | 
        Спасибо, Вован, за просвещение и Ликвидацию Безграмотности. Я вот и не знал, что в запросах можно делать такое условие (case) - с множеством выборов. Приятно, что есть такое. 
  ... Если найдешь еще с >, то совсем хорошо будет! | |||
| 5
    
        kosts 23.05.13✎ 06:03 | 
        (0) Лично натыкался, когда такой синтаксис коряво работал. По этому так не делаю.     | |||
| 6
    
        mistеr 23.05.13✎ 06:10 | 
        (3) Ответ на вопрос процитированном в синтаксисе выражения. Подробные разъяснения - по ссылке, я наивно рассчитывал, что по ним иногда ходят.
  Могу кратко перевести на русский: "никак". | |||
| 7
    
        mistеr 23.05.13✎ 06:11 | 
        (6) в <-> процитированном     | |||
| 8
    
        mistеr 23.05.13✎ 06:11 | 
        (5) Не зря, видимо, его в документации не описали.     | |||
| 9
    
        Рэйв 23.05.13✎ 06:20 | 
        ленивый пишет код дважды.
  Лучше нормально написать. | |||
| 10
    
        1Сергей 23.05.13✎ 06:37 | 
        В MS SQL такая конструкция всегда работала     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |