Имя: Пароль:
1C
1С v8
Запрос: как вывести нулевые профессии.
0 worker-good
 
26.06.14
14:45
Есть следующий запрос, выводит количество всех сотрудников у которых есть выход (значение не пустое в регистре сведений "ВходВыход"),с разбивкой по профессиям. Если нет сотрудников по данной профессии то данная профессия не выводится, а надо чтобы выводилось профессия со значением нуль, как изменить следующий запрос чтобы выводились профессии с нулем? По разному пробовал в конструкторе запросов устанавливать связи и левое и правое и внутреннее соединение делал - не выходит каменный цветок


ВЫБРАТЬ
        |    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации КАК ТекущаяДолжностьОрганизации,
        |    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации КАК ТекущееПодразделениеОрганизации,
        |    _ВходВыход.Дата КАК Дата,
        |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ _ВходВыход.Выход) КАК КолВыход,
        |    СУММА(ВЫБОР
        |            КОГДА _РучныеОтклоненияТабеля.КодТабеля = &Выходной
        |                ТОГДА 1
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК КолвоВыходных,
        |    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок КАК КолвоШР
        |ИЗ
        |    РегистрСведений._ВходВыход КАК _ВходВыход
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
        |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтатноеРасписаниеОрганизаций.СрезПоследних КАК ШтатноеРасписаниеОрганизацийСрезПоследних
        |            ПО СотрудникиОрганизаций.ТекущееПодразделениеОрганизации = ШтатноеРасписаниеОрганизацийСрезПоследних.ПодразделениеОрганизации
        |                И СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = ШтатноеРасписаниеОрганизацийСрезПоследних.Должность
        |        ПО _ВходВыход.Физлицо = СотрудникиОрганизаций.Физлицо
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений._РучныеОтклоненияТабеля КАК _РучныеОтклоненияТабеля
        |        ПО _ВходВыход.Физлицо = _РучныеОтклоненияТабеля.Сотрудник.Физлицо
        |            И _ВходВыход.Месяц = _РучныеОтклоненияТабеля.Месяц
        |            И _ВходВыход.Дата = _РучныеОтклоненияТабеля.Дата
        |ГДЕ
        |    _ВходВыход.Дата = &Месяц
        |    И (СотрудникиОрганизаций.ТекущееПодразделениеОрганизации = &ТекущееПодразделениеОрганизацииОпт
        |            ИЛИ СотрудникиОрганизаций.ТекущееПодразделениеОрганизации = &ТекущееПодразделениеОрганизацииСети
        |            ИЛИ СотрудникиОрганизаций.ТекущееПодразделениеОрганизации = &ТекущееПодразделениеОрганизацииРозница)
        |    И (СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииБригадир
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииШтабелер1
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииШтабелер2
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииШтабелер3
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииПогрузчик
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииГрузчик
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииОператор1
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииОператор2
        |            ИЛИ СотрудникиОрганизаций.ТекущаяДолжностьОрганизации = &ТекущаяДолжностьОрганизацииОператор3)
        |    И _ВходВыход.Выход <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
        |
        |СГРУППИРОВАТЬ ПО
        |    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации,
        |    СотрудникиОрганизаций.ТекущееПодразделениеОрганизации,
        |    _ВходВыход.Дата,
        |    ШтатноеРасписаниеОрганизацийСрезПоследних.КоличествоСтавок
        |
        |УПОРЯДОЧИТЬ ПО
        |    Дата,
        |    ТекущееПодразделениеОрганизации,
        |    ТекущаяДолжностьОрганизации
1 worker-good
 
26.06.14
15:03
Хоть небольшую подсказку дайте пжста...
2 Rodinyr
 
26.06.14
15:06
а профессии это справочник?
3 vmv
 
26.06.14
15:07
лень в никать, просто провангую

надо создать пакет, где
-первый пакет это ВтВсеПрофессии
-второй пакет соединение ВтВсеПрофессии с простыней из сабжа.

не благодари, но более дельного совета не будет
4 Rodinyr
 
26.06.14
15:08
(3) Прав, К профессия свой запрос прикручивай....
5 МойКодУныл
 
26.06.14
15:10
(3)(4) Вы ничего не поняли. Полный список профессий хранится в экселе у бабы Клавы на флешке, которую она носит в сумке.
6 vmv
 
26.06.14
15:11
видя такое количество ИЛИ в запросе я предлагаю два варианта
специалисту

1. Подумать и получить аналогичный результат без скопления логических веток. в случае думать надо мало
СотрудникиОрганизаций.ТекущееПодразделениеОрганизации В (&СзПодразделенияФильта)

2. При отказе думать - расстреливаю
7 kumena
 
26.06.14
15:13
>> не благодари, но более дельного совета не будет

будет - надо обратиться к специалисту.

то что понаписано - уже кривое, вот например отсюда
"СотрудникиОрганизаций.ТекущаяДолжностьОрганизации"
должность брать нельзя

и подразделение организации отсюда СотрудникиОрганизаций.ТекущееПодразделениеОрганизации В (&СзПодразделенияФильта)  тоже
8 vmv
 
26.06.14
15:13
(5) тогда путь баба Клава достает результат из своей сумки

или вариант 2 из (6)
9 vmv
 
26.06.14
15:15
(7) я не пытался учить стилю, а лишь указал на очевидные ляпы.
10 worker-good
 
26.06.14
15:27
(2) Профессии задаются в параметрах запроса, да это справочник
11 worker-good
 
26.06.14
17:27
(3) Напишите пожалуйста простой примерчик с соединением второго пакет
12 vmv
 
26.06.14
17:28
(11) это платно, мир моногополярен, учти
13 worker-good
 
27.06.14
11:03
(12) Спасибо разобрался с пакетными запросами - очень упрощают жизнь)
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.