Удвоение итогов при выводе в табличной части

1. MORSON 18.12.23 17:43 Сейчас в теме
Здраствуйте, изучаю 1С но ещё не скажу что прям во всем разбираюсь. Поэтому обращаюсь с помощью может сможет кто-нибудь помочь или даст ссылку на статью где бы я мог вычитать информацию.

Существует печатная формат в ней я вывожу итоге по таблице по двум значениям: Пополнения и Удержания. С пополнениями никаких проблем а вот при сложении Удержаний сумма почему-то ещё умножается на 2.

//Получить макет
	Макет = Документы.НачислениеЗПСотрудника.ПолучитьМакет("Макет");
	
	//Получение областей из макета
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапкаТаблицыНач = Макет.ПолучитьОбласть("ШапкаТаблицыНач");
	ОбластьСтрокаТаблицыНач = Макет.ПолучитьОбласть("СтрокаТаблицыНач");
	ОбластьПодвалНач = Макет.ПолучитьОбласть("ПодвалНач");
	ОбластьШапкаТаблицыУд = Макет.ПолучитьОбласть("ШапкаТаблицыУд");
	ОбластьСтрокаТаблицыУд = Макет.ПолучитьОбласть("СтрокаТаблицыУд");
	ОбластьПодвалУд = Макет.ПолучитьОбласть("ПодвалУд");
	
	//Заполнение параметров и вывод областей в табличный документ
	
	//шапка
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачислениеЗПСотрудника.Организация.Наименование КАК Организация,
		|	НачислениеЗПСотрудника.Поликлиника.Наименование КАК Поликлиника,
		|	НачислениеЗПСотрудника.Сотрудник.Наименование КАК Сотрудник,
		|	НачислениеЗПСотрудника.ПериодДок.Наименование КАК ПериодДок,
		|	НачислениеЗПСотрудника.ПериодДатаНачала КАК ПериодДатаНачала,
		|	НачислениеЗПСотрудника.ПериодДатаКонца КАК ПериодДатаКонца
		|ИЗ
		|	Документ.НачислениеЗПСотрудника КАК НачислениеЗПСотрудника
		|ГДЕ
		|	НачислениеЗПСотрудника.Ссылка = &СсылкаНаДокумент";
	
	Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ОбластьШапка.Параметры.Организация = ВыборкаДетальныеЗаписи.Организация;
		ОбластьШапка.Параметры.Поликлиника = ВыборкаДетальныеЗаписи.Поликлиника;
		ОбластьШапка.Параметры.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
		ОбластьШапка.Параметры.ПериодДок = Формат(ВыборкаДетальныеЗаписи.ПериодДок,"ДФ=MMMM.yyyy");
		ОбластьШапка.Параметры.ПериодДатаНачала = Формат(ВыборкаДетальныеЗаписи.ПериодДатаНачала,"ДФ=dd.MM.yyyy");
		ОбластьШапка.Параметры.ПериодДатаКонца = Формат(ВыборкаДетальныеЗаписи.ПериодДатаКонца, "ДФ=dd.MM.yyyy");

		
		ТабДок.Вывести(ОбластьШапка);	
	КонецЦикла;
	
	
	//шапка таблицы Нач
	
			
	ТабДок.Вывести(ОбластьШапкаТаблицыНач);
		
	
	
	//Строка таблицы Начисления  
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачислениеЗПСотрудникаНачисленияЗП.Отделение.Наименование КАК Отделение,
		|	НачислениеЗПСотрудникаНачисленияЗП.Должность.Наименование КАК Должность,
		|	НачислениеЗПСотрудникаНачисленияЗП.СуммаН КАК Сумма
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
		|ГДЕ
		|	НачислениеЗПСотрудникаНачисленияЗП.Ссылка.Ссылка = &СсылкаНаДокумент
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	НачислениеЗПСотрудникаНачисленияДополнительные.Отделение.Наименование,
		|	НачислениеЗПСотрудникаНачисленияДополнительные.Должность.Наименование,
		|	НачислениеЗПСотрудникаНачисленияДополнительные.СуммаН
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.НачисленияДополнительные КАК НачислениеЗПСотрудникаНачисленияДополнительные
		|ГДЕ
		|	НачислениеЗПСотрудникаНачисленияДополнительные.Ссылка.Ссылка = &СсылкаНаДокумент";
	
	Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ОбластьСтрокаТаблицыНач.Параметры.Отделение = ВыборкаДетальныеЗаписи.Отделение;
		ОбластьСтрокаТаблицыНач.Параметры.Должность = ВыборкаДетальныеЗаписи.Должность;
		ОбластьСтрокаТаблицыНач.Параметры.СуммаНачисления = ВыборкаДетальныеЗаписи.Сумма;
		//
				
		
		ТабДок.Вывести(ОбластьСтрокаТаблицыНач);

	КонецЦикла; 
	

	
	//подвал нач
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СУММА(НачислениеЗПСотрудникаНачисленияЗП.СуммаН) КАК СальдоКонецН,
		|	NULL КАК СальдоКонецУ
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.НачисленияЗП КАК НачислениеЗПСотрудникаНачисленияЗП
		|ГДЕ
		|	НачислениеЗПСотрудникаНачисленияЗП.Ссылка = &СсылкаНаДокумент";
	
	
	Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		
		 ОбластьПодвалНач.Параметры.СальдоКонецН = ВыборкаДетальныеЗаписи.СальдоКонецН;
		 
		 ТабДок.Вывести(ОбластьПодвалНач);
	 КонецЦикла;
	  
	
	
	//шапка таблицы Уд
	
	ТабДок.Вывести(ОбластьШапкаТаблицыУд);
	
	//Строка таблицы Уд
	
	  Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачислениеЗПСотрудникаУдержания.Удержание.Наименование КАК ВидОперации,
		|	НачислениеЗПСотрудникаУдержания.СуммаУ КАК СуммаУ,
		|	НачислениеЗПСотрудникаУдержания.Отделение.Наименование КАК ОтделениеУ,
		|	НачислениеЗПСотрудникаУдержания.Должность.Наименование КАК ДолжностьУ
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
		|ГДЕ
		|	НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	НачислениеЗПСотрудникаВыплатыУдержанияБелые.ВыпУд,
		|	НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып,
		|	NULL,
		|	NULL
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые";
	
	Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ОбластьСтрокаТаблицыУд.Параметры.ОтделениеУ = ВыборкаДетальныеЗаписи.ОтделениеУ;
		ОбластьСтрокаТаблицыУд.Параметры.ДолжностьУ = ВыборкаДетальныеЗаписи.ДолжностьУ;
		ОбластьСтрокаТаблицыУд.Параметры.ВидОперации = ВыборкаДетальныеЗаписи.ВидОперации;
		ОбластьСтрокаТаблицыУд.Параметры.СуммаУдержания = ВыборкаДетальныеЗаписи.СуммаУ;
		//
				
		
		ТабДок.Вывести(ОбластьСтрокаТаблицыУд);

	КонецЦикла;
	
	
	//подвал уд
	 
	//!!!Почему-то значение помиммо складывания умножаются на 2
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СУММА(НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып + НачислениеЗПСотрудникаУдержания.СуммаУ) КАК СальдоКонецУ
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания,
		|	Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые
		|ГДЕ
		|	НачислениеЗПСотрудникаУдержания.Ссылка = &СсылкаНаДокумент";
	
	Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		ОбластьПодвалУд.Параметры.СальдоКонецУ = ВыборкаДетальныеЗаписи.СальдоКонецУ;
		ТабДок.Вывести(ОбластьПодвалУд);

		
	КонецЦикла;
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. Anton_new01 18.12.23 17:55 Сейчас в теме
в последнем запросе у вас данные тянутся из двух таблиц удержания и удержания белые.
между ними не указано соединение. это в корне не верно. и система начинает мультиплицировать все строки.
в следствии чего ваши строики задваиваются и далее суммы
3. Anton_new01 18.12.23 17:57 Сейчас в теме
посчитайте отдельно сумму по одной таблице и объедините с суммой по другой таблице. и будет вам счастье.

если суммы белые и просто суммые - это разные слагаемые, а не какая то зависимая сложная функция.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Sashares 35 18.12.23 17:59 Сейчас в теме
(1)Для вывода подвала таблиц не имеет смысла делать запросы к этому же документу еще раз.
Добавьте переменные СуммаНачисленийИтого, СуммаУдержанийИтого - заполняйте их при выводе строк соответствующих разделов, а потом выведите их в подвалах.
2. Anton_new01 18.12.23 17:55 Сейчас в теме
в последнем запросе у вас данные тянутся из двух таблиц удержания и удержания белые.
между ними не указано соединение. это в корне не верно. и система начинает мультиплицировать все строки.
в следствии чего ваши строики задваиваются и далее суммы
5. MORSON 18.12.23 19:41 Сейчас в теме
(2) соединение это я так понимаю подразумевает группировку? Или я вообще не туда не думаю?
6. MORSON 18.12.23 19:45 Сейчас в теме
(4)Но это же не избавит от задвоенния суммы я так понимаю? Судя по комментарию
(2)
8. Sashares 35 18.12.23 20:01 Сейчас в теме
(6)Не правильно понимаете.
Также начисления вы выводите из 2х таблиц, а в подвал только из одной.
9. MORSON 18.12.23 20:09 Сейчас в теме
(8) всё, я понял. Я просто очень сильно тупанул. Спасибо большое
10. MORSON 19.12.23 02:24 Сейчас в теме
(2) Ага, получилось. Пересчитал по по двум разным запросам и всё получилось
ЗапросСуммаВыплат = Новый Запрос;
	ЗапросСуммаВыплат.Текст = 
		"ВЫБРАТЬ
		|	СУММА(НачислениеЗПСотрудникаВыплатыУдержанияБелые.СуммаВып) КАК СуммаВып
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.ВыплатыУдержанияБелые КАК НачислениеЗПСотрудникаВыплатыУдержанияБелые
		|ГДЕ
		|	НачислениеЗПСотрудникаВыплатыУдержанияБелые.Ссылка.Ссылка = &СсылкаНаДокумент";

	ЗапросСуммаВыплат.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

	РезультатЗапросаСуммаВыплат = ЗапросСуммаВыплат.Выполнить();

	ВыборкаСуммаВыплат = РезультатЗапросаСуммаВыплат.Выбрать();

	Если ВыборкаСуммаВыплат.Следующий() Тогда
		СуммаВыплат = ВыборкаСуммаВыплат.СуммаВып;
	КонецЕсли;

	// Запрос для суммы удержаний
	ЗапросСуммаУдержаний = Новый Запрос;
	ЗапросСуммаУдержаний.Текст = 
		"ВЫБРАТЬ
		|	СУММА(НачислениеЗПСотрудникаУдержания.СуммаУ) КАК СуммаУ
		|ИЗ
		|	Документ.НачислениеЗПСотрудника.Удержания КАК НачислениеЗПСотрудникаУдержания
		|ГДЕ
		|	НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент";

	ЗапросСуммаУдержаний.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

	РезультатЗапросаСуммаУдержаний = ЗапросСуммаУдержаний.Выполнить();

	ВыборкаСуммаУдержаний = РезультатЗапросаСуммаУдержаний.Выбрать();

	Если ВыборкаСуммаУдержаний.Следующий() Тогда
		СуммаУдержаний = ВыборкаСуммаУдержаний.СуммаУ;
	КонецЕсли;

	// Подвал уд
	СальдоКонецУ = СуммаВыплат + СуммаУдержаний;

	ОбластьПодвалУд.Параметры.СальдоКонецУ = СальдоКонецУ;
	ТабДок.Вывести(ОбластьПодвалУд);
Показать
11. Sashares 35 19.12.23 10:26 Сейчас в теме
(10)
НачислениеЗПСотрудникаУдержания.Ссылка.Ссылка = &СсылкаНаДокумент";


Не делайте так.
12. MORSON 19.12.23 11:08 Сейчас в теме
(11) Нужно было ссылаться только на
НачислениеЗПСотрудникаУдержания.Ссылка = &СсылкаНаДокумент";
?
13. Sashares 35 19.12.23 11:10 Сейчас в теме
3. Anton_new01 18.12.23 17:57 Сейчас в теме
посчитайте отдельно сумму по одной таблице и объедините с суммой по другой таблице. и будет вам счастье.

если суммы белые и просто суммые - это разные слагаемые, а не какая то зависимая сложная функция.
7. MORSON 18.12.23 19:48 Сейчас в теме
Оставьте свое сообщение

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