ЗУП 8.1. Запрос по начислениям физ лиц.

Новая тема
Добрый день. Задача состоит в следующем. У физ лица есть несколько сотрудников, надо собрать все начисления по физ лицу, но ставку взять максимальную, т.е. я делаю так:
ИТОГИ
СУММА(Результат),
МАКСИМУМ(КоличествоСтавок)
ПО
ОБЩИЕ,
Сотрудник
Только вот в итоговой строке надо получить не максимум из всех ставок, а сумму ставок именно по группировкам(если для физ лица из всех сотрудников макс =1 ее и суммируем). Нельзя поставить СУММА(КоличествоСтавок), тогда и для физ лица, и для общих итогов получится сумма всех сотрудников. Делать через вложенный запрос не получится, потому что мой запрос состоит из четырех, три из которых временные таблицы.
А четвертую временную таблицу сделать, в которой будет считаться максимум, а в итоговом запросе суммирование?
И почему наличие временных таблиц мешает вложенному запросу?
"Начисления складываются из четырех подазпросов
1) основные начисления по полной ставке
2) доп начисления по полной ставке
3,4) то же самое для совмещения
поэтому сложно их все слепить и вывести максимум
"ВЫБРАТЬ
| ЗанятыеШтатныеЕдиницыОрганизаций.Сотрудник,
| МАКСИМУМ(ЗанятыеШтатныеЕдиницыОрганизаций.Период) КАК Период
|ПОМЕСТИТЬ ЗанимаемыхСтавок
|ИЗ
| РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций КАК ЗанятыеШтатныеЕдиницыОрганизаций
|ГДЕ
|ЗанятыеШтатныеЕдиницыОрганизаций.Период <= &начпер
|СГРУППИРОВАТЬ ПО
| ЗанятыеШтатныеЕдиницыОрганизаций.Сотрудник
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ
| ЗанимаемыхСтавок.Сотрудник,
| ЗанятыеШтатныеЕдиницыОрганизаций.КоличествоСтавок,
| ЗанимаемыхСтавок.Период,
| ЗанятыеШтатныеЕдиницыОрганизаций.Должность
|ПОМЕСТИТЬ Ставки
|ИЗ
| РегистрНакопления.ЗанятыеШтатныеЕдиницыОрганизаций КАК ЗанятыеШтатныеЕдиницыОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ ЗанимаемыхСтавок КАК ЗанимаемыхСтавок
| ПО ЗанятыеШтатныеЕдиницыОрганизаций.Период = ЗанимаемыхСтавок.Период
| И ЗанятыеШтатныеЕдиницыОрганизаций.Сотрудник = ЗанимаемыхСтавок.Сотрудник
|ГДЕ
| ЗанятыеШтатныеЕдиницыОрганизаций.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОН.ФизЛицо
|ПОМЕСТИТЬ ФизЛица
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК ОН
| ЛЕВОЕ СОЕДИНЕНИЕ Ставки КАК Ставки
| ПО ОН.Сотрудник = Ставки.Сотрудник
|ГДЕ
| ОН.ПериодРегистрации >= &НачПер
| И ОН.ПериодРегистрации <= КОНЕЦПЕРИОДА(&КонПер, МЕСЯЦ)
| И (НЕ ОН.ВидРасчета В (&КомпЛит))
| И ОН.Сотрудник.ВидЗанятости = &ОснМестоРаботы
| И Ставки.КоличествоСтавок >=1
| И (НЕ ОН.Сотрудник В
| (ВЫБРАТЬ
| ОсновныеНачисленияРаботниковОрганизаций.Сотрудник
| ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК ОсновныеНачисленияРаботниковОрганизаций
| ГДЕ
| ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&почасовка)))"
+ТекстУсловия+"
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОН.Сотрудник.Наименование КАК Сотрудник,
| ОН.Сотрудник.Должность КАК Должность,
| СУММА(ОН.Результат) КАК Результат,
| Ставки.КоличествоСтавок КАК КоличествоСтавок
|ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК ОН
| ЛЕВОЕ СОЕДИНЕНИЕ Ставки КАК Ставки
| ПО ОН.Сотрудник = Ставки.Сотрудник
|ГДЕ
| ОН.ПериодРегистрации >= &НачПер
| И ОН.ПериодРегистрации <= КОНЕЦПЕРИОДА(&КонПер, МЕСЯЦ)
| И (НЕ ОН.ВидРасчета В (&КомпЛит))
| И ОН.Сотрудник.ВидЗанятости = &ОснМестоРаботы
| И Ставки.КоличествоСтавок >=1
|   И ОН.Результат <> 0
| И (НЕ ОН.Сотрудник В
| (ВЫБРАТЬ
| ОсновныеНачисленияРаботниковОрганизаций.Сотрудник
| ИЗ
| РегистрРасчета.БУОсновныеНачисления КАК ОсновныеНачисленияРаботниковОрганизаций
| ГДЕ
| ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&почасовка)))
| И ОН.КОСГУ = &КОСГУ211"
+ТекстУсловия+"
|СГРУППИРОВАТЬ ПО
|ОН.Сотрудник.Наименование,
|ОН.Сотрудник.Должность,
|Ставки.КоличествоСтавок
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Наименование,
| ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность,
| СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
| Ставки.КоличествоСтавок
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК ДополнительныеНачисленияРаботниковОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ Ставки КАК Ставки
| ПО ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник = Ставки.Сотрудник
|ГДЕ
| ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации >= &НачПер
| И ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации <= КОНЕЦПЕРИОДА(&КонПер, МЕСЯЦ)
| И ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.ВидЗанятости = &ОснМестоРаботы
| И Ставки.КоличествоСтавок >=1
|   И ДополнительныеНачисленияРаботниковОрганизаций.Результат <> 0
| И ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета <> &ДоговорПодряда
| И ДополнительныеНачисленияРаботниковОрганизаций.КОСГУ = &КОСГУ211"

+ТекстУсловияДоп+"
|СГРУППИРОВАТЬ ПО
|ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Наименование,
|ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность,
|Ставки.КоличествоСтавок
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ОН.Сотрудник.Наименование,
| ОН.Сотрудник.Должность,
| СУММА(ОН.Результат) КАК Результат,
| Ставки.КоличествоСтавок КАК КоличествоСтавок
| ИЗ
|ФизЛица КАК ФизЛица
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.БУОсновныеНачисления КАК ОН
| ЛЕВОЕ СОЕДИНЕНИЕ Ставки КАК Ставки
| ПО ОН.Сотрудник = Ставки.Сотрудник
| ПО ФизЛица.ФизЛицо = ОН.ФизЛицо
   |
|ГДЕ
| ОН.ПериодРегистрации >= &НачПер
| И ОН.ПериодРегистрации <= КОНЕЦПЕРИОДА(&КонПер, МЕСЯЦ)
| И (НЕ ОН.ВидРасчета В (&КомпЛит))
| И ОН.Сотрудник.ВидЗанятости = &ВнутрСовм
| И ОН.Результат<> 0
| И ОН.КОСГУ = &КОСГУ211"
+ТекстУсловия+"
|СГРУППИРОВАТЬ ПО
|ОН.Сотрудник.Наименование,
|ОН.Сотрудник.Должность,
|Ставки.КоличествоСтавок
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Наименование,
| ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность,
| СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
| Ставки.КоличествоСтавок
|ИЗ
| РегистрРасчета.БУДополнительныеНачисления КАК ДополнительныеНачисленияРаботниковОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ Ставки КАК Ставки
| ПО ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник = Ставки.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ ФизЛица КАК ФизЛица
| ПО ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо = ФизЛица.ФизЛицо
|ГДЕ
| ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации >= &НачПер
| И ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации <= КОНЕЦПЕРИОДА(&КонПер, МЕСЯЦ)
| И ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.ВидЗанятости = &ВнутрСовм
| И ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета <> &ДоговорПодряда
|   И ДополнительныеНачисленияРаботниковОрганизаций.результат <> 0
| И ДополнительныеНачисленияРаботниковОрганизаций.КОСГУ = &КОСГУ211"
+ТекстУсловияДоп+"

|СГРУППИРОВАТЬ ПО
|ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Наименование,
|ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность,
|Ставки.КоличествоСтавок
   |
|УПОРЯДОЧИТЬ ПО
|Сотрудник
|ИТОГИ
|СУММА(Результат),
|МАКСИМУМ(КоличествоСтавок)
|ПО
|Сотрудник";"
Последнюю таблицу делаешь временной, убирая из нее итоги оставляешь группировку только там, где нужен максимум.
Потом добавляешь еще 1 запрос, уже финальный, не временную таблицу, в которой используешь эту предыдущую, группируешь уже как надо со всем суммами.
я так пробовал в первую очередь. Ошибка получается "синтаксическая ошибка в "поместить". Я так понимаю это из-за того, что четыре запроса у меня объединены в результирующем и "поместить" ставится после первого "выбрать", а таких выбрать там 4.
Пользуйтесь конструктором, будет понятно, что можно, что нет и как.
Читают тему
(гостей: 1)

Быстрый переход