Имя: Пароль:
1C
1С v8
Нестандартный синтаксис оператора "ВЫБОР"
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 такая конструкция всегда работала
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс