Имя: Пароль:
1C
1С v8
Если 0 то 1 в запросе
,
0 Лохматые Уши
 
15.03.12
14:34
Всем салют!
Запрос:
ВЫБРАТЬ
Зн1*Зн2*Зн3*Зн4
ИЗ
Таблица

Как реализовать 0 вместо 1 в запросе, т.е. если например Зн3 = 0, то Зн3 д.б. = 1.
1 Grusswelle
 
15.03.12
14:34
ВЫБОР
   ЕСЛИ
       ТОГДА
   ИНАЧЕ
КОНЕЦ
2 PR
 
15.03.12
14:34
ВЫБОР
3 andrewks
 
15.03.12
14:35
case
4 Ненавижу 1С
 
гуру
15.03.12
14:35
выбор когда
5 mirosh
 
15.03.12
14:35
выбор когда Зн3 = 0 тогда 1
конец
6 Ненавижу 1С
 
гуру
15.03.12
14:35
(0) а если <>0?
7 Лохматые Уши
 
15.03.12
14:38
(6) только 0 м.б.
Есть другие варианты кроме ВЫБОРА?
8 andrewks
 
15.03.12
14:40
шо, опять религия не позволяет?
9 Reset
 
15.03.12
14:40
(7) Если только 0 может быть то просто:
Выбрать 1
10 Reset
 
15.03.12
14:40
т.к. не 0 не может
11 Reset
 
15.03.12
14:42
т.е. постановка задачи бессмысленная без (6)
12 Лохматые Уши
 
15.03.12
14:45
Сорри коллеги, я устал просто. уже сделал :)
13 Лохматые Уши
 
15.03.12
15:04
К чему я спрашивал альтернативу ВЫБОРУ КОГДА -
вот такой запрос получился, сложноватый:
       "ВЫБРАТЬ
       |    НормыРасходовНаАвтотранспортныеСредства.Ответственный,
       |    ВЫБОР
       |        КОГДА НормыРасходовНаАвтотранспортныеСредства.КоэффициентГород = 0
       |            ТОГДА ВЫБОР
       |                    КОГДА НормыРасходовНаАвтотранспортныеСредства.КоэффициентГорнаяМестность = 0
       |                        ТОГДА ВЫБОР
       |                                КОГДА НормыРасходовНаАвтотранспортныеСредства.КоэффициентКондиционер = 0
       |                                    ТОГДА ВЫБОР
       |                                            КОГДА НормыРасходовНаАвтотранспортныеСредства.КоэффициентНовыйАвто = 0
       |                                                ТОГДА НормыРасходовНаАвтотранспортныеСредства.НормаБензинаНа100КилометровЗима
       |                                            ИНАЧЕ НормыРасходовНаАвтотранспортныеСредства.НормаБензинаНа100КилометровЗима * НормыРасходовНаАвтотранспортныеСредства.КоэффициентНовыйАвто
       |                                        КОНЕЦ
       |                                ИНАЧЕ НормыРасходовНаАвтотранспортныеСредства.НормаБензинаНа100КилометровЗима * НормыРасходовНаАвтотранспортныеСредства.КоэффициентНовыйАвто * НормыРасходовНаАвтотранспортныеСредства.КоэффициентКондиционер
       |                            КОНЕЦ
       |                    ИНАЧЕ НормыРасходовНаАвтотранспортныеСредства.НормаБензинаНа100КилометровЗима * НормыРасходовНаАвтотранспортныеСредства.КоэффициентНовыйАвто * НормыРасходовНаАвтотранспортныеСредства.КоэффициентКондиционер * НормыРасходовНаАвтотранспортныеСредства.КоэффициентГорнаяМестность
       |                КОНЕЦ
       |        ИНАЧЕ НормыРасходовНаАвтотранспортныеСредства.НормаБензинаНа100КилометровЗима * НормыРасходовНаАвтотранспортныеСредства.КоэффициентНовыйАвто * НормыРасходовНаАвтотранспортныеСредства.КоэффициентКондиционер * НормыРасходовНаАвтотранспортныеСредства.КоэффициентГорнаяМестность * НормыРасходовНаАвтотранспортныеСредства.КоэффициентГород
       |    КОНЕЦ КАК НормаБензинаНа100КилометровЗима,
       |    НормыРасходовНаАвтотранспортныеСредства.НормаБензинаНа100КилометровЛето
       |ИЗ
       |    Справочник.НормыРасходовНаАвтотранспортныеСредства КАК НормыРасходовНаАвтотранспортныеСредства
14 rs_trade
 
15.03.12
15:06
(13) альтернатива WHERE
15 rs_trade
 
15.03.12
15:07
и джойны
16 Лохматые Уши
 
15.03.12
15:08
хм..
17 rs_trade
 
15.03.12
15:25
(16) вообще запрос по сути очень простой, но выглядит громоздко. я бы лучше обработал результат запроса. в угоду удобночитаемости кода.
18 НЕА123
 
15.03.12
15:25
ВЫБРАТЬ
           НормыРасходовНаАвтотранспортныеСредства.Ответственный,
           ВЫБОР
               КОГДА НормыРасходовНаАвтотранспортныеСредства.КоэффициентГород = 0
                   ТОГДА 1
               ИНАЧЕ
                   НормыРасходовНаАвтотранспортныеСредства.КоэффициентГород
           КОНЕЦ
*
           КОГДА
НормыРасходовНаАвтотранспортныеСредства.КоэффициентГорнаяМестность = 0
       |            ТОГДА 1
                ИНАЧЕ
            НормыРасходовНаАвтотранспортныеСредства.КоэффициентГорнаяМестность
КОНЕЦ
*
.....
и т.д.
19 МихаилМ
 
15.03.12
15:34
(13)
ну так сначала сделайте вложенный запрос с подменами
а во внешнем считайте формулу

ток, кто после Вас  будет разбираться в этом г-нокоде
проклянет Вас (как и разрабов типовых) .
Надо береч карму.

в цену разработки входит цена поддержки. подерживать такое - наказание для прогов
и их кормильцев.
20 ILM
 
гуру
15.03.12
15:40
Я что-то не понял, а в справочнике "НормыРасходовНаАвтотранспортныеСредства" при записи строки нельзя коэффициенты  
"НормаБензинаНа100КилометровЛето" и "НормаБензинаНа100КилометровЗима" расчитать и записать?

Что бы потом уже в запросе выбирать готовое число и не мучиться. с такими построениями.
21 Reset
 
15.03.12
16:23
(13) Так читабельней

ВЫБРАТЬ
   Нормы.Ответственный,
   ВЫБОР КОГДА Нормы.КоэффициентГород = 0 тогда 1 иначе Нормы.КоэффициентГород Конец КАК Город
   ВЫБОР КОГДА Нормы.КоэффициентГорнаяМестность = 0 тогда 1 иначе Нормы.КоэффициентГорнаяМестность Конец КАК ГорнаяМестность
   ВЫБОР КОГДА Нормы.КоэффициентКондиционер = 0 тогда 1 иначе Нормы.КоэффициентКондиционер Конец КАК Кондиционер
   ВЫБОР КОГДА Нормы.КоэффициентНовыйАвто = 0 тогда 1 иначе Нормы.КоэффициентНовыйАвто Конец КАК НовыйАвто
   Нормы.НормаБензинаНа100КилометровЗима,
   Нормы.НормаБензинаНа100КилометровЛето
Поместить Коэффициенты
ИЗ
   Справочник.НормыРасходовНаАвтотранспортныеСредства КАК Нормы;
   
ВЫБРАТЬ
   Город*ГорнаяМестность*Кондиционер*НовыйАвто*НормаБензинаНа100КилометровЗима КАК НормаЗима,
   НормаБензинаНа100КилометровЛето КАК НормаЛето
22 Reset
 
15.03.12
16:23
ИЗ Коэффициенты
23 Reset
 
15.03.12
16:24
(20) +1
Хранить единицу, если коэффициент не нужен
24 ILM
 
гуру
15.03.12
18:19
Не, я повторюсь к(20). Вы часто встречаете чтобы запрос к ОДНОМУ справочнику что-то вычислял?
Справочник должен хранить данные или нет?
25 Лохматые Уши
 
15.03.12
18:25
Спасибо за участие коллеги. Вариант с временной таблицей оптимален от коллеги Ресет.
(24) Справочник сделан без единиц для наглядности, а результирующий коэффицинент хранить в справочнике или где бы то ни было не охота, да и не оптимально по принципам построения БД.
26 МихаилМ
 
15.03.12
18:50
(25)
по принципам построения бд (реляционных)
нептимально хранить вместо данных - алгоритмы.
тк управление алгоритмами на порядки сложнее.
27 Лохматые Уши
 
15.03.12
19:18
Михаил, а как же избыточность со всеми вытекающими? (быстродействие, объем данных).
28 Нуф-Нуф
 
15.03.12
19:20
про ВЫБОР КОГДА уже было?
29 МихаилМ
 
15.03.12
19:38
(27)
основное правило эксплуатации бд : подальше положешь - поближе возьмешь
борьба с объемом базы и быстодействием - вторичны и вечны . на данном этапе - точность данных   (модели ) - превалирует. хотя во времена ec эвм было по-другому.

стоимость вычислительного ресурса постоянно снижается (линейно).
вместе стем точность представления увеличивается .сложнось растет экпоненциально.

собственно поэтому борьба за вычислительнвй ресурс - вечная, но вторичная.  

те первично построение модели + оценка ёё ресурсоёмкости+ прогноз по изменению.                  
 
поэтому достаточно просто грамотно вести разработку.
30 ShoGUN
 
15.03.12
19:47
Вообще-то существуют ограничения по глубине вложенности CASE, поэтому как в (13) писать очень не рекомендую.
31 ILM
 
гуру
15.03.12
20:35
(30) Подробнее можно.
Писал больше 15 уровней, но там были спецификации, РЦ и т.д. Проблем не было.
32 ILM
 
гуру
15.03.12
20:36
(25) А потом когда поездки начнете считать и расход бензина будете всегда запросом таблицу тягать??? Если на то пошло то в соответствие её запихнуть и динамически считать можно будет очень быстро.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.