|
Помогите с запросом. Не могу группировать. | ☑ | ||
---|---|---|---|---|
0
temsa
05.04.15
✎
15:51
|
Есть кусок кода не полный но понятный
|ВЫБРАТЬ | РабочееВремяРаботниковОбороты.Подразделение, | РабочееВремяРаботниковОбороты.ФизЛицо, | ДЕНЬ(РабочееВремяРаботниковОбороты.Период) КАК Период, | ВЫБОР | КОГДА РабочееВремяРаботниковОбороты.ВидИспользваниеРабочегоВремени = Значение(Перечисление.ВидИспользваниеРабочегоВремени.РабочееВремя) | или РабочееВремяРаботниковОбороты.ВидИспользваниеРабочегоВремени = Значение(Перечисление.ВидИспользваниеРабочегоВремени.Ремонт) | или РабочееВремяРаботниковОбороты.ВидИспользваниеРабочегоВремени = Значение(Перечисление.ВидИспользваниеРабочегоВремени.Простой) | ТОГДА РабочееВремяРаботниковОбороты.ЧасыОборот | ИНАЧЕ 0 | КОНЕЦ КАК Часы, | ВЫБОР | КОГДА РабочееВремяРаботниковОбороты.ЧасыОборот > 0 и | (РабочееВремяРаботниковОбороты.ВидИспользваниеРабочегоВремени = Значение(Перечисление.ВидИспользваниеРабочегоВремени.РабочееВремя) | или РабочееВремяРаботниковОбороты.ВидИспользваниеРабочегоВремени = Значение(Перечисление.ВидИспользваниеРабочегоВремени.Ремонт) | или РабочееВремяРаботниковОбороты.ВидИспользваниеРабочегоВремени = Значение(Перечисление.ВидИспользваниеРабочегоВремени.Простой)) | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ КАК Дни, |ПОМЕСТИТЬ Табель |ИЗ | РегистрНакопления.РабочееВремяРаботников.Обороты(&НачалоПериода, &КонецПериода, День,) КАК РабочееВремяРаботниковОбороты |; |/////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕстьNULL(Работники.ФизЛицо,Табель.ФизЛицо) как ФизЛицо, | ЕстьNULL(Работники.Подразделение,Табель.Подразделение) как Подразделение, | ЕстьNULL(Табель.Период,1)Как Период, | ЕстьNULL(Табель.Часы,0)Как Часы, | ЕстьNULL(Табель.Дни,0) как Дни |ИЗ Табель как Табель | Полное СОЕДИНЕНИЕ Работники КАК Работники | ПО Табель.Физлицо = Работники.Физлицо | И Табель.Подразделение = Работники.Подразделение |Где Работники.Работает |УПОРЯДОЧИТЬ ПО | Табель.ФизЛицо.Наименование |ИТОГИ | СУММА(Часы), | СУММА(Дни) |ПО | Подразделение, | ФизЛицо"); Поскольку записи в один день могут быть и по ремонту и по работе то при вывооде на печать Дни у меня получаются по 36 37 дней у некторых. Как мне исключить суммирование "Дни" по дубль периоду??? |
|||
1
temsa
05.04.15
✎
15:59
|
по идее наряду с дни часы есть и другие данные
|ВЫБРАТЬ | ЕстьNULL(Работники.ФизЛицо,Табель.ФизЛицо) как ФизЛицо, | ЕстьNULL(Работники.Подразделение,Табель.Подразделение) как Подразделение, | ЕстьNULL(Табель.Период,1)Как Период, | ЕстьNULL(Табель.Часы,0)Как Часы, | ЕстьNULL(Табель.Дни,0) как Дни, | ЕстьNULL(Табель.Прогул,0) как Прогул, | ЕстьNULL(Табель.БС,0) как БС, | ЕстьNULL(Табель.МО,0) как МО, | ЕстьNULL(Табель.Бол,0) как Бол, | ЕстьNULL(Табель.ТО,0) как ТО |ИЗ Табель как Табель | Полное СОЕДИНЕНИЕ Работники КАК Работники | ПО Табель.Физлицо = Работники.Физлицо | И Табель.Подразделение = Работники.Подразделение |Где Работники.Работает |УПОРЯДОЧИТЬ ПО | Табель.ФизЛицо.Наименование |ИТОГИ | СУММА(Часы), | СУММА(Дни), | СУММА(Прогул), | СУММА(БС), | СУММА(МО), | СУММА(Бол), | СУММА(ТО) |ПО | Подразделение, | ФизЛицо |
|||
2
temsa
05.04.15
✎
16:04
|
Вот вам и заполнение:
|ВЫБРАТЬ | ЕстьNULL(Работники.ФизЛицо,Табель.ФизЛицо) как ФизЛицо, | ЕстьNULL(Работники.Подразделение,Табель.Подразделение) как Подразделение, | ЕстьNULL(Табель.Период,1)Как Период, | ЕстьNULL(Табель.Часы,0)Как Часы, | ЕстьNULL(Табель.Дни,0) как Дни, | ЕстьNULL(Табель.Прогул,0) как Прогул, | ЕстьNULL(Табель.БС,0) как БС, | ЕстьNULL(Табель.МО,0) как МО, | ЕстьNULL(Табель.Бол,0) как Бол, | ЕстьNULL(Табель.ТО,0) как ТО |ИЗ Табель как Табель | Полное СОЕДИНЕНИЕ Работники КАК Работники | ПО Табель.Физлицо = Работники.Физлицо | И Табель.Подразделение = Работники.Подразделение |Где Работники.Работает |УПОРЯДОЧИТЬ ПО | Табель.ФизЛицо.Наименование |ИТОГИ | СУММА(Часы), | СУММА(Дни), | СУММА(Прогул), | СУММА(БС), | СУММА(МО), | СУММА(Бол), | СУММА(ТО) |ПО | Подразделение, | ФизЛицо |
|||
3
temsa
05.04.15
✎
16:04
|
ой простите
ПН =0; РезИтого = РезЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока РезИтого.Следующий() Цикл ОбластьПодр.Параметры.Заполнить(РезИтого); ДокументРезультат.Вывести(ОбластьПодр); Рез = РезИтого.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Рез.Следующий() Цикл НайденнаяСтрока = ТЗ_2.Найти(Рез.ФизЛицо); Если Не НайденнаяСтрока = Неопределено Тогда ОбластьСтроки.Параметры.Должность = НайденнаяСтрока.Должность; КонецЕсли; ПН = ПН+1; ОбластьСтроки.Параметры.ПН = ПН; ОбластьСтроки.Параметры.ФИО = Рез.ФизЛицо; ОбластьСтроки.Параметры.Часы = Рез.Часы; ОбластьСтроки.Параметры.Дни = Рез.Дни; Рез2 = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Для к = 1 по 31 Цикл ОбластьСтроки.Параметры["д"+к] = 0; КонецЦикла; Пока Рез2.Следующий() Цикл ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] = ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] + Рез2.Часы; КонецЦикла; Рез2 = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Рез2.Следующий() Цикл Если Рез2.МО =1 Тогда ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] = "МО"; КонецЕсли; Если Рез2.ТО =1 Тогда ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] = "ТО"; КонецЕсли; Если Рез2.БС = 1 Тогда ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] = "БС"; КонецЕсли; Если Рез2.Прогул = 1 Тогда ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] = "П"; КонецЕсли; Если Рез2.Бол = 1 Тогда ОбластьСтроки.Параметры["д"+Строка(Рез2.Период)] = "Б"; КонецЕсли; КонецЦикла; ДокументРезультат.Вывести(ОбластьСтроки); КонецЦикла; КонецЦикла; |
|||
4
temsa
05.04.15
✎
16:26
|
Не стал заморачиватся сдоп запросами или ТЗ или ВТ.
Сделал просто в цикле Если Рез2.Дни > 0 Тогда Если Рез2.Период = текПериод Тогда Иначе Дни = Дни +Рез2.Дни; Конецесли; текПериод = Рез2.Период; Конецесли; )) |
|||
5
fishb1
06.04.15
✎
10:10
|
Можно первый запрос завернуть в подзапрос, перед помещением в таблицу Табель сгруппировать для поле "Дни" применить МАКСИМУМ() (т.е. будет если 0 то 0, если хоть одна единица - то 1).
P.S. УПОРЯДОЧИТЬ ПО Табель.ФизЛицо.Наименование Немного режет глаз, лучше использовать АВТОУПОРЯДОЧИВАНИЕ. :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |