Помогите пожалуйста! Задание по ЗУП

1. HarkonLord 25.12.23 11:01 Сейчас в теме
Всем доброе утро! В общем,продвинулся вперед,но осталась последняя часть задачи
По регистрам расчёта начисления и удержания сделать выборку:
Сотрудник
Месяц
Сумма начислено
Сумма удержано
Итоговая сумма
Итоговая сумма за прошлый месяц
Сумма увеличилась (Да/нет, относительно предыдущего периода)
Добавить итоги по сотруднику.
На уровне сотрудника рассчитывать только итоговую сумму.
Месяцы выводить по убыванию.
//////
Я сделал запрос,но у меня вызвал проблему пункт Про итоговую сумму за прошлый месяц.
Коллега подсказал,что нужно "Правильно связать сотрудника и дату",но я не совсем понял эту подсказку, можете помочь?
Я помню,что вроде как есть функция с помощью которой можно дату сделать на день,месяц,год меньше,но не уверен.

Вот текст запроса:
ВЫБРАТЬ
	Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
	Начисления.Месяц КАК МесяцНачисления,
	СУММА(Начисления.Результат) КАК СуммаНачисления
ПОМЕСТИТЬ ВтНачисления
ИЗ
	РегистрРасчета.Начисления КАК Начисления

СГРУППИРОВАТЬ ПО
	Начисления.ФизическоеЛицо,
	Начисления.Месяц
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Удержания.ФизическоеЛицо КАК ФизическоеЛицо,
	Удержания.ПериодРегистрации КАК МесяцУдержания,
	Удержания.Результат КАК СуммаУдержания
ПОМЕСТИТЬ ВтУдержания
ИЗ
	РегистрРасчета.Удержания КАК Удержания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтНачисления.ФизическоеЛицо КАК Сотрудник,
	ВтНачисления.МесяцНачисления КАК МесяцНачисления,
	ВтНачисления.СуммаНачисления КАК СуммаНачисления,
	ВтУдержания.СуммаУдержания КАК СуммаУдержания,
	ВтНачисления.СуммаНачисления - ВтУдержания.СуммаУдержания КАК ИтогЗаПериод
ИЗ
	ВтНачисления КАК ВтНачисления
		ЛЕВОЕ СОЕДИНЕНИЕ ВтУдержания КАК ВтУдержания
		ПО (ВтНачисления.ФизическоеЛицо = ВтУдержания.ФизическоеЛицо)
			И (ВтНачисления.МесяцНачисления = ВтУдержания.МесяцУдержания)

УПОРЯДОЧИТЬ ПО
	МесяцНачисления УБЫВ
ИТОГИ
	СУММА(ИтогЗаПериод)
ПО
	Сотрудник
Показать
Прикрепленные файлы:
Задание3.q1c
По теме из базы знаний
Найденные решения
7. ActionBlog 25.12.23 13:50 Сейчас в теме
ВЫБРАТЬ
	Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
	Начисления.Месяц КАК Месяц,
	СУММА(Начисления.Результат) КАК СуммаНачислено,
	0 КАК СуммаУдержано
ПОМЕСТИТЬ втИсходныеДанные
ИЗ
	РегистрРасчета.Начисления КАК Начисления

СГРУППИРОВАТЬ ПО
	Начисления.ФизическоеЛицо,
	Начисления.Месяц

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Удержания.ФизическоеЛицо,
	Удержания.ПериодРегистрации,
	0,
	Удержания.Результат
ИЗ
	РегистрРасчета.Удержания КАК Удержания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втИсходныеДанные.ФизическоеЛицо КАК ФизическоеЛицо,
	втИсходныеДанные.Месяц КАК Месяц,
	СУММА(втИсходныеДанные.СуммаНачислено) КАК СуммаНачислено,
	СУММА(втИсходныеДанные.СуммаУдержано) КАК СуммаУдержано
ПОМЕСТИТЬ втГруппировка
ИЗ
	втИсходныеДанные КАК втИсходныеДанные

СГРУППИРОВАТЬ ПО
	втИсходныеДанные.ФизическоеЛицо,
	втИсходныеДанные.Месяц
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втГруппировка.ФизическоеЛицо КАК ФизическоеЛицо,
	втГруппировка.Месяц КАК Месяц,
	втГруппировка.СуммаНачислено КАК СуммаНачислено,
	втГруппировка.СуммаУдержано КАК СуммаУдержано,
	втГруппировка.СуммаНачислено - втГруппировка.СуммаУдержано КАК ИтоговаяСумма
