Отчет по начислениям

1. olo_lo4 16.05.16 23:59 Сейчас в теме
Необходимо создать отчет, который отображает общую сумму осн и доп начислений по каждому сотруднику. Запросом создаю две временные таблицы, в первой "сотрудник", "период регистрации", "Результат" по осн.начислениям, во второй выбираю те же поля, только из доп.начислений. в 3м пакете запросов, выбираю первые два поля из осн.таблицы, естественно связанные с полями по доп.начислениям, а результат рассчитываю, как сумму результатов двух регистров. Период и Сотрудника в итоге я получаю, а колонка с результатом пустая((( Уже голову себе сломала, подскажите, как исправить??(
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. olo_lo4 17.05.16 00:02 Сейчас в теме
ВЫБРАТЬ

    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,

    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник КАК Сотрудник,
    СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК Результат
ПОМЕСТИТЬ Осн
ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций

СГРУППИРОВАТЬ ПО
    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации,
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник
;

////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

    ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации,

    ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
    СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат) КАК Результат
ПОМЕСТИТЬ Доп
ИЗ
    РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций

СГРУППИРОВАТЬ ПО
    ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник,
    ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации
;

////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

    Осн.ПериодРегистрации,

    Осн.Сотрудник КАК Сотрудник,
    СУММА(Осн.Результат + Доп.Результат) КАК Поле1
ИЗ
    Осн КАК Осн
        ЛЕВОЕ СОЕДИНЕНИЕ Доп КАК Доп
        ПО Осн.ПериодРегистрации = Доп.ПериодРегистрации
            И Осн.Сотрудник = Доп.Сотрудник

СГРУППИРОВАТЬ ПО
    Осн.ПериодРегистрации,
    Осн.Сотрудник

УПОРЯДОЧИТЬ ПО
    Сотрудник
Показать
5. pavl_vs 17.05.16 16:33 Сейчас в теме
(2) olo_lo4, в таком виде запрос дает строки, зафиксированные в регистре основных начислений с указанием есть (Сумма) или нет (NULL) дополнительных начислений у сотрудника NULL означает нет совпадений Осн и Доп начислений.

То что вся колонка пустая возможно кажущийся результат: из-за большого числа строк (число сотров + неограниченный период) Вы просто проскакиваете позиции с НЕ NULL.

Для отладки ограничьте период и возьмите сотрудника, у которого заведомо есть доп.начисления (ДГПХ, увольнения и т.п.).

А для отчета разумнее все-таки разделять основные и дополнительные начисления, а объединять (суммировать их) уже в итоговых колонках отчета.

PS Лично я в таком отчете обрабатывал данные двух запросов отдельно в таблицах значений, что позволяло в одном отчете иметь информацию как о штатных сотрах с доп.начислениями, так и сотров, имеющих только договора подряда.
3. twinkle 17.05.16 02:15 Сейчас в теме
Попробуйте связать НачалоПериода(Осн.ПериодРегистрации,Месяц) = НачалоПериода(Доп.ПериодРегистрации,месяц)
поскольку не всегда доп начисления делаются первым числом месяца, тогда как основные регистрируются именно началом месяца.
Во вторых такой запрос не факт что будет верно показывать, если у сотрудника были только доп начисления. Ведь тогда в первой таблице нет данного работника, а соединение левое
4. v12345 19 17.05.16 03:30 Сейчас в теме
Хм, мне почему-то казалось, что сбор сгруппированных данных из двух источников - это задача на объединение, а не на соединение.

Примерно так:

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

СГРУППИРОВАТЬ ПО
	ВсеДанные.Сотрудник,
	НАЧАЛОПЕРИОДА(ВсеДанные.ПериодРегистрации, МЕСЯЦ)
Показать
vadim1011985; user_2010; +2 Ответить
6. vadim1011985 101 17.05.16 16:48 Сейчас в теме
Согласен с v12345 тут чистое объединение с группировкой
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот