Имя: Пароль:
1C
1С v8
Условие через выбор когда в запросе
,
0 manti
 
13.05.15
11:00
Есть запрос:
ВЫБРАТЬ
    ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации,
    ЗанятыеШтатныеЕдиницыОрганизаций.Должность,
    МАКСИМУМ(ЗанятыеШтатныеЕдиницыОрганизаций.Период) КАК СвободнаС
ПОМЕСТИТЬ ОсвобожденныеУвольнениемПереводом
ИЗ
    РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций КАК ЗанятыеШтатныеЕдиницыОрганизаций
ГДЕ
    ЗанятыеШтатныеЕдиницыОрганизаций.Период <= &Период
    И ЗанятыеШтатныеЕдиницыОрганизаций.ВидДвижения = &ВидДвижения
    И ВЫБОР
            КОГДА &ПризнакОтбора
                ТОГДА ВЫБОР
                        КОГДА ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации.Владелец В (&Организация)
                            ТОГДА ИСТИНА
                        ИНАЧЕ ЛОЖЬ
                    КОНЕЦ
            ИНАЧЕ ИСТИНА
        КОНЕЦ

СГРУППИРОВАТЬ ПО
    ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации,
    ЗанятыеШтатныеЕдиницыОрганизаций.Должность

Поясните пжста логику работы условия выбор когда иначе.
1 Jonny_Khomich
 
13.05.15
11:02
Если тогда иначе конецесли
2 varyag
 
13.05.15
11:02
(0) как если тогда - аналогично
3 manti
 
13.05.15
11:08
(2) ВЫБОР КОГДА ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации.Владелец В (&Организация) ТОГДА ИСТИНА
как на условие может повлиять тогда истина?
4 1976vas
 
13.05.15
11:11
ГДЕ
    ЗанятыеШтатныеЕдиницыОрганизаций.Период <= &Период
    И ЗанятыеШтатныеЕдиницыОрганизаций.ВидДвижения = &ВидДвижения
    И Тут ИСТИНА или ЛОЖЬ
5 Jonny_Khomich
 
13.05.15
11:12
(3) читай книги.

ВЫБОР КОГДА <Условие с результатом типа Булево>
   ТОГДА <Результат в случае если Истина>
   ИНАЧЕ <Результат в случае если Ложь>
КОНЕЦ

Пример:
ВЫБОР КОГДА СчетФактураПолученный.ДокументОснование ССЫЛКА Документ.ПоступлениеТоваров Тогда
          "Поступление товаров"
         ИНАЧЕ
          "Прочие документы"
6 ssh2006
 
13.05.15
11:12
(3) можно было просто вместо
ВЫБОР
                        КОГДА ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации.Владелец В (&Организация)
                            ТОГДА ИСТИНА
                        ИНАЧЕ ЛОЖЬ
                    КОНЕЦ

написать ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации.Владелец В (&Организация)

Написали так как написали
7 manti
 
13.05.15
11:39
(6) получается, если параметр организация будет заполнен, то условие отработается,  если не заполнен то не отработает?
8 ale-sarin
 
13.05.15
11:47
Если параметр ПризнакОтбора = ложь, то в результат запроса попадут подразделения всех организаций, иначе только подразделения организации из параметра "Организация"
9 ale-sarin
 
13.05.15
11:53
ПризнаОтбора видимо зависит от заполненности Организации
Можно и так написать

ГДЕ
   ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации.Владелец В (&Организация) ИЛИ &Организация = Значение(Справочник.Организации.ПустаяСсылка)
10 manti
 
13.05.15
12:04
Спасибо всем
11 Simod
 
13.05.15
12:59
(9) Признак определяет необходимость проверки Организации.

Должно быть так:

ГДЕ (&ПризнакОтбора И ЗанятыеШтатныеЕдиницыОрганизаций.ПодразделениеОрганизации.Владелец В (&Организация) ИЛИ НЕ &ПризнакОтбора)
12 D_E_S_131
 
13.05.15
14:09
(11) Если местами условия поменять, то не быстрее будет? Как бы быстро проверили "булево" у ПризнакОтбора и только уже потом начинаем проверять вхождение в Организацию.
13 bolobol
 
13.05.15
15:03
(12) Сие компилистами давно учтено, чтоб два раза не думать