ПечатьРПВ

1. user690256_es-ss 15.02.17 19:39 Сейчас в теме
Печать РПВ в колонках итого везде одна сумма.

Помогите решить проблему пожалуйста, как сделать так, что бы каждая колонка считалась отдельно.
Код выкладываю.

Заранее спасибо,,,,




ПечатьРПВ(ТабДокумент, Выборка, ИспользуетсяПолеВедомость, ИмяМакета)
	
	ЗаполнятьКБК = ИмяМакета = "форма0504401";
	
	ОсновныеНачисления = Новый Соответствие;
		
	Больничные = ВидыРасчетовБольничные();
	ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "Больничные", Больничные);
	
	ПособияПоУходу = Новый СписокЗначений;
	ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет);
	ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ПоУходуЗаРебенкомДоПолутораЛет);
	ПособияПоУходу.Добавить(Перечисления.ВидыПособийСоциальногоСтрахования.ДополнительныеВыходныеДниПоУходуЗаДетьмиИнвалидами);
	
	СписокНачисленийКолонка1 = Новый Соответствие;
	СписокНачисленийКолонка2 = Новый Соответствие;
	СписокНачисленийКолонка3 = Новый Соответствие;
	СписокНачисленийКолонка4 = Новый Соответствие;
	СписокУдержанийКолонка1  = Новый Соответствие;
	СписокУдержанийКолонка2  = Новый Соответствие;
	
	ЗаголовокНачисленийКолонка1 = "";
	ЗаголовокНачисленийКолонка2 = "";
	ЗаголовокНачисленийКолонка3 = "";
	ЗаголовокНачисленийКолонка4 = "";
	ЗаголовокУдержанийКолонка1  = "";
	ЗаголовокУдержанийКолонка2  = "";
	
	// Получим списки видов расчета
	Если ИмяМакета = "форма0504401" Тогда
		
		ОсмотренныеВР = Новый Соответствие;
		Для каждого СтрокаОрганизации Из Выборка.Строки Цикл
			Для каждого СтрокаСотрудника из СтрокаОрганизации.Строки Цикл
				Для каждого СтрокаНачисление из СтрокаСотрудника.Строки Цикл
					Если ОсмотренныеВР[СтрокаНачисление.ВидРасчета] <> Неопределено Тогда
						Продолжить;
					Иначе
						ОсмотренныеВР.Вставить(СтрокаНачисление.ВидРасчета,СтрокаНачисление.ВидРасчета)
					КонецЕсли;
					Если ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
						Продолжить;
					КонецЕсли;
					Если Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
						Продолжить;
					КонецЕсли;
					Если ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") И СтрокаНачисление.ЗачетОтработанногоВремени тогда
						ОсновныеНачисления.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
					ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") 
						ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
						ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") 
						И НЕ СтрокаНачисление.ЗачетОтработанногоВремени))  И СписокНачисленийКолонка1.Количество() = 0 тогда
						СписокНачисленийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						ЗаголовокНачисленийКолонка1 = ЗаголовокНачисленийКолонка1 + ?(ЗаголовокНачисленийКолонка1 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
					ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") 
						ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
						ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") 
						И НЕ СтрокаНачисление.ЗачетОтработанногоВремени))  И СписокНачисленийКолонка2.Количество() =0 тогда
						СписокНачисленийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						ЗаголовокНачисленийКолонка2 = ЗаголовокНачисленийКолонка2 + ?(ЗаголовокНачисленийКолонка2 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
					ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") 
						ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
						ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") 
						И НЕ СтрокаНачисление.ЗачетОтработанногоВремени)) И СписокНачисленийКолонка3.Количество() =0 тогда
						СписокНачисленийКолонка3.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						ЗаголовокНачисленийКолонка3 = ЗаголовокНачисленийКолонка3 + ?(ЗаголовокНачисленийКолонка3 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
					ИначеЕсли ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") 
						ИЛИ СтрокаНачисление.ВидРасчета = "Мат. выгода"
						ИЛИ (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") 
						И НЕ СтрокаНачисление.ЗачетОтработанногоВремени) тогда
						СписокНачисленийКолонка4.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						ЗаголовокНачисленийКолонка4 = ЗаголовокНачисленийКолонка4 + ?(ЗаголовокНачисленийКолонка4 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
					ИначеЕсли (ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций") 
						или СтрокаНачисление.ВидРасчета = "Погашение займа" или СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата")
						И СписокУдержанийКолонка1.Количество() = 0 тогда
						СписокУдержанийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						Если СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
							ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
						Иначе
							ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
						КонецЕсли;
					ИначеЕсли ТипЗНЧ(СтрокаНачисление.ВидРасчета) = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций")
						или СтрокаНачисление.ВидРасчета = "Погашение займа" или СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
						СписокУдержанийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						Если СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" тогда
							ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
						Иначе
							ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", СтрокаНачисление.ВидРасчета, ", " + СтрокаНачисление.ВидРасчета);
						КонецЕсли;
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
		КонецЦикла;
		
		Если СписокУдержанийКолонка1.Количество() > 0 и СписокУдержанийКолонка2.Количество() > 0 тогда
			МежрасчетнаяВыплата = СписокУдержанийКолонка2["МежРасчетнаяВыплата"];
			Если МежрасчетнаяВыплата <> Неопределено тогда
				Для каждого КлючИЗначение Из СписокУдержанийКолонка1 Цикл
					УдержаниеКолонки1 = КлючИЗначение.Значение;
					Прервать;
				КонецЦикла;
				СписокУдержанийКолонка2.Вставить(УдержаниеКолонки1, УдержаниеКолонки1);
				СписокУдержанийКолонка1.Очистить();
				СписокУдержанийКолонка1.Вставить("МежРасчетнаяВыплата", "МежРасчетнаяВыплата");
				ЗаголовокУдержанийКолонка1 = "Межрасчетная выплата"; 
				ЗаголовокУдержанийКолонка2 = "";
				Если СписокУдержанийКолонка2.Количество() = 1 тогда
					Для каждого КлючИЗначение Из СписокУдержанийКолонка2 Цикл
						ЗаголовокУдержанийКолонка2 = Строка(КлючИЗначение.Значение);
						Прервать;
					КонецЦикла;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		
	Иначе
		
		ОсмотренныеВР = Новый Соответствие;
		Для каждого СтрокаОрганизации Из Выборка.Строки Цикл
			Для каждого СтрокаСотрудника из СтрокаОрганизации.Строки Цикл
				Для каждого СтрокаНачисление из СтрокаСотрудника.Строки Цикл
					Если ОсмотренныеВР[СтрокаНачисление.ВидРасчета] <> Неопределено Тогда
						Продолжить;
					Иначе
						ОсмотренныеВР.Вставить(СтрокаНачисление.ВидРасчета,СтрокаНачисление.ВидРасчета)
					КонецЕсли;
					Если ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
						Продолжить;
					КонецЕсли;
					Если Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
						Продолжить;
					КонецЕсли;
					ТипВР = ТипЗнч(СтрокаНачисление.ВидРасчета);
					Если СтрокаНачисление.ЗачетОтработанногоВремени тогда
						
						ОсновныеНачисления.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						
					ИначеЕсли ТипВР = Тип("ПланВидовРасчетаСсылка.ДополнительныеНачисленияОрганизаций") Или ТипВР = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций") Или СтрокаНачисление.ВидРасчета = "Мат. выгода" Тогда
						
						Если СписокНачисленийКолонка1.Количество() = 0 Тогда
							СписокНачисленийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
							ЗаголовокНачисленийКолонка1 = ЗаголовокНачисленийКолонка1 + ?(ЗаголовокНачисленийКолонка1 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
						ИначеЕсли СписокНачисленийКолонка2.Количество() =0 Тогда
							СписокНачисленийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
							ЗаголовокНачисленийКолонка2 = ЗаголовокНачисленийКолонка2 + ?(ЗаголовокНачисленийКолонка2 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
						ИначеЕсли СписокНачисленийКолонка3.Количество() =0 Тогда
							СписокНачисленийКолонка3.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
							ЗаголовокНачисленийКолонка3 = ЗаголовокНачисленийКолонка3 + ?(ЗаголовокНачисленийКолонка3 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
						Иначе
							СписокНачисленийКолонка4.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
							ЗаголовокНачисленийКолонка4 = ЗаголовокНачисленийКолонка4 + ?(ЗаголовокНачисленийКолонка4 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
						КонецЕсли;
						
					ИначеЕсли ТипВР = Тип("ПланВидовРасчетаСсылка.УдержанияОрганизаций") Или СтрокаНачисление.ВидРасчета = "Погашение займа" Тогда
						
						СписокУдержанийКолонка1.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						ЗаголовокУдержанийКолонка1 = ЗаголовокУдержанийКолонка1 + ?(ЗаголовокУдержанийКолонка1 = "", СтрокаНачисление.ОписаниеВидаРасчета, ", " + СтрокаНачисление.ОписаниеВидаРасчета);
						
					ИначеЕсли СтрокаНачисление.ВидРасчета = "МежРасчетнаяВыплата" Тогда
						
						СписокУдержанийКолонка2.Вставить(СтрокаНачисление.ВидРасчета, СтрокаНачисление.ВидРасчета);
						ЗаголовокУдержанийКолонка2 = ЗаголовокУдержанийКолонка2 + ?(ЗаголовокУдержанийКолонка2 = "", "Межрасчетная выплата", ", Межрасчетная выплата");
						
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
		КонецЦикла;

	КонецЕсли;
	
	НазваниеКолонок = Новый Структура("Колонка5, Колонка6, Колонка7, Колонка8, Колонка16, Колонка17");
	НазваниеКолонок.Колонка5  = ?(СписокНачисленийКолонка1.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка1));
	НазваниеКолонок.Колонка6  = ?(СписокНачисленийКолонка2.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка2));
	НазваниеКолонок.Колонка7  = ?(СписокНачисленийКолонка3.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка3));
	НазваниеКолонок.Колонка8  = ?(СписокНачисленийКолонка4.Количество()>1, "Прочие", НРег(ЗаголовокНачисленийКолонка4));
	НазваниеКолонок.Колонка16 = ?(СписокУдержанийКолонка1.Количество()>1, "Прочие",  НРег(ЗаголовокУдержанийКолонка1));
	НазваниеКолонок.Колонка17 = ?(СписокУдержанийКолонка2.Количество()>1, "Прочие",  НРег(ЗаголовокУдержанийКолонка2));
	
	// подготовим документ к выводу
	ТабДокумент.АвтоМасштаб         = Истина;
	ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВедомостьВКассу_РПВ";
	ТабДокумент.ОриентацияСтраницы  = ОриентацияСтраницы.Ландшафт;
	Макет = ПолучитьМакет(ИмяМакета);
	
	ОбластьМакетаШапкаДокумента	= Макет.ПолучитьОбласть("Шапка");
	ОбластьМакетаШапкаТаблицы	= Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьМакетаПодвал			= Макет.ПолучитьОбласть("Подвал");
	ОбластьМакетаСтрока			= Макет.ПолучитьОбласть("Строка");
	ОбластьПодвалСтр            = Макет.ПолучитьОбласть("ИтогоПоСтранице");
	
	ОбластьМакетаШапкаТаблицы.Параметры.Заполнить(НазваниеКолонок);
	
	ВыводимыеОбласти = Новый Массив();
	ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
	ВыводимыеОбласти.Добавить(ОбластьПодвалСтр);
	
	ВыводимыеОбластиСПодвалом = Новый Массив();
	ВыводимыеОбластиСПодвалом.Добавить(ОбластьМакетаСтрока);
	ВыводимыеОбластиСПодвалом.Добавить(ОбластьПодвалСтр);
	ВыводимыеОбластиСПодвалом.Добавить(ОбластьМакетаПодвал);
	
	ВыводимыеОбластиДляПроверки = Новый Массив();    
	ВыводимыеОбластиДляПроверки.Добавить(ОбластьМакетаСтрока);
	ВыводимыеОбластиДляПроверки.Добавить(ОбластьМакетаПодвал);
	
	ОбластьМакетаПодвал.Параметры.ИтогоКВыплате	= 0;
	
	ПервыйРаз = истина;
	
	Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
	
	Для каждого СтрокаОтчета из Выборка.Строки Цикл
		
		Если НЕ ПервыйРаз тогда
			ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		Иначе
			ПервыйРаз = ложь;
		КонецЕсли;

		ОбластьМакетаШапкаДокумента.Параметры.Заполнить(СтрокаОтчета);
		
		ПараметрыОрганизации = ОбщегоНазначенияЗК.ПолучитьЗначенияРеквизитов(СтрокаОтчета.Организация, "КодПоОКПО, НаименованиеПолное, ИНН, КПП");
		ПараметрыОрганизации.Вставить("Организация", ПараметрыОрганизации.НаименованиеПолное);
		ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ПараметрыОрганизации);
		
		ОбластьМакетаШапкаДокумента.Параметры.Период = СтрокаОтчета.ПериодРегистрации;
		ОбластьМакетаШапкаДокумента.Параметры.ИнтервалС  = """_____"" _________________ 20____г."; 
		ОбластьМакетаШапкаДокумента.Параметры.ИнтервалПо = """_____"" _________________ 20____г."; 
		ОбластьМакетаПодвал.Параметры.ДатаВыплатыВедомости = """_____"" _________________ 20____г.";
		
		Если ИспользуетсяПолеВедомость тогда
			
			СрокОплаты = "";
			
			Если СтрокаОтчета.ВедомостьДата <> Null тогда
				Запрос = Новый Запрос;
				
				Запрос.УстановитьПараметр("НачалоОплаты", СтрокаОтчета.ВедомостьДата);
				
				Запрос.Текст = 
				"ВЫБРАТЬ
				|	МАКСИМУМ(РабочиеДни.РабочаяДата) КАК СрокОплаты
				|ИЗ
				|	(ВЫБРАТЬ ПЕРВЫЕ 2
				|		РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК РабочаяДата
				|	ИЗ
				|		РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
				|	ГДЕ
				|		РегламентированныйПроизводственныйКалендарь.ДатаКалендаря > &НачалоОплаты
				|		И (РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
				|				ИЛИ РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
				|	
				|	УПОРЯДОЧИТЬ ПО
				|		РабочаяДата) КАК РабочиеДни";
				
				ВыборкаДней = Запрос.Выполнить().Выбрать();
				
				Если ВыборкаДней.Следующий() И ЗначениеЗаполнено(ВыборкаДней.СрокОплаты) Тогда
					СрокОплаты = МАКС(ВыборкаДней.СрокОплаты, СтрокаОтчета.ВедомостьДата + 2 * 24*60*60);
				Иначе	
					СрокОплаты = СтрокаОтчета.ВедомостьДата + 2 * 24*60*60;
				КонецЕсли;	
				
			Иначе
				СрокОплаты = ""
			КонецЕсли;
			
	 		ОбластьМакетаШапкаДокумента.Параметры.НомерДок   = СтрокаОтчета.ВедомостьНомер;
			Если ЗначениеЗаполнено(СтрокаОтчета.ВедомостьПодразделениеОрганизацииНаименование) Тогда
				ОбластьМакетаШапкаДокумента.Параметры.ПодразделениеОрганизации = СтрокаОтчета.ВедомостьПодразделениеОрганизацииНаименование;
			КонецЕсли;
			
			Если ЗначениеЗаполнено(СтрокаОтчета.ВедомостьДата) тогда
				ОбластьМакетаШапкаДокумента.Параметры.ИнтервалС  = Формат(СтрокаОтчета.ВедомостьДата, "ДФ='dd MMMM yyyy'"); 
				ОбластьМакетаШапкаДокумента.Параметры.ИнтервалПо = Формат(СрокОплаты, "ДФ='dd MMMM yyyy'"); 
				Если СтрокаОтчета.ДокументПроведен тогда
					ОбластьМакетаПодвал.Параметры.ДатаВыплатыВедомости = Формат(СтрокаОтчета.ДатаВыплаты, "ДФ='dd MMMM yyyy'")+" г."
				КонецЕсли;
			КонецЕсли;
			
			ОбластьМакетаШапкаДокумента.Параметры.СуммаДок   = ОбщегоНазначенияЗК.СформироватьСуммуПрописью(?(СтрокаОтчета.СуммаПоВедомостиИтого <> NULL, СтрокаОтчета.СуммаПоВедомостиИтого, 0), Валюта);
			
			Если ЗаполнятьКБК Тогда
				ОбластьМакетаШапкаДокумента.Параметры.КБК        = СтрокаОтчета.КБК;
				ОбластьМакетаШапкаДокумента.Параметры.Дт         = СокрЛП(Строка(СтрокаОтчета.КВД)) +"."+ СокрЛП(?(СтрокаОтчета.ДтСчет <> NULL, СтрокаОтчета.ДтСчет.Код, "")) +"."+ СокрЛП(?(СтрокаОтчета.ДтКОСГУ <> NULL, СтрокаОтчета.ДтКОСГУ.Код, ""));
			КонецЕсли;
			
			Если СтрокаОтчета.ВедомостьДокументОснованиеДата = '00010101' тогда
				ОбластьМакетаПодвал.Параметры.ДатаВедомости = """_____"" _________________ 20____г."
			Иначе
				ОбластьМакетаПодвал.Параметры.ДатаВедомости   = Формат(СтрокаОтчета.ВедомостьДокументОснованиеДата, "ДФ='dd MMMM yyyy'")+" г.";
				ОбластьМакетаШапкаДокумента.Параметры.ДатаДок = Формат(СтрокаОтчета.ВедомостьДокументОснованиеДата, "ДФ='dd MMMM yyyy'"); 
			КонецЕсли;
		
			ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(ЗначениеЗаполнено(СтрокаОтчета.СуммаПоВедомостиИтого), СтрокаОтчета.СуммаПоВедомостиИтого, 0) - ?(ЗначениеЗаполнено(СтрокаОтчета.Задепонировано), СтрокаОтчета.Задепонировано, 0) - ?(ЗначениеЗаполнено(СтрокаОтчета.НеВыдано), СтрокаОтчета.НеВыдано, 0);
			ОбластьМакетаПодвал.Параметры.НеВыдано         = ?(ЗначениеЗаполнено(СтрокаОтчета.НеВыдано), СтрокаОтчета.НеВыдано, 0);
			ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ?(ЗначениеЗаполнено(СтрокаОтчета.СуммаПоВедомости), СтрокаОтчета.СуммаПоВедомости, 0) ;
		КонецЕсли;
		
		// Подвал документа.
		ОбластьМакетаПодвал.Параметры.Заполнить(СтрокаОтчета);
		ВедомостьИтого = 0;
		
		ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
		
		ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
		
		НомерПП = 1;
		ВсегоСтрокДокумента = СтрокаОтчета.Строки.Количество();	
		ИтогоПоСтранице = 0;
		
		Для каждого СтрокаФизЛица из СтрокаОтчета.Строки Цикл
			
			ОбластьМакетаСтрока.Параметры.Заполнить(СтрокаФизЛица);
			ОбластьМакетаСтрока.Параметры.НомерПП  = НомерПП;
			Основные        = 0;
			Больничный      = 0;
			ДниБолезни      = 0;
			Пособия 	    = 0;
			Колонка5        = 0;
			Колонка6        = 0;
			Колонка7        = 0;
			Колонка8        = 0;
			ВсегоНачислено  = 0;
			ЗаработнаяПлата = 0;
			Колонка16       = 0;
			Колонка17       = 0;
			НДФЛ            = 0;
			СтраховойВзнос  = 0;
			ВсегоУдержано   = 0;
			
			Для каждого СтрокаНачисление из СтрокаФизЛица.Строки Цикл
				Если ОсновныеНачисления[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Основные = Основные + СтрокаНачисление.Результат;
				ИначеЕсли ПособияПоУходу.НайтиПоЗначению(СтрокаНачисление.ВидПособияСоциальногоСтрахования) <> Неопределено Тогда
					Пособия = Пособия + СтрокаНачисление.Результат;
				ИначеЕсли Больничные.НайтиПоЗначению(СтрокаНачисление.ВидРасчета) <> Неопределено Тогда
					Больничный = Больничный + СтрокаНачисление.Результат;
					ДниБолезни = ДниБолезни + СтрокаНачисление.ДниБолезни;
				ИначеЕсли СписокНачисленийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Колонка5 = Колонка5 + СтрокаНачисление.Результат;
				ИначеЕсли СписокНачисленийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Колонка6 = Колонка6 + СтрокаНачисление.Результат;
				ИначеЕсли СписокНачисленийКолонка3[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Колонка7 = Колонка7 + СтрокаНачисление.Результат;
				ИначеЕсли СписокНачисленийКолонка4[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Колонка8 = Колонка8 + СтрокаНачисление.Результат;
				ИначеЕсли СписокУдержанийКолонка1[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Колонка16 = Колонка16 + СтрокаНачисление.Результат;
				ИначеЕсли СписокУдержанийКолонка2[СтрокаНачисление.ВидРасчета] <> Неопределено тогда
					Колонка17 = Колонка17 + СтрокаНачисление.Результат;
				ИначеЕсли СтрокаНачисление.ВидРасчета = "НДФЛ" тогда
					НДФЛ = НДФЛ + СтрокаНачисление.Результат;
				ИначеЕсли СтрокаНачисление.ВидРасчета = "СтраховойВзнос" тогда
					СтраховойВзнос = СтраховойВзнос + СтрокаНачисление.Результат;
				ИначеЕсли СтрокаНачисление.ВидРасчета = "ЗаработнаяПлата" тогда
					ЗаработнаяПлата = ЗаработнаяПлата + СтрокаНачисление.Результат;
				КонецЕсли;
				ВсегоНачислено = Основные + Колонка5 + Колонка6 + Колонка7 + Колонка8 + Больничный + Пособия;
				ВсегоУдержано  = ЗаработнаяПлата + Колонка16 + Колонка17 + НДФЛ + СтраховойВзнос;
			КонецЦикла;
			
			ОбластьМакетаСтрока.Параметры.Основные       = Основные;
			ОбластьМакетаСтрока.Параметры.Больничный     = Больничный;
			Если ЗаполнятьКБК Тогда
				ОбластьМакетаСтрока.Параметры.ДниБолезни = ДниБолезни;
			КонецЕсли;
			ОбластьМакетаСтрока.Параметры.Пособия 		 = Пособия;
			ОбластьМакетаСтрока.Параметры.Колонка5       = Колонка5;
			ОбластьМакетаСтрока.Параметры.Колонка6       = Колонка6;
			ОбластьМакетаСтрока.Параметры.Колонка7       = Колонка7;
			ОбластьМакетаСтрока.Параметры.Колонка8       = Колонка8;
			ОбластьМакетаСтрока.Параметры.ВсегоНачислено = ВсегоНачислено;
			ОбластьМакетаСтрока.Параметры.Аванс          = ЗаработнаяПлата;
			ОбластьМакетаСтрока.Параметры.НДФЛ           = НДФЛ;
			ОбластьМакетаСтрока.Параметры.СтраховойВзнос = СтраховойВзнос;
			ОбластьМакетаСтрока.Параметры.Колонка16      = Колонка16;
			ОбластьМакетаСтрока.Параметры.Колонка17         = Колонка17;
			ОбластьМакетаСтрока.Параметры.ВсегоУдержано     = ВсегоУдержано;
			
			ОбластьМакетаСтрока.Параметры.СуммаПоВедомости  = ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
			Если НЕ ИспользуетсяПолеВедомость тогда
				ОбластьМакетаСтрока.Параметры.ЗаписьОДепонировании = "";
			КонецЕсли;

			ВедомостьИтого = ВедомостьИтого + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);
			
			ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
			Если Не ВывестиПодвалЛиста и НомерПП = ВсегоСтрокДокумента Тогда
				//все строки отчета перебрали, они все еще умещаются на странице
				ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиСПодвалом);
			КонецЕсли;
			
			Если ВывестиПодвалЛиста тогда
				ОбластьПодвалСтр.Параметры.ИтогоКВыплате = ИтогоПоСтранице;
				ТабДокумент.Вывести(ОбластьПодвалСтр);
				ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
				ТабДокумент.Вывести(ОбластьМакетаШапкаТаблицы);
				ИтогоПоСтранице = 0;
			КонецЕсли;
			
			ИтогоПоСтранице = ИтогоПоСтранице + ?(ЗначениеЗаполнено(СтрокаФизЛица.СуммаПоВедомости), СтрокаФизЛица.СуммаПоВедомости, 0);

			ТабДокумент.Вывести(ОбластьМакетаСтрока);
			НомерПП = НомерПП + 1;
			
		КонецЦикла;
		
		Если ИспользуетсяПолеВедомость тогда
			ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ОбластьМакетаПодвал.Параметры.ИтогоКВыплате;
			ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = ?(СтрокаОтчета.Ведомость <> Null И СтрокаОтчета.Ведомость.Проведен, ОбластьМакетаПодвал.Параметры.СуммаПоВедомости, 0);
		Иначе
			ОбластьМакетаПодвал.Параметры.ИтогоКВыплате    = ВедомостьИтого;
			ОбластьМакетаПодвал.Параметры.СуммаПоВедомости = 0;
			ОбластьМакетаПодвал.Параметры.НеВыдано         = 0;
			ОбластьМакетаПодвал.Параметры.Задепонировано   = 0;
		КонецЕсли;
		
		Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
			ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,"");
		КонецЦикла;
		ОбластьМакетаСтрока.Параметры.Физлицо = " " + Символы.ПС + " ";
		Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбластиДляПроверки, Ложь) Цикл
			ТабДокумент.Вывести(ОбластьМакетаСтрока);
		КонецЦикла;
		
		ТабДокумент.Вывести(ОбластьМакетаПодвал);
		
	КонецЦикла; 
	
КонецФункции // ПечатьРПВ()
Показать
Прикрепленные файлы:
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Cooler 22 15.02.17 20:49 Сейчас в теме
Вот даже любопытно: найдутся ли желающие разгрести эту необъятную кодосвалку? Да еще и не оформленную тегами кода?
3. pavl_vs 17.02.17 09:41 Сейчас в теме
(2), "кодосвалка", как Вы это назвали, разгребается легко и просто,
см. дубль темы в этом же разделе: http://forum.infostart.ru/forum9/topic167017/.
Оставьте свое сообщение

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