ПОМЕСТИТЬ втИтогиПоМесяцам
ИЗ
	втГруппировка КАК втГруппировка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втИтогиПоМесяцам.ФизическоеЛицо КАК ФизическоеЛицо,
	втИтогиПоМесяцам.Месяц КАК Месяц,
	втИтогиПоМесяцам.СуммаНачислено КАК СуммаНачислено,
	втИтогиПоМесяцам.СуммаУдержано КАК СуммаУдержано,
	втИтогиПоМесяцам.ИтоговаяСумма КАК ИтоговаяСумма,
	ЕСТЬNULL(втИтогиПоМесяцамПрошлыйМесяц.ИтоговаяСумма, 0) КАК ИтоговаяСуммаЗаПрошлыйМесяц,
	ВЫБОР
		КОГДА ЕСТЬNULL(втИтогиПоМесяцамПрошлыйМесяц.ИтоговаяСумма, 0) < втИтогиПоМесяцам.ИтоговаяСумма
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК СуммаУвеличилась
ИЗ
	втИтогиПоМесяцам КАК втИтогиПоМесяцам
		ЛЕВОЕ СОЕДИНЕНИЕ втИтогиПоМесяцам КАК втИтогиПоМесяцамПрошлыйМесяц
		ПО втИтогиПоМесяцам.ФизическоеЛицо = втИтогиПоМесяцамПрошлыйМесяц.ФизическоеЛицо
			И (втИтогиПоМесяцам.Месяц = ДОБАВИТЬКДАТЕ(втИтогиПоМесяцамПрошлыйМесяц.Месяц, МЕСЯЦ, -1))
Показать


Осталось два пункта:
1 - На уровне сотрудника рассчитывать только итоговую сумму.
2 - Месяцы выводить по убыванию

Тут сами справитесь?
12. ActionBlog 25.12.23 16:04 Сейчас в теме
(10)Это называется Объединение таблиц. Есть соединение, когда справа или слева к основной таблице присоединяются строки из второй таблицы, а есть объединение, когда вторая таблица располагается снизу.
Разберем на Вашем примере:
ВЫБРАТЬ
    Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
    Начисления.Месяц КАК Месяц,
    СУММА(Начисления.Результат) КАК СуммаНачислено,
    0 КАК СуммаУдержано
ИЗ
    РегистрРасчета.Начисления КАК Начисления

Вот тут мы из регистра "Начисления" достаем ФизическоеЛицо, Месяц и СуммаНачислено, и делаем пустую колонку "Сумма удержано" с нулями.
Далее вот в этом фрагменте
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Удержания.ФизическоеЛицо,
    Удержания.ПериодРегистрации,
    0,
    Удержания.Результат
ИЗ
    РегистрРасчета.Удержания КАК Удержания
Показать


Мы снизу к получившейся таблице из регистра "Начисления" присоединяем таблицу из регистра "Удержания". Из таблицы удержания мы достаем колонки ФизическоеЛицо, ПериодРегистрации и СуммаУдержано и делаем пустую колонку "СуммаНачислено", заполняем ее нулями.

В итоге у нас получается таблица с колонками
ФизическоеЛицо|Месяц|СуммаНачислено|СуммаУдержано
Сначала в этой таблице идут строки из начислений
Иванов|01.01.2023|998,87|0
Петров|01.01.2023|98,20|0
Сидоров|01.01.2023|1000,34|0
Игнашевич|01.01.2023|555,55|0
...
Причем в колонке "Сумма удержано" у нас только нули
Далее в итоговой таблице идут строки из удержаний

Иванов|01.01.2023|0|111,11
Петров|01.01.2023|0|222,22
Сидоров|01.01.2023|0|333,33
Игнашевич|01.01.2023|0|444,44
...
Причем "Сумма начислено" у нас везде нулевая.

Получаем таблицу начислений и удержаний

ФизическоеЛицо|Месяц |СуммаНачислено|СуммаУдержано
Иванов |01.01.2023|998,87 |0
Петров |01.01.2023|98,20 |0
Сидоров |01.01.2023|1000,34 |0
Игнашевич |01.01.2023|555,55 |0
Иванов |01.01.2023|0 |111,11
Петров |01.01.2023|0 |222,22
Сидоров |01.01.2023|0 |333,33
Игнашевич |01.01.2023|0 |444,44

Засовываем ее во временную таблицу и во втором запросе пакета выполняем группирову по полям ФизическоеЛицо и Месяц с суммированием полей СуммаНачислено и СуммаУдержано. Получаем исходную для нашего отчета таблицу начислений и удержаний по месяцам и сотрудникам.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. newlogin1 25.12.23 13:47 Сейчас в теме
(1)Можно через объединение
Месяц
ИЗ регистр (нач, кон)
объединиить
ДОбавитьКДате(Месяц, Месяц, 1)
Из
регистр(начПрошлый, конПрошлый)

И сгруппировать потом, либо через левое соединение
2. HarkonLord 25.12.23 11:11 Сейчас в теме
Выбрать
ДобавитьКДате(ДатаВремя(2016,10,1),МЕСЯЦ,-1)

Вот по идее вот с помощью этой функции можно сделать,если я не ошибаюсь
3. HarkonLord 25.12.23 11:21 Сейчас в теме
(2)Но только я не знаю,как правильно её применить в запросе(не в плане написания параметров и т.д), а именно как связать с получением итога за предыдущий месяц
4. ActionBlog 25.12.23 13:04 Сейчас в теме
"Итоговая сумма" и "Итоговая сумма за прошлый месяц" по какой формуле должны вычисляться?
5. HarkonLord 25.12.23 13:15 Сейчас в теме
(4)
Итоговая сумма
Сумма Начисления-Сумма Удержания
7. ActionBlog 25.12.23 13:50 Сейчас в теме
ВЫБРАТЬ
	Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
	Начисления.Месяц КАК Месяц,
	СУММА(Начисления.Результат) КАК СуммаНачислено,
	0 КАК СуммаУдержано
ПОМЕСТИТЬ втИсходныеДанные
ИЗ
	РегистрРасчета.Начисления КАК Начисления

СГРУППИРОВАТЬ ПО
	Начисления.ФизическоеЛицо,
	Начисления.Месяц

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Удержания.ФизическоеЛицо,
	Удержания.ПериодРегистрации,
	0,
	Удержания.Результат
ИЗ
	РегистрРасчета.Удержания КАК Удержания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втИсходныеДанные.ФизическоеЛицо КАК ФизическоеЛицо,
	втИсходныеДанные.Месяц КАК Месяц,
	СУММА(втИсходныеДанные.СуммаНачислено) КАК СуммаНачислено,
	СУММА(втИсходныеДанные.СуммаУдержано) КАК СуммаУдержано
ПОМЕСТИТЬ втГруппировка
ИЗ
	втИсходныеДанные КАК втИсходныеДанные

СГРУППИРОВАТЬ ПО
	втИсходныеДанные.ФизическоеЛицо,
	втИсходныеДанные.Месяц
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втГруппировка.ФизическоеЛицо КАК ФизическоеЛицо,
	втГруппировка.Месяц КАК Месяц,
	втГруппировка.СуммаНачислено КАК СуммаНачислено,
	втГруппировка.СуммаУдержано КАК СуммаУдержано,
	втГруппировка.СуммаНачислено - втГруппировка.СуммаУдержано КАК ИтоговаяСумма
ПОМЕСТИТЬ втИтогиПоМесяцам
ИЗ
	втГруппировка КАК втГруппировка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	втИтогиПоМесяцам.ФизическоеЛицо КАК ФизическоеЛицо,
	втИтогиПоМесяцам.Месяц КАК Месяц,
	втИтогиПоМесяцам.СуммаНачислено КАК СуммаНачислено,
	втИтогиПоМесяцам.СуммаУдержано КАК СуммаУдержано,
	втИтогиПоМесяцам.ИтоговаяСумма КАК ИтоговаяСумма,
	ЕСТЬNULL(втИтогиПоМесяцамПрошлыйМесяц.ИтоговаяСумма, 0) КАК ИтоговаяСуммаЗаПрошлыйМесяц,
	ВЫБОР
		КОГДА ЕСТЬNULL(втИтогиПоМесяцамПрошлыйМесяц.ИтоговаяСумма, 0) < втИтогиПоМесяцам.ИтоговаяСумма
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК СуммаУвеличилась
ИЗ
	втИтогиПоМесяцам КАК втИтогиПоМесяцам
		ЛЕВОЕ СОЕДИНЕНИЕ втИтогиПоМесяцам КАК втИтогиПоМесяцамПрошлыйМесяц
		ПО втИтогиПоМесяцам.ФизическоеЛицо = втИтогиПоМесяцамПрошлыйМесяц.ФизическоеЛицо
			И (втИтогиПоМесяцам.Месяц = ДОБАВИТЬКДАТЕ(втИтогиПоМесяцамПрошлыйМесяц.Месяц, МЕСЯЦ, -1))
Показать


Осталось два пункта:
1 - На уровне сотрудника рассчитывать только итоговую сумму.
2 - Месяцы выводить по убыванию

Тут сами справитесь?
8. HarkonLord 25.12.23 14:00 Сейчас в теме
(7) Да,вариант рабочий,сейчас буду разбираться,спасибо большое!
9. HarkonLord 25.12.23 14:24 Сейчас в теме
(7)Можно вопрос по вашему решению задать?
11. ActionBlog 25.12.23 15:49 Сейчас в теме
10. HarkonLord 25.12.23 14:25 Сейчас в теме
(7)
На уровне сотрудника рассчитывать только итоговую сумму.
2 - Месяцы выводить по убыванию

Да тут у меня уже всё готово было,в моём решении.
Просто мне интересно по поводу пятой строчки кода.
"0 Как СуммаУдержано"
Я не совсем понял,что это означает
12. ActionBlog 25.12.23 16:04 Сейчас в теме
(10)Это называется Объединение таблиц. Есть соединение, когда справа или слева к основной таблице присоединяются строки из второй таблицы, а есть объединение, когда вторая таблица располагается снизу.
Разберем на Вашем примере:
ВЫБРАТЬ
    Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
    Начисления.Месяц КАК Месяц,
    СУММА(Начисления.Результат) КАК СуммаНачислено,
    0 КАК СуммаУдержано
ИЗ
    РегистрРасчета.Начисления КАК Начисления

Вот тут мы из регистра "Начисления" достаем ФизическоеЛицо, Месяц и СуммаНачислено, и делаем пустую колонку "Сумма удержано" с нулями.
Далее вот в этом фрагменте
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Удержания.ФизическоеЛицо,
    Удержания.ПериодРегистрации,
    0,
    Удержания.Результат
ИЗ
    РегистрРасчета.Удержания КАК Удержания
Показать


Мы снизу к получившейся таблице из регистра "Начисления" присоединяем таблицу из регистра "Удержания". Из таблицы удержания мы достаем колонки ФизическоеЛицо, ПериодРегистрации и СуммаУдержано и делаем пустую колонку "СуммаНачислено", заполняем ее нулями.

В итоге у нас получается таблица с колонками
ФизическоеЛицо|Месяц|СуммаНачислено|СуммаУдержано
Сначала в этой таблице идут строки из начислений
Иванов|01.01.2023|998,87|0
Петров|01.01.2023|98,20|0
Сидоров|01.01.2023|1000,34|0
Игнашевич|01.01.2023|555,55|0
...
Причем в колонке "Сумма удержано" у нас только нули
Далее в итоговой таблице идут строки из удержаний

Иванов|01.01.2023|0|111,11
Петров|01.01.2023|0|222,22
Сидоров|01.01.2023|0|333,33
Игнашевич|01.01.2023|0|444,44
...
Причем "Сумма начислено" у нас везде нулевая.

Получаем таблицу начислений и удержаний

ФизическоеЛицо|Месяц |СуммаНачислено|СуммаУдержано
Иванов |01.01.2023|998,87 |0
Петров |01.01.2023|98,20 |0
Сидоров |01.01.2023|1000,34 |0
Игнашевич |01.01.2023|555,55 |0
Иванов |01.01.2023|0 |111,11
Петров |01.01.2023|0 |222,22
Сидоров |01.01.2023|0 |333,33
Игнашевич |01.01.2023|0 |444,44

Засовываем ее во временную таблицу и во втором запросе пакета выполняем группирову по полям ФизическоеЛицо и Месяц с суммированием полей СуммаНачислено и СуммаУдержано. Получаем исходную для нашего отчета таблицу начислений и удержаний по месяцам и сотрудникам.
13. HarkonLord 25.12.23 16:26 Сейчас в теме
(12)
(12)
Это называется Объединение таблиц. Есть соединение, когда справа или слева к основной таблице присоединяются строки из второй таблицы, а есть объединение, когда вторая таблица располагается снизу.
Благодарю! Раньше не видел такого способа соединения. Очень подробное объяснение, наконец-то. Спасибо огромное за Ваше время! Хорошего Вам вечера!
Оставьте свое сообщение

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