Документооборот с контролирующими органами / Акт сверки с ФНС / Модуль формы

файл
&НаКлиенте
Перем КонтекстЭДОКлиент;

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	АдресФайла = Параметры.АдресФайла;
	ЗапросИОН  = Параметры.ЗапросИОН;
	Если Не ЗначениеЗаполнено(АдресФайла) Тогда
		Возврат;
	КонецЕсли;
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	ДанныеСверки      = РазборАктаСверкиВФорматеXML(АдресФайла);
	АдресДанныхСверки = ПоместитьВоВременноеХранилище(ДанныеСверки, УникальныйИдентификатор);
	Если ДанныеСверки.Количество() > 0 Тогда
		
		ПерваяИтерация = Истина;
		Для Каждого СтрокаСверки Из ДанныеСверки Цикл
			
			ИндексСверки = ДанныеСверки.Индекс(СтрокаСверки);
			Если Не ПерваяИтерация Тогда
				АктСверки.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			ПерваяИтерация = Ложь;
			АктСверки.Вывести(
				ПолучитьТабличноеПредставление(ЗапросИОН, СтрокаСверки, ИндексСверки));
		
		КонецЦикла;
		
	Иначе
		
		МакетСверки = КонтекстЭДОСервер.ПолучитьМакет("АктСверкиСФНС");
		ОбластьНетДанных = МакетСверки.ПолучитьОбласть("ДанныеОтсутствуют");
		АктСверки.Вывести(ОбластьНетДанных);
		
	КонецЕсли;
	АктСверки.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// Инициализируем контекст формы - контейнера клиентских методов
	ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
	ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовФормы

&НаКлиенте
Процедура АктСверкиТаблицаОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ФормаРасшифровкиАктаСверкиСФНС",
		Новый Структура("АдресДанныхСверки, НомерСтрокиСверки", АдресДанныхСверки, Расшифровка),
		ЭтотОбъект);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДОКлиент = Результат.КонтекстЭДО;
	Если КонтекстЭДОКлиент = Неопределено Тогда
		Закрыть();
	КонецЕсли;
	
КонецПроцедуры

// Функция - разбирает акт сверки с ФНС в формате XML, по данным файла создает структуру данных.
//
// Параметры:
//  АдресХранилища	 - 	Строка - адрес хранилища XML файла.
// 
// Возвращаемое значение:
//  Структура - данные акта сверки с ФНС.
//
&НаСервере
Функция РазборАктаСверкиВФорматеXML(АдресХранилища) Экспорт
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресХранилища);
	ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ИмяВременногоФайла);
	ЧтениеXML.ПерейтиКСодержимому();
	
	Фабрика = ФабрикаXDTO;
	ОтветФНСXDTO = Фабрика.ПрочитатьXML(ЧтениеXML);
	ЧтениеXML.Закрыть();
	
	УдалитьФайлы(ИмяВременногоФайла);
	
	ДокументXDTO = ОтветФНСXDTO.Документ;
	
	АктыСверок = НовыеАктыСверок();
	
	// В схеме АктСвер обязательный элемент, но иногда может отсутствовать
	СвойствоXDTOАктСвер = ДокументXDTO.Свойства().Получить("АктСвер"); 
	Если СвойствоXDTOАктСвер = Неопределено Тогда
		Возврат АктыСверок;
	КонецЕсли;
	
	Если ТипЗнч(ДокументXDTO.АктСвер) = Тип("СписокXDTO") Тогда
		
		Для Каждого АктСверXDTO Из ДокументXDTO.АктСвер Цикл
			
			ЗаполнитьАктСверки(АктСверXDTO, АктыСверок);
			
		КонецЦикла;
		
	Иначе
		
		ЗаполнитьАктСверки(ДокументXDTO.АктСвер, АктыСверок);
		
	КонецЕсли;
	
	Возврат АктыСверок;
	
КонецФункции

// Функция - получает табличное представление акта сверки
//
// Параметры:
//  ДанныеАктаСверки - 	ТаблицаЗначений - разобранные данные акта сверки.
//  ИндексСверки - 		Число - индекс cтроки cверки.
//
// Возвращаемое значение:
//  Табличный документ - табличный документ с данными акта сверки с ФНС.
//
&НаСервере
Функция ПолучитьТабличноеПредставление(ЗапросИОН, ДанныеАктаСверки, ИндексСверки) Экспорт
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	
	ТабДок = Новый ТабличныйДокумент;
	МакетАкта = КонтекстЭДОСервер.ПолучитьМакет("АктСверкиСФНС");
	
	// ШАПКА -------------------------------------------------
	
	ДанныеАктаСверки.НаименованиеИФНС = НаименованиеИФНСПоКоду(ДанныеАктаСверки.КодИФНС);
	
	Шапка = МакетАкта.ПолучитьОбласть("Шапка");
	Шапка.Параметры.НомерАкта                = ДанныеАктаСверки.НомерАкта;
	Шапка.Параметры.ДатаАкта                 = Формат(ДанныеАктаСверки.ДатаАкта, "ДЛФ=D");
	Шапка.Параметры.НаименованиеИФНС         = ДанныеАктаСверки.НаименованиеИФНС;
	Шапка.Параметры.НаименованиеОрганизации  = ДанныеАктаСверки.НаименованиеОрганизации;
	Шапка.Параметры.ИННОрганизации           = ДанныеАктаСверки.ИНН;
	Если ДанныеАктаСверки.ЭтоЮрЛицо Тогда
		Шапка.Параметры.ЗаголовокИНН         = НСтр("ru = 'ИНН / КПП:'");
		Шапка.Параметры.КППОрганизации       = " / " + ДанныеАктаСверки.КПП
	Иначе
		Шапка.Параметры.ЗаголовокИНН         = НСтр("ru = 'ИНН:'");
	КонецЕсли;
	
	ТабДок.Вывести(Шапка);
	
	// ШАПКА ТАБЛИЦЫ -----------------------------------------
	
	ШапкаТаблицы = МакетАкта.ПолучитьОбласть("ШапкаТаблицы");
	ШапкаТаблицы.Параметры.ДатаНачала = Формат(ДанныеАктаСверки.ДатаНачала, "ДЛФ=D");
	ШапкаТаблицы.Параметры.ДатаОкончания = Формат(ДанныеАктаСверки.ДатаОкончания, "ДЛФ=D");
	
	ТабДок.Вывести(ШапкаТаблицы);
	
	// ВЫВОД ДАННЫХ ПО НАЛОГАМ В ТАБЛИЧНЫЙ ДОКУМЕНТ ----------
	
	СодержаниеСверки = ДанныеАктаСверки.Раздел2;
	РасчетДополнительныхПолей(СодержаниеСверки); // контроль наличия данных, расчет доп. полей
	
	ТабДок.НачатьАвтогруппировкуСтрок();
	КолВидовНалогов = 0;
	МакетСтрокиПоВидамНалогов = МакетАкта.ПолучитьОбласть("ВидНалога");
	Для Каждого СтрокаВидаНалога Из СодержаниеСверки Цикл
		
		Если СтрокаВидаНалога.ВидНалогаКонтроль = 0 Тогда // если по виду налога все по нулям, не выводим его
			Продолжить;
		КонецЕсли;
		
		// Если имеется несколько строк налогов с одинаковым КБК, выводим ОКТМО
		МассивВидовНалогов = СодержаниеСверки.НайтиСтроки(Новый Структура("КБК", СтрокаВидаНалога.КБК));
		КолКБК = 0;
		Для Каждого ЭлементМассива Из МассивВидовНалогов Цикл
			
			Если ЭлементМассива.ВидНалогаКонтроль > 0 Тогда
				КолКБК = КолКБК + 1;
			КонецЕсли;
			
		КонецЦикла;
		Если КолКБК > 1 Тогда
			СтрокаВидаНалога.НаименованиеНалога = СтрокаВидаНалога.НаименованиеНалога
				+ " " + НСтр("ru = 'по ОКТМО'") + " " + СтрокаВидаНалога.ОКТМО;
		КонецЕсли;
		
		КолВидовНалогов = КолВидовНалогов + 1;
		НомерСтрокиСверки = СодержаниеСверки.Индекс(СтрокаВидаНалога);
		МакетСтрокиПоВидамНалогов.Параметры.Заполнить(СтрокаВидаНалога);
		МакетСтрокиПоВидамНалогов.Параметры.СтрокаДанных = Формат(ИндексСверки, "ЧН=0; ЧГ=0")
			+ ";" + Формат(НомерСтрокиСверки, "ЧН=0; ЧГ=0"); // данные для расшифровки
		
		ТабДок.Вывести(МакетСтрокиПоВидамНалогов, 1,, Истина);
		
		МассивПодвидовНалога = Новый Массив;
		Если СтрокаВидаНалога.НалогКонтроль > 0 Тогда
			МассивПодвидовНалога.Добавить("Налог");
		КонецЕсли;
		Если СтрокаВидаНалога.ПеняКонтроль > 0 Тогда
			МассивПодвидовНалога.Добавить("Пеня");
		КонецЕсли;
		Если СтрокаВидаНалога.ШтрафКонтроль > 0 Тогда
			МассивПодвидовНалога.Добавить("Штраф");
		КонецЕсли;
		Если СтрокаВидаНалога.ПрочееКонтроль > 0 Тогда
			МассивПодвидовНалога.Добавить("Прочее");
		КонецЕсли;
		
		Если Не (МассивПодвидовНалога.Количество() = 1 И МассивПодвидовНалога[0] = "Налог") Тогда
			
			Для Каждого ПодвидНалога Из МассивПодвидовНалога Цикл
				
				МакетСтрокиДетализацияРасчетов = МакетАкта.ПолучитьОбласть(ПодвидНалога);
				МакетСтрокиДетализацияРасчетов.Параметры.Заполнить(СтрокаВидаНалога);
				МакетСтрокиДетализацияРасчетов.Параметры.СтрокаДанных = Формат(ИндексСверки, "ЧН=0; ЧГ=0")
					+ ";" + Формат(НомерСтрокиСверки, "ЧН=0; ЧГ=0");
				
				ТабДок.Вывести(МакетСтрокиДетализацияРасчетов, 2,, Истина);
				
			КонецЦикла;
			
		КонецЕсли;
		
	КонецЦикла;
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	
	Если КолВидовНалогов > 1 Тогда // если только 1 вид налога, итоги не выводим
		
		// вывод итогов
		МакетИтого = МакетАкта.ПолучитьОбласть("Итого");
		ТаблицаИтого = СодержаниеСверки.Скопировать();
		ТаблицаИтого.Колонки.Добавить("Свертка", Новый ОписаниеТипов("Булево"));
		ТаблицаИтого.Свернуть("Свертка",
			"ЗадолженностьНаНачало, ПереплатаНаНачало, НачисленоЗаПериод, УплаченоЗаПериод, ЗадолженностьНаКонец, ПереплатаНаКонец");
			
		МакетИтого.Параметры.Заполнить(ТаблицаИтого[0]);
			
		ТабДок.Вывести(МакетИтого);
		
	КонецЕсли;
	
	// незачисленные средства, вывод
	Если СодержаниеСверки.Итог("НеЗачисленныеСредстваКонтроль") > 0 Тогда

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

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

КонецПроцедуры

&НаСервере
Процедура ПолучитьНаименованиеНалога(СтрокаСверки, НалогиПоКБК, КолонкаКБК, НайденнаяСтрока = Неопределено)
	
	КБК = СокрЛП(СтрокаСверки.КБК);
	
	// Ищем по первым 13 значениям КБК, остальные цифры это подвиды доходов бюджета (штрафы, пени и т.д).
	Если НайденнаяСтрока = Неопределено Тогда
		НайденнаяСтрока = НалогиПоКБК.НайтиТекст(Лев(КБК, 13),, КолонкаКБК,,,,); 
	Иначе
		НайденнаяСтрока = НалогиПоКБК.НайтиТекст(Лев(КБК, 13), НайденнаяСтрока, КолонкаКБК,,,,); 
	КонецЕсли;
	
	Если НайденнаяСтрока <> Неопределено Тогда
		Если ЭтоСтраховыеВзносы(КБК) Тогда
			ПодвидДоходов = Сред(КБК, 16, 2);
			НайденноеКБК = СокрЛП(НалогиПоКБК.Область(НайденнаяСтрока.Верх, НалогиПоКБК.Область("КБК").Лево).Текст);
			ПодвидДоходовНайденногоКБК = Сред(НайденноеКБК, 16, 2);
			Если ПодвидДоходов <> ПодвидДоходовНайденногоКБК Тогда
				// Если подвид дохода не совпал, то рекурсивно начинаем поиск на следующей строке.
				ПолучитьНаименованиеНалога(СтрокаСверки, НалогиПоКБК, КолонкаКБК, НайденнаяСтрока);
				Возврат;
			КонецЕсли;
		КонецЕсли;
		НаименованиеКраткое = СокрЛП(НалогиПоКБК.Область(НайденнаяСтрока.Верх, НалогиПоКБК.Область("КраткоеНаименованиеНалога").Лево).Текст);
		НаименованиеПолное  = СокрЛП(НалогиПоКБК.Область(НайденнаяСтрока.Верх, НалогиПоКБК.Область("Наименование_КБК").Лево).Текст);
		СтрокаСверки.НаименованиеНалога = ?(ЗначениеЗаполнено(НаименованиеКраткое), НаименованиеКраткое, НаименованиеПолное);
		СтрокаСверки.НаименованиеПолное = НаименованиеПолное;
	Иначе
		СтрокаСверки.НаименованиеНалога = "КБК: " + КБК; // если не найден КБК в макете, выводим КБК
	КонецЕсли;

КонецПроцедуры

&НаСервере
Функция ЭтоСтраховыеВзносы(КБК)
	
	Возврат Прав(КБК, 3) = "160"; // код 160 – страховые взносы на обязательное социальное страхование 
	
КонецФункции

////////////////////////////////////////////////////////////////////////
// РАЗБОР ФАЙЛА IU_AKTSVP_*
// ОТВЕТ НА ЗАПРОС "АКТ СВЕРКИ РАСЧЕТОВ ПО НАЛОГАМ, СБОРАМ, ПЕНЯМ, ШТРАФАМ, ПРОЦЕНТАМ" ПРИ ИНФОРМАЦИОННОМ ОБСЛУЖИВАНИИ И ИНФОРМИРОВАНИИ
// НАЛОГОПЛАТЕЛЬЩИКОВ В ЭЛЕКТРОННОЙ ФОРМЕ ПО ТЕЛЕКОММУНИКАЦИОННЫМ КАНАЛАМ СВЯЗИ
&НаСервере
Функция XDTOПолучитьАтрибут(ОбъектXDTO, ИмяАтрибута, ЗначениеПоУмолчанию="")
	ЗначениеАтрибута = ОбъектXDTO.Свойства().Получить(ИмяАтрибута); 
	Если ЗначениеАтрибута = Неопределено Тогда
		Возврат ЗначениеПоУмолчанию;
	КонецЕсли;
	Возврат ОбъектXDTO.Получить(ИмяАтрибута);
КонецФункции

&НаСервере
Процедура ЗаполнитьАктСверки(АктСверXDTO, АктыСверок)
	
	НоваяСтрока = АктыСверок.Добавить();
	
	Если АктСверXDTO.СвНП.Свойства().Получить("НПЮЛ") <> Неопределено Тогда
		СведенияОЮридическомЛице = АктСверXDTO.СвНП.НПЮЛ;
		НоваяСтрока.ИНН = СведенияОЮридическомЛице.ИННЮЛ;
		НоваяСтрока.КПП = СведенияОЮридическомЛице.КПП;
		НоваяСтрока.НаименованиеОрганизации = СведенияОЮридическомЛице.НаимОрг;
		НоваяСтрока.ЭтоЮрЛицо = Истина;
	Иначе
		СведенияОФизическомЛице = АктСверXDTO.СвНП.НПФЛ;
		НоваяСтрока.ИНН = XDTOПолучитьАтрибут(СведенияОФизическомЛице, "ИННФЛ");
		ФИОПредпринимателя = СведенияОФизическомЛице.ФИО;
		НоваяСтрока.НаименованиеОрганизации = "ИП " + СокрЛП(ФИОПредпринимателя.Фамилия)
			+ " " + Лев(СокрЛП(ФИОПредпринимателя.Имя), 1) + ".";
		Если ФИОПредпринимателя.Свойства().Получить("Отчество") <> Неопределено Тогда
			
			НоваяСтрока.НаименованиеОрганизации = НоваяСтрока.НаименованиеОрганизации + " "
				+ Лев(СокрЛП(ФИОПредпринимателя.Отчество), 1) + ".";
			
		КонецЕсли;
		НоваяСтрока.ЭтоЮрЛицо = Ложь;
	КонецЕсли;
	
	НоваяСтрока.НомерАкта     = АктСверXDTO.НомАкт;
	НоваяСтрока.ДатаАкта      = ДатаФНС(АктСверXDTO.ДатаСост);
	НоваяСтрока.ДатаНачала    = ДатаФНС(АктСверXDTO.ДатаНачПер);
	НоваяСтрока.ДатаОкончания = ДатаФНС(АктСверXDTO.ДатаКонПер);
	НоваяСтрока.КодИФНС       = АктСверXDTO.КодНО;
	НоваяСтрока.Раздел1       = НовоеСодержаниеРаздела1Акта();
	НоваяСтрока.Раздел2       = НовоеСодержаниеРаздела2Акта();
	
	Если АктСверXDTO.СодАкт.Свойства().Получить("Раздел1") <> Неопределено Тогда
		
		Если ТипЗнч(АктСверXDTO.СодАкт.Раздел1) = Тип("СписокXDTO") Тогда
			
			Для Каждого Раздел1XDTO Из АктСверXDTO.СодАкт.Раздел1 Цикл
				
				ЗаполнитьСодержаниеРаздела1АктаСверки(Раздел1XDTO, НоваяСтрока.Раздел1);
				
			КонецЦикла;
			
		Иначе
			
			ЗаполнитьСодержаниеРаздела1АктаСверки(АктСверXDTO.СодАкт.Раздел1, НоваяСтрока.Раздел1);
			
		КонецЕсли;
		
	КонецЕсли;
	
	Если АктСверXDTO.СодАкт.Свойства().Получить("Раздел2") <> Неопределено Тогда
		
		Если ТипЗнч(АктСверXDTO.СодАкт.Раздел2) = Тип("СписокXDTO") Тогда
			
			Для Каждого Раздел2XDTO Из АктСверXDTO.СодАкт.Раздел2 Цикл
				
				ЗаполнитьСодержаниеРаздела2АктаСверки(Раздел2XDTO, НоваяСтрока.Раздел2);
				
			КонецЦикла;
			
		Иначе
			
			ЗаполнитьСодержаниеРаздела2АктаСверки(АктСверXDTO.СодАкт.Раздел2, НоваяСтрока.Раздел2);
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСодержаниеРаздела1АктаСверки(СодАктXDTO, СодержаниеАктаСверки)
	
	Содержание = СодержаниеАктаСверки.Добавить();
	Содержание.КБК = СодАктXDTO.КБК;
	Содержание.НаименованиеНалога = СодАктXDTO.ВидНал;
	Содержание.КПП                = СодАктXDTO.КПП;
	// В содержании акта может быть указано либо ОКТМО, либо ОКАТО.
	// Заполним одно из этих полей.
	Если СодАктXDTO.Свойства().Получить("ОКТМО") <> Неопределено Тогда
		Содержание.ОКТМО = СодАктXDTO.ОКТМО;
	Иначе
		Содержание.ОКАТО = СодАктXDTO.ОКАТО;
	КонецЕсли;
	
	СальдоРасчетовXDTO = СодАктXDTO.СальдоРасч;
	Содержание.НеЗачисленныеСредства  = ЗначениеЧисловогоПоля(СальдоРасчетовXDTO, "ДенСрСп");
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСодержаниеРаздела2АктаСверки(СодАктXDTO, СодержаниеАктаСверки)
	
	Содержание = СодержаниеАктаСверки.Добавить();
	Содержание.КБК = СодАктXDTO.КБК;
	Содержание.НаименованиеНалога = СодАктXDTO.ВидНал;
	Содержание.КПП                = СодАктXDTO.КПП;
	// В содержании акта может быть указано либо ОКТМО, либо ОКАТО.
	// Заполним одно из этих полей.
	Если СодАктXDTO.Свойства().Получить("ОКТМО") <> Неопределено Тогда
		Содержание.ОКТМО = СодАктXDTO.ОКТМО;
	Иначе
		Содержание.ОКАТО = СодАктXDTO.ОКАТО;
	КонецЕсли;
	
	// Сальдо на начало сверяемого периода
	СальдоНачXDTO = СодАктXDTO.СальдоНач;
	
	Содержание.НачальныйОстатокНалог                    = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Налог.НалВсего);
	Содержание.НачальныйОстатокНалогОтрицательноеСальдо = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Налог.СальдоОтр);
	Содержание.НачальныйОстатокНалогОтсроченный         = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Налог.ОтсрПлат);
	Содержание.НачальныйОстатокНалогПриостановленный    = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Налог.ПриостПлат);
	Содержание.НачальныйОстатокНалогРеструктурированный = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Налог.РеструкДолг);
	
	Содержание.НачальныйОстатокПени                     = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Пени.ПениВсего);
	Содержание.НачальныйОстатокПениОтрицательноеСальдо  = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Пени.СальдоОтр);
	Содержание.НачальныйОстатокПениОтсроченный          = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Пени.ОтсрПлат);
	Содержание.НачальныйОстатокПениПриостановленный     = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Пени.ПриостПлат);
	Содержание.НачальныйОстатокПениРеструктурированный  = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Пени.РеструкДолг);
	
	Содержание.НачальныйОстатокШтраф                    = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Штраф.ШтрафВсего);
	Содержание.НачальныйОстатокШтрафОтрицательноеСальдо = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Штраф.СальдоОтр);
	Содержание.НачальныйОстатокШтрафОтсроченный         = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Штраф.ОтсрПлат);
	Содержание.НачальныйОстатокШтрафПриостановленный    = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Штраф.ПриостПлат);
	Содержание.НачальныйОстатокШтрафРеструктурированный = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.Штраф.РеструкДолг);
	
	Содержание.НачальныйОстатокНеуплаченныеПроцентыВсего = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.НеупСум.НеупСумВс);
	Содержание.НачальныйОстатокНеуплаченныеПроценты      = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.НеупСум.НеупСумПр);
	Содержание.НачальныйОстатокНеуплаченныеПроцентыПриостановленный = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.НеупСум.ПриосПл);
	
	Содержание.НачальныйОстатокПроценты                  = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.ПроцНачБанкр);
	
	Содержание.НачальныйОстатокПоложительноеСальдо         = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.СальдоПол.СальдоПолВс);
	Содержание.НачальныйОстатокНалогПоложительноеСальдо    = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.СальдоПол.Налог);
	Содержание.НачальныйОстатокПениПоложительноеСальдо     = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.СальдоПол.Пени);
	Содержание.НачальныйОстатокШтрафПоложительноеСальдо    = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.СальдоПол.Штраф);
	Содержание.НачальныйОстатокПроцентыПоложительноеСальдо = СуммаПоДаннымНалоговогоОргана(СальдоНачXDTO.СальдоПол.Проц);
	
	// Данные за сверяемый период
	
	СверкаЗаПериодXDTO = СодАктXDTO.СверПериод;
	
	Содержание.ПринятоеСальдоНалог                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СальдоПринят.Налог);
	Содержание.ПринятоеСальдоПени                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СальдоПринят.Пени);
	Содержание.ПринятоеСальдоШтраф                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СальдоПринят.Штраф);
	Содержание.ПринятоеСальдоНеуплаченныеПроценты = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СальдоПринят.Остат);
	Содержание.ПринятоеСальдоПроценты             = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СальдоПринят.Процент);
	
	Содержание.НачисленоНалог                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Начислено.Налог);
	Содержание.НачисленоПени                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Начислено.Пени);
	Содержание.НачисленоШтраф                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Начислено.Штраф);
	Содержание.НачисленоНеуплаченныеПроценты = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Начислено.Остат);
	Содержание.НачисленоПроценты             = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Начислено.Процент);
	
	Содержание.УменьшеноНалог                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уменьшено.Налог);
	Содержание.УменьшеноПени                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уменьшено.Пени);
	Содержание.УменьшеноШтраф                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уменьшено.Штраф);
	
	Содержание.УплаченоНалогВсего               = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.НалогВсего);
	Содержание.УплаченоНалог                    = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.НалУпл);
	Содержание.УплаченоНалогЗачтеноИзлишнего    = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ЗачИзлУплНал);
	Содержание.УплаченоНалогОтсроченный         = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.НалОтсрПлат);
	Содержание.УплаченоНалогПриостановленный    = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.НалПриостПлат);
	Содержание.УплаченоНалогРеструктурированный = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.НалРеструкДолг);
	
	Содержание.УплаченоПениВсего                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПенВсего);
	Содержание.УплаченоПени                     = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПенУпл);
	Содержание.УплаченоПениОтсроченный          = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПенОтсрПлат);
	Содержание.УплаченоПениПриостановленный     = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПенПриостПлат);
	Содержание.УплаченоПениРеструктурированный  = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПенРеструкДолг);
	
	Содержание.УплаченоШтрафВсего               = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ШтрВсего);
	Содержание.УплаченоШтраф                    = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ШтрУпл);
	Содержание.УплаченоШтрафОтсроченный         = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ШтрОтсрПлат);
	Содержание.УплаченоШтрафПриостановленный    = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ШтрПриостПлат);
	Содержание.УплаченоШтрафРеструктурированный = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ШтрРеструкДолг);
	
	Содержание.УплаченоПроцентыВсего                        = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПрВсего);
	Содержание.УплаченоНеуплаченныеПроценты                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПрОстСумм);
	Содержание.УплаченоНеуплаченныеПроцентыПриостановленный = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПрПриПлат);
	Содержание.УплаченоПроценты                             = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Уплачено.ПрБанкрот);
	
	Содержание.ПереданоНалог                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.ПрдСальдоРЮЛ.Налог);
	Содержание.ПереданоПени                  = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.ПрдСальдоРЮЛ.Пени);
	Содержание.ПереданоШтраф                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.ПрдСальдоРЮЛ.Штрафы);
	Содержание.ПереданоНеуплаченныеПроценты  = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.ПрдСальдоРЮЛ.НеупСум);
	Содержание.ПереданоПроценты              = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.ПрдСальдоРЮЛ.ПрБанкрот);
	
	Содержание.СписаноПени                    = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СпЗадолжПен);
	Содержание.СписаноШтраф                   = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СпЗадолжШтр);
	
	Содержание.СписаноПравительствомНалог     = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СписЗПр.Налог);
	Содержание.СписаноПравительствомПени      = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СписЗПр.Пени);
	Содержание.СписаноПравительствомШтраф     = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СписЗПр.Штрафы);
	Содержание.СписаноПравительствомНеуплаченныеПроценты = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.СписЗПр.НеупСум);
	
	Содержание.ВозвращеноНалог                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.Налог);
	Содержание.ВозвращеноНалогИзлишний        = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.НалИзлУп);
	Содержание.ВозвращеноПени                 = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.Пени);
	Содержание.ВозвращеноПениИзлишний         = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.ПенИзлУп);
	Содержание.ВозвращеноШтраф                = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.Штраф);
	Содержание.ВозвращеноШтрафИзлишний        = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.ШтрафИзлУп);
	Содержание.ВозвращеноПроценты             = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.НеупСум);
	Содержание.ВозвращеноНеуплаченныеПроценты = СуммаПоДаннымНалоговогоОргана(СверкаЗаПериодXDTO.Возвращено.Проц);
	
	// Сальдо на конец сверяемого периода
	СальдоКонXDTO = СодАктXDTO.СальдоКон;
	
	Содержание.КонечныйОстатокЗадолженность             = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.ЗадолжВсего);
	
	Содержание.КонечныйОстатокНалог                     = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Налог.Всего);
	Содержание.КонечныйОстатокНалогОтрицательноеСальдо  = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Налог.СальдоОтр);
	Содержание.КонечныйОстатокНалогОтсроченный          = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Налог.ОтсрПлат);
	Содержание.КонечныйОстатокНалогПриостановленный     = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Налог.ПрПлат);
	Содержание.КонечныйОстатокНалогРеструктурированный  = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Налог.РестрДолг);
	
	Содержание.КонечныйОстатокПени                      = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Пени.Всего);
	Содержание.КонечныйОстатокПениОтрицательноеСальдо   = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Пени.СальдоОтр);
	Содержание.КонечныйОстатокПениОтсроченный           = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Пени.ОтсрПлат);
	Содержание.КонечныйОстатокПениПриостановленный      = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Пени.ПриостПлат);
	Содержание.КонечныйОстатокПениРеструктурированный   = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Пени.РеструкДолг);
	
	Содержание.КонечныйОстатокШтраф                     = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Штрафы.ШтрВсего);
	Содержание.КонечныйОстатокШтрафОтрицательноеСальдо  = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Штрафы.СальдоОтр);
	Содержание.КонечныйОстатокШтрафОтсроченный          = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Штрафы.ШтрОтсрПлат);
	Содержание.КонечныйОстатокШтрафПриостановленный     = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Штрафы.ШтрПриостПлат);
	Содержание.КонечныйОстатокШтрафРеструктурированный  = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.Штрафы.ШтрРестрДолг);
	
	Содержание.КонечныйОстатокНеуплаченныеПроцентыВсего = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.ОстНеупСум.НеупПрВс);
	Содержание.КонечныйОстатокНеуплаченныеПроценты      = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.ОстНеупСум.ОстНеПр);
	Содержание.КонечныйОстатокНеуплаченныеПроцентыПриостановленный = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.ОстНеупСум.ПриосВзПлат);
	
	Содержание.КонечныйОстатокПроценты                  = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.ПроцНачБанкр);
	
	Содержание.КонечныйОстатокПоложительноеСальдо         = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.СальдоПол.СальдоПолВс);
	Содержание.КонечныйОстатокНалогПоложительноеСальдо    = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.СальдоПол.Налог);
	Содержание.КонечныйОстатокПениПоложительноеСальдо     = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.СальдоПол.Пени);
	Содержание.КонечныйОстатокШтрафПоложительноеСальдо    = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.СальдоПол.Штраф);
	Содержание.КонечныйОстатокПроцентыПоложительноеСальдо = СуммаПоДаннымНалоговогоОргана(СальдоКонXDTO.СальдоПол.Проц);
	
	// Денежные средства, списанные с расчетных счетов налогоплательщика, но не зачисленные на счета по учету доходов бюджетов на конец сверяемого периода
	НеЗачисленныеСредстваXDTO = СодАктXDTO.ДенСрСп;
	
	Содержание.НеЗачисленныеСредстваНалог                = СуммаПоДаннымНалоговогоОргана(НеЗачисленныеСредстваXDTO.Налог);
	Содержание.НеЗачисленныеСредстваПени                 = СуммаПоДаннымНалоговогоОргана(НеЗачисленныеСредстваXDTO.Пени);
	Содержание.НеЗачисленныеСредстваШтраф                = СуммаПоДаннымНалоговогоОргана(НеЗачисленныеСредстваXDTO.Штрафы);
	Содержание.НеЗачисленныеСредстваНеуплаченныеПроценты = СуммаПоДаннымНалоговогоОргана(НеЗачисленныеСредстваXDTO.Остаток);
	Содержание.НеЗачисленныеСредстваПроценты             = СуммаПоДаннымНалоговогоОргана(НеЗачисленныеСредстваXDTO.Процент);
	
КонецПроцедуры

&НаСервере
Функция НовыеАктыСверок()
	
	АктыСверок = Новый ТаблицаЗначений();
	
	АктыСверок.Колонки.Добавить("НаименованиеОрганизации", Новый ОписаниеТипов("Строка"));
	АктыСверок.Колонки.Добавить("ИНН",                     Новый ОписаниеТипов("Строка"));
	АктыСверок.Колонки.Добавить("КПП",                     Новый ОписаниеТипов("Строка"));
	АктыСверок.Колонки.Добавить("ЭтоЮрЛицо",               Новый ОписаниеТипов("Булево"));
	АктыСверок.Колонки.Добавить("НомерАкта",               Новый ОписаниеТипов("Строка"));
	АктыСверок.Колонки.Добавить("ДатаАкта",                ОбщегоНазначения.ОписаниеТипаДата(Частидаты.Дата));
	АктыСверок.Колонки.Добавить("ДатаНачала",              ОбщегоНазначения.ОписаниеТипаДата(Частидаты.Дата));
	АктыСверок.Колонки.Добавить("ДатаОкончания",           ОбщегоНазначения.ОписаниеТипаДата(Частидаты.Дата));
	АктыСверок.Колонки.Добавить("КодИФНС",                 Новый ОписаниеТипов("Строка"));
	АктыСверок.Колонки.Добавить("НаименованиеИФНС",        Новый ОписаниеТипов("Строка"));
	АктыСверок.Колонки.Добавить("Раздел1",       Новый ОписаниеТипов("ТаблицаЗначений"));
	АктыСверок.Колонки.Добавить("Раздел2",       Новый ОписаниеТипов("ТаблицаЗначений"));
	
	Возврат АктыСверок;
	
КонецФункции

&НаСервере
Функция НовоеСодержаниеРаздела1Акта()
	
	ОписаниеКолонкиСТипомЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17,2));
	
	СодержаниеАкта = Новый ТаблицаЗначений();
	
	СодержаниеАкта.Колонки.Добавить("КБК",                Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("НаименованиеНалога", Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("КПП",                Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("ОКТМО",              Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("ОКАТО",              Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("НеЗачисленныеСредства",    ОписаниеКолонкиСТипомЧисло);
	
	Возврат СодержаниеАкта;
	
КонецФункции

&НаСервере
Функция НовоеСодержаниеРаздела2Акта()
	
	ОписаниеКолонкиСТипомЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17,2));
	
	СодержаниеАкта = Новый ТаблицаЗначений();
	
	СодержаниеАкта.Колонки.Добавить("КБК",                Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("НаименованиеНалога", Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("КПП",                Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("ОКТМО",              Новый ОписаниеТипов("Строка"));
	СодержаниеАкта.Колонки.Добавить("ОКАТО",              Новый ОписаниеТипов("Строка"));
	
	// Сальдо на начало сверяемого периода
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНалог",                    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНалогОтрицательноеСальдо", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНалогОтсроченный",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНалогПриостановленный",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНалогРеструктурированный", ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПени",                     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПениОтрицательноеСальдо",  ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПениОтсроченный",          ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПениПриостановленный",     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПениРеструктурированный",  ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокШтраф",                    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокШтрафОтрицательноеСальдо", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокШтрафОтсроченный",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокШтрафПриостановленный",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокШтрафРеструктурированный", ОписаниеКолонкиСТипомЧисло);

	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНеуплаченныеПроцентыВсего",            ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНеуплаченныеПроценты",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНеуплаченныеПроцентыПриостановленный", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПроценты",                             ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПоложительноеСальдо",                     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокНалогПоложительноеСальдо",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПениПоложительноеСальдо",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокШтрафПоложительноеСальдо",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачальныйОстатокПроцентыПоложительноеСальдо",             ОписаниеКолонкиСТипомЧисло);
	
	// Данные за сверяемый период
	СодержаниеАкта.Колонки.Добавить("ПринятоеСальдоНалог",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПринятоеСальдоПени",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПринятоеСальдоШтраф",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПринятоеСальдоНеуплаченныеПроценты", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПринятоеСальдоПроценты",             ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("НачисленоНалог",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачисленоПени",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачисленоШтраф",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачисленоНеуплаченныеПроценты", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НачисленоПроценты",             ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("УменьшеноНалог",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УменьшеноПени",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УменьшеноШтраф",                ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("УплаченоНалогВсего",               ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНалог",                    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНалогЗачтеноИзлишнего",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНалогОтсроченный",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНалогПриостановленный",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНалогРеструктурированный", ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("УплаченоПениВсего",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоПени",                     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоПениОтсроченный",          ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоПениПриостановленный",     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоПениРеструктурированный",  ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("УплаченоШтрафВсего",               ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоШтраф",                    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоШтрафОтсроченный",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоШтрафПриостановленный",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоШтрафРеструктурированный", ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("УплаченоПроцентыВсего",                        ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНеуплаченныеПроценты",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоНеуплаченныеПроцентыПриостановленный", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("УплаченоПроценты",                             ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("ПереданоНалог",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПереданоПени",                  ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПереданоШтраф",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПереданоНеуплаченныеПроценты",  ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ПереданоПроценты",              ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("СписаноПени",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("СписаноШтраф",                ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("СписаноПравительствомНалог",  ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("СписаноПравительствомПени",   ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("СписаноПравительствомШтраф",  ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("СписаноПравительствомНеуплаченныеПроценты", ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("ВозвращеноНалог",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноНалогИзлишний",        ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноПени",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноПениИзлишний",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноШтраф",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноШтрафИзлишний",        ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноПроценты",             ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("ВозвращеноНеуплаченныеПроценты", ОписаниеКолонкиСТипомЧисло);
	
	// Сальдо на конец сверяемого периода
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокЗадолженность",            ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНалог",                    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНалогОтрицательноеСальдо", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНалогОтсроченный",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНалогПриостановленный",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНалогРеструктурированный", ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПени",                     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПениОтрицательноеСальдо",  ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПениОтсроченный",          ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПениПриостановленный",     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПениРеструктурированный",  ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокШтраф",                    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокШтрафОтрицательноеСальдо", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокШтрафОтсроченный",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокШтрафПриостановленный",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокШтрафРеструктурированный", ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНеуплаченныеПроцентыВсего",            ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНеуплаченныеПроценты",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНеуплаченныеПроцентыПриостановленный", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПроценты",                             ОписаниеКолонкиСТипомЧисло);
	
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПоложительноеСальдо",         ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокНалогПоложительноеСальдо",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПениПоложительноеСальдо",     ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокШтрафПоложительноеСальдо",    ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("КонечныйОстатокПроцентыПоложительноеСальдо", ОписаниеКолонкиСТипомЧисло);
	
	// Денежные средства, списанные с расчетных счетов налогоплательщика, но не зачисленные на счета доходов бюджетов на конец сверяемого периода
	СодержаниеАкта.Колонки.Добавить("НеЗачисленныеСредстваНалог",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НеЗачисленныеСредстваПени",                 ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НеЗачисленныеСредстваШтраф",                ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НеЗачисленныеСредстваНеуплаченныеПроценты", ОписаниеКолонкиСТипомЧисло);
	СодержаниеАкта.Колонки.Добавить("НеЗачисленныеСредстваПроценты",             ОписаниеКолонкиСТипомЧисло);
	
	Возврат СодержаниеАкта;
	
КонецФункции

&НаСервере
Функция ДатаФНС(Строка)
	
	Если ЗначениеЗаполнено(Строка) Тогда
		Возврат Дата(Прав(Строка, 4), Сред(Строка, 4, 2), Лев(Строка, 2));
	Иначе
		Возврат '00010101';
	КонецЕсли;
	
КонецФункции

&НаСервере
Функция СуммаПоДаннымНалоговогоОргана(ОбъектXDTO)
	
	Если ОбъектXDTO.Свойства().Получить("НалОрг") <> Неопределено Тогда
		Возврат ЧислоФНС(ОбъектXDTO.НалОрг);
	КонецЕсли;
	
	Возврат 0;
	
КонецФункции

&НаСервере
Функция ЗначениеЧисловогоПоля(ОбъектXDTO, Поле)
	
	Если ОбъектXDTO.Свойства().Получить(Поле) <> Неопределено Тогда
		Возврат ЧислоФНС(ОбъектXDTO[Поле]);
	КонецЕсли;
	
	Возврат 0;
	
КонецФункции

&НаСервере
Функция ЧислоФНС(Строка)
	
	Результат = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Строка);
	
	Если Результат = Неопределено Тогда
		Сообщить(НСтр("ru = 'Произошла ошибка при преобразовании строки суммы в число.'"));
		Возврат 0;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

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

#КонецОбласти

Связанные материалы