Необходимо создать отчет, который отображает общую сумму осн и доп начислений по каждому сотруднику. Запросом создаю две временные таблицы, в первой "сотрудник", "период регистрации", "Результат" по осн.начислениям, во второй выбираю те же поля, только из доп.начислений. в 3м пакете запросов, выбираю первые два поля из осн.таблицы, естественно связанные с полями по доп.начислениям, а результат рассчитываю, как сумму результатов двух регистров. Период и Сотрудника в итоге я получаю, а колонка с результатом пустая((( Уже голову себе сломала, подскажите, как исправить??(
По теме из базы знаний
- Отчет по начислениям, удержаниям, налогам из данных журналов расчета с произвольной группировкой за произвольный период
- Отчет по начислениям страховых взносов с 2010г.
- Отчет по начислениям сотрудникам
- Отчет по начислениям и окладам сотрудников
- Отчет по начислению и списанию бонусов (Розница 2.2, 2.3)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ВЫБРАТЬ
ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник,
СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат
ПОМЕСТИТЬ Осн
ИЗ
РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
СГРУППИРОВАТЬ ПО
ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат) КАК Результат
ПОМЕСТИТЬ Доп
ИЗ
РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
СГРУППИРОВАТЬ ПО
ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Осн.ПериодРегистрации,
Осн.Сотрудник КАК Сотрудник,
СУММА(Осн.Результат + Доп.Результат) КАК Поле1
ИЗ
Осн КАК Осн
ЛЕВОЕ СОЕДИНЕНИЕ Доп КАК Доп
ПО Осн.ПериодРегистрации = Доп.ПериодРегистрации
И Осн.Сотрудник = Доп.Сотрудник
СГРУППИРОВАТЬ ПО
Осн.ПериодРегистрации,
Осн.Сотрудник
УПОРЯДОЧИТЬ ПО
Сотрудник
Показать
(2) olo_lo4, в таком виде запрос дает строки, зафиксированные в регистре основных начислений с указанием есть (Сумма) или нет (NULL) дополнительных начислений у сотрудника NULL означает нет совпадений Осн и Доп начислений.
То что вся колонка пустая возможно кажущийся результат: из-за большого числа строк (число сотров + неограниченный период) Вы просто проскакиваете позиции с НЕ NULL.
Для отладки ограничьте период и возьмите сотрудника, у которого заведомо есть доп.начисления (ДГПХ, увольнения и т.п.).
А для отчета разумнее все-таки разделять основные и дополнительные начисления, а объединять (суммировать их) уже в итоговых колонках отчета.
PS Лично я в таком отчете обрабатывал данные двух запросов отдельно в таблицах значений, что позволяло в одном отчете иметь информацию как о штатных сотрах с доп.начислениями, так и сотров, имеющих только договора подряда.
То что вся колонка пустая возможно кажущийся результат: из-за большого числа строк (число сотров + неограниченный период) Вы просто проскакиваете позиции с НЕ NULL.
Для отладки ограничьте период и возьмите сотрудника, у которого заведомо есть доп.начисления (ДГПХ, увольнения и т.п.).
А для отчета разумнее все-таки разделять основные и дополнительные начисления, а объединять (суммировать их) уже в итоговых колонках отчета.
PS Лично я в таком отчете обрабатывал данные двух запросов отдельно в таблицах значений, что позволяло в одном отчете иметь информацию как о штатных сотрах с доп.начислениями, так и сотров, имеющих только договора подряда.
Попробуйте связать НачалоПериода(Осн.ПериодРегистрации,Месяц) = НачалоПериода(Доп.ПериодРегистрации,месяц)
поскольку не всегда доп начисления делаются первым числом месяца, тогда как основные регистрируются именно началом месяца.
Во вторых такой запрос не факт что будет верно показывать, если у сотрудника были только доп начисления. Ведь тогда в первой таблице нет данного работника, а соединение левое
поскольку не всегда доп начисления делаются первым числом месяца, тогда как основные регистрируются именно началом месяца.
Во вторых такой запрос не факт что будет верно показывать, если у сотрудника были только доп начисления. Ведь тогда в первой таблице нет данного работника, а соединение левое
Хм, мне почему-то казалось, что сбор сгруппированных данных из двух источников - это задача на объединение, а не на соединение.
Примерно так:
Примерно так:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ВсеДанные.ПериодРегистрации, МЕСЯЦ) КАК ПериодРегистрации,
ВсеДанные.Сотрудник,
СУММА(ВсеДанные.Результат) КАК Результат
ИЗ
(ВЫБРАТЬ
ВсеНачисления.ПериодРегистрации КАК ПериодРегистрации,
ВсеНачисления.Сотрудник КАК Сотрудник,
ВсеНачисления.Результат КАК Результат
ИЗ
РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ВсеНачисления
ГДЕ
ВсеНачисления.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
И ВсеНачисления.Сотрудник = &Сотрудник
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
ДополнительныеНачисленияРаботниковОрганизаций.Результат
ИЗ
РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
ГДЕ
ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
И ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник = &Сотрудник) КАК ВсеДанные
СГРУППИРОВАТЬ ПО
ВсеДанные.Сотрудник,
НАЧАЛОПЕРИОДА(ВсеДанные.ПериодРегистрации, МЕСЯЦ)
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот