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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	Основание = Параметры.Основание;
	
	Если НЕ ЗначениеЗаполнено(Основание) Тогда
		РезультатОткрытия = Новый Структура("Предупреждение", "Не выбран запрос!");
		Возврат;
	КонецЕсли;
	
	СтруктураРеквизитовФормы = Новый Структура;
	СтруктураРеквизитовФормы.Вставить("СписокПечатаемыхЛистов");
	СтруктураРеквизитовФормы.Вставить("мПечатныеФормы");
	СтруктураРеквизитовФормы.Вставить("мРежимПечати");
	СтруктураРеквизитовФормы.СписокПечатаемыхЛистов = Новый СписокЗначений;
	СтруктураРеквизитовФормы.мПечатныеФормы = Новый СписокЗначений;
	СтруктураРеквизитовФормы.мРежимПечати = Истина;
	
	// инициализируем контекст ЭДО - модуль обработки
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	
	Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗапросНаИнформационноеОбслуживаниеСтрахователя") Тогда
		
		Ответы = КонтекстЭДОСервер.ПолучитьОтветыНаЗапросИОС(Основание, Истина);
		Если НЕ ЗначениеЗаполнено(Ответы) Тогда
			РезультатОткрытия = Новый Структура("Предупреждение", "Не найдено приложение!");
			Возврат;
		КонецЕсли;
		
		ИмяФайлаОтвета = Ответы[0].ИмяФайла;
		ДанныеФайлаОтвета = Ответы[0].Данные;
		
	Иначе
				
		СодержимоеОтветы = КонтекстЭДОСервер.ПолучитьВложенияТранспортногоСообщения(Основание, Истина, Перечисления.ТипыСодержимогоТранспортногоКонтейнера.ОтветПриложениеНаЗапросПФР);
		Если СодержимоеОтветы.Количество() = 0 Тогда
			РезультатОткрытия = Новый Структура("Предупреждение", "Не найдено приложение!");
			Возврат;
		КонецЕсли;
		СодержимоеОтвет = СодержимоеОтветы[0];
		
		ИмяФайлаОтвета = СодержимоеОтвет.ИмяФайла;
		ДанныеФайлаОтвета = СодержимоеОтвет.Данные;
		
		Элементы.Печать.Видимость = Ложь;
		
	Конецесли;
	
	Если НЕ ЗначениеЗаполнено(ДанныеФайлаОтвета) Тогда
		РезультатОткрытия = Новый Структура("Предупреждение", "Ответ пуст!");
		Возврат;
	КонецЕсли;
	
	// загружаем ответ в дерево
	ФайлОтвета = ПолучитьИмяВременногоФайла();
	ДанныеФайлаОтвета.Получить().Записать(ФайлОтвета);
	ДеревоОтвета = КонтекстЭДОСервер.ЗагрузитьXMLВДеревоЗначений(ФайлОтвета);
	УдалитьФайлы(ФайлОтвета);
	Если ДеревоОтвета = Неопределено Тогда
		РезультатОткрытия = Новый Структура("Предупреждение", "Неизвестный формат файла ответа!");
		Возврат;
	КонецЕсли;
	
	// заполняем данные для печатной формы	
	РегистрационныйНомер 			= ПолучитьЗначениеИзДерева(ДеревоОтвета, "регистрационныйНомерПлательщика");
	ИНН 							= ПолучитьЗначениеИзДерева(ДеревоОтвета, "ИНН");
	КПП 							= ПолучитьЗначениеИзДерева(ДеревоОтвета, "KPP");
	Адрес 							= ПолучитьЗначениеИзДерева(ДеревоОтвета, "адресПлательщика");
	ПолноеНаименованиеОрганизации 	= ПолучитьЗначениеИзДерева(ДеревоОтвета, "наименованиеПлательщика");
	
	// ищем реквизит наДату
	УзелНаДату = ДеревоОтвета.Строки.Найти("наДату", "Имя", Истина);
	Если ЗначениеЗаполнено(УзелНаДату) Тогда
		ДатаНа = XMLЗначение(Тип("Дата"), УзелНаДату.Значение);
		Если ЗначениеЗаполнено(ДатаНа) Тогда
			ЭтаФорма.Заголовок = ЭтаФорма.Заголовок + " на " + Формат(ДатаНа, "ДФ=dd.MM.yyyy");
		КонецЕсли;
	КонецЕсли;
	
	УзелСверка = ДеревоОтвета.Строки.Найти("сверка", "Имя");
	Если УзелСверка = Неопределено Тогда
		УзелСверка = ДеревоОтвета.Строки.Найти("справка", "Имя");
	КонецЕсли;
	
	Если УзелСверка <> Неопределено Тогда // формат, приведенный на сайте ПФР
		
		// ищем реквизит "расчет"
		УзлыРасчет = ДеревоОтвета.Строки.НайтиСтроки(Новый Структура("Имя", "расчет"), Истина);
		Для Каждого УзелРасчет Из УзлыРасчет Цикл
			
			// инициализация
			НаименованиеЗначение = "";
			КБКЗначение = "";
			ВзносыЗначение = 0;
			ПениЗначение = 0;
			ШтрафыЗначение = 0;
			ВзносыСтатусЗначение = "переплата";
			ПениСтатусЗначение = "переплата";
			ШтрафыСтатусЗначение = "переплата";
			
			// получаем узлы
			УзелНаименование = УзелРасчет.Строки.Найти("Наименование", "Имя");
			Если УзелНаименование = Неопределено Тогда
				УзелНаименование = УзелРасчет.Строки.Найти("наименование", "Имя");
			КонецЕсли;
			УзелКБК = УзелРасчет.Строки.Найти("КБК", "Имя");
			
			УзелСостояние = УзелРасчет.Строки.Найти("состояние", "Имя");
			Если УзелСостояние <> Неопределено Тогда
				
				УзелВзносы = УзелСостояние.Строки.Найти("взносы", "Имя");
				УзелПени = УзелСостояние.Строки.Найти("пени", "Имя");
				УзелШтрафы = УзелСостояние.Строки.Найти("штрафы", "Имя");
				
				Если УзелВзносы <> Неопределено Тогда
					УзелВзносыСтатус = УзелВзносы.Строки.Найти("статус", "Имя");
				КонецЕсли;
				
				Если УзелПени <> Неопределено Тогда
					УзелПениСтатус = УзелПени.Строки.Найти("статус", "Имя");
				КонецЕсли;
				
				Если УзелШтрафы <> Неопределено Тогда
					УзелШтрафыСтатус = УзелШтрафы.Строки.Найти("статус", "Имя");
				КонецЕсли;
				
			Иначе
				
				УзелВзносы = Неопределено;
				УзелПени = Неопределено;
				УзелШтрафы = Неопределено;
				
				УзелВзносыСтатус = Неопределено;
				УзелПениСтатус = Неопределено;
				УзелШтрафыСтатус = Неопределено;
				
			КонецЕсли;
			
			// получаем значения
			Если УзелНаименование <> Неопределено И ЗначениеЗаполнено(УзелНаименование.Значение) Тогда
				НаименованиеЗначение = XMLЗначение(Тип("Строка"), УзелНаименование.Значение);
			КонецЕсли;
			Если УзелКБК <> Неопределено И ЗначениеЗаполнено(УзелКБК.Значение) Тогда
				КБКЗначение = XMLЗначение(Тип("Строка"), УзелКБК.Значение);
			КонецЕсли;
			
			Если УзелВзносы <> Неопределено И ЗначениеЗаполнено(УзелВзносы.Значение) Тогда
				ВзносыЗначение = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелВзносы.Значение));
			КонецЕсли;
			Если УзелПени <> Неопределено И ЗначениеЗаполнено(УзелПени.Значение) Тогда
				ПениЗначение = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелПени.Значение));
			КонецЕсли;
			Если УзелШтрафы <> Неопределено И ЗначениеЗаполнено(УзелШтрафы.Значение) Тогда
				ШтрафыЗначение = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелШтрафы.Значение));
			КонецЕсли;
			
			Если УзелВзносыСтатус <> Неопределено Тогда
				ВзносыСтатус = XMLЗначение(Тип("Строка"), УзелВзносыСтатус.Значение);
			КонецЕсли;
			Если УзелПениСтатус <> Неопределено Тогда
				ПениСтатус = XMLЗначение(Тип("Строка"), УзелПениСтатус.Значение);
			КонецЕсли;
			Если УзелШтрафыСтатус <> Неопределено Тогда
				ШтрафыСтатус = XMLЗначение(Тип("Строка"), УзелШтрафыСтатус.Значение);
			КонецЕсли;
			
			// пишем значения
			НовСтр = СправкаОСостоянииРасчетов.Добавить();
			НовСтр.НаименованиеПлатежа = НаименованиеЗначение;
			НовСтр.КБК = КБКЗначение;
			
			Если ВзносыСтатус = "переплата" Тогда
				НовСтр.ВзносыПереплата = ВзносыЗначение;
			Иначе
				НовСтр.ВзносыЗадолженность = ВзносыЗначение;
			КонецЕсли;
			Если ПениСтатус = "переплата" Тогда
				НовСтр.ПениПереплата = ПениЗначение;
			Иначе
				НовСтр.ПениЗадолженность = ПениЗначение;
			КонецЕсли;
			Если ШтрафыСтатус = "переплата" Тогда
				НовСтр.ШтрафыПереплата = ШтрафыЗначение;
			Иначе
				НовСтр.ШтрафыЗадолженность = ШтрафыЗначение;
			КонецЕсли;
			
			НовСтр.ЗадолженностьВсего = НовСтр.ВзносыЗадолженность + НовСтр.ПениЗадолженность + НовСтр.ШтрафыЗадолженность;
			НовСтр.ПереплатаВсего = НовСтр.ВзносыПереплата + НовСтр.ПениПереплата + НовСтр.ШтрафыПереплата;
			
		КонецЦикла;
		
	Иначе // "неофициальный" формат
		
		// ищем реквизит "расчет"
		УзлыРасчет = ДеревоОтвета.Строки.НайтиСтроки(Новый Структура("Имя", "расчет"), Истина);
		Для Каждого УзелРасчет Из УзлыРасчет Цикл
			
			// инициализация
			НаименованиеЗначение = "";
			КБКЗначение = "";
			
			ВзносыПереплата = 0;
			ПениПереплата = 0;
			ШтрафыПереплата = 0;
			
			ВзносыЗадолженность = 0;
			ПениЗадолженность = 0;
			ШтрафыЗадолженность = 0;
			
			// получаем узлы
			УзелНаименование = УзелРасчет.Строки.Найти("Наименование", "Имя");
			Если УзелНаименование = Неопределено Тогда
				УзелНаименование = УзелРасчет.Строки.Найти("наименование", "Имя");
			КонецЕсли;
			УзелКБК = УзелРасчет.Строки.Найти("КБК", "Имя");
			
			УзелСостояние = УзелРасчет.Строки.Найти("состояние", "Имя");
			Если УзелСостояние <> Неопределено Тогда
				
				УзелВзносы = УзелСостояние.Строки.Найти("взносы", "Имя");
				УзелПени = УзелСостояние.Строки.Найти("пени", "Имя");
				УзелШтрафы = УзелСостояние.Строки.Найти("штрафы", "Имя");
				
				Если УзелВзносы <> Неопределено Тогда
					УзелВзносыПереплата = УзелВзносы.Строки.Найти("переплата", "Имя");
					УзелВзносыЗадолженность = УзелВзносы.Строки.Найти("задолженность", "Имя");
				КонецЕсли;
				
				Если УзелПени <> Неопределено Тогда
					УзелПениПереплата = УзелПени.Строки.Найти("переплата", "Имя");
					УзелПениЗадолженность = УзелПени.Строки.Найти("задолженность", "Имя");
				КонецЕсли;
				
				Если УзелШтрафы <> Неопределено Тогда
					УзелШтрафыПереплата = УзелШтрафы.Строки.Найти("переплата", "Имя");
					УзелШтрафыЗадолженность = УзелШтрафы.Строки.Найти("задолженность", "Имя");
				КонецЕсли;
				
			Иначе
				
				УзелВзносы = Неопределено;
				УзелПени = Неопределено;
				УзелШтрафы = Неопределено;
				
				УзелВзносыПереплата = Неопределено;
				УзелПениПереплата = Неопределено;
				УзелШтрафыПереплата = Неопределено;
				
				УзелВзносыЗадолженность = Неопределено;
				УзелПениЗадолженность = Неопределено;
				УзелШтрафыЗадолженность = Неопределено;
				
			КонецЕсли;
			
			// получаем значения
			Если УзелНаименование <> Неопределено И ЗначениеЗаполнено(УзелНаименование.Значение) Тогда
				НаименованиеЗначение = XMLЗначение(Тип("Строка"), УзелНаименование.Значение);
			КонецЕсли;
			Если УзелКБК <> Неопределено И ЗначениеЗаполнено(УзелКБК.Значение) Тогда
				КБКЗначение = XMLЗначение(Тип("Строка"), УзелКБК.Значение);
			КонецЕсли;
			
			Если УзелВзносыПереплата <> Неопределено Тогда
				ВзносыПереплата = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелВзносыПереплата.Значение));
			КонецЕсли;
			Если УзелПениПереплата <> Неопределено Тогда
				ПениПереплата = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелПениПереплата.Значение));
			КонецЕсли;
			Если УзелШтрафыПереплата <> Неопределено Тогда
				ШтрафыПереплата = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелШтрафыПереплата.Значение));
			КонецЕсли;
			
			Если УзелВзносыЗадолженность <> Неопределено Тогда
				ВзносыЗадолженность = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелВзносыЗадолженность.Значение));
			КонецЕсли;
			Если УзелПениЗадолженность <> Неопределено Тогда
				ПениЗадолженность = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелПениЗадолженность.Значение));
			КонецЕсли;
			Если УзелШтрафыЗадолженность <> Неопределено Тогда
				ШтрафыЗадолженность = XMLЗначениеЧислоВПопытке(ПривестиКВидуXMLЧисло(УзелШтрафыЗадолженность.Значение));
			КонецЕсли;
			
			// пишем значения
			НовСтр = СправкаОСостоянииРасчетов.Добавить();
			НовСтр.НаименованиеПлатежа = НаименованиеЗначение;
			НовСтр.КБК = КБКЗначение;
			
			НовСтр.ВзносыПереплата = ВзносыПереплата;
			НовСтр.ПениПереплата = ПениПереплата;
			НовСтр.ШтрафыПереплата = ШтрафыПереплата;
			
			НовСтр.ВзносыЗадолженность = ВзносыЗадолженность;
			НовСтр.ПениЗадолженность = ПениЗадолженность;
			НовСтр.ШтрафыЗадолженность = ШтрафыЗадолженность;
			
			НовСтр.ЗадолженностьВсего = НовСтр.ВзносыЗадолженность + НовСтр.ПениЗадолженность + НовСтр.ШтрафыЗадолженность;
			НовСтр.ПереплатаВсего = НовСтр.ВзносыПереплата + НовСтр.ПениПереплата + НовСтр.ШтрафыПереплата;
			
		КонецЦикла;
		
	КонецЕсли;
	
	// вычисляем подвал
	СуммаЗадолженностьВсего = СправкаОСостоянииРасчетов.Итог("ЗадолженностьВсего");
	СуммаПереплатаВсего = СправкаОСостоянииРасчетов.Итог("ПереплатаВсего");
	СуммаВзносыЗадолженность = СправкаОСостоянииРасчетов.Итог("ВзносыЗадолженность");
	СуммаВзносыПереплата = СправкаОСостоянииРасчетов.Итог("ВзносыПереплата");
	СуммаПениЗадолженность = СправкаОСостоянииРасчетов.Итог("ПениЗадолженность");
	СуммаПениПереплата = СправкаОСостоянииРасчетов.Итог("ПениПереплата");
	СуммаШтрафыЗадолженность = СправкаОСостоянииРасчетов.Итог("ШтрафыЗадолженность");
	СуммаШтрафыПереплата = СправкаОСостоянииРасчетов.Итог("ШтрафыПереплата");
	
	ПронумероватьСтроки();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура СправкаОСостоянииРасчетовПриИзменении(Элемент)
	
	ПронумероватьСтроки();
	
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Печать(Команда)
	
	Состояние(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='%1. Формируется печатная форма...'"), ЭтаФорма.Заголовок), , , БиблиотекаКартинок.Печать);
	
	ТабличныйДокумент = ПечатьНаСервере("ПечататьБланк");
	
	#Если ВебКлиент Тогда
		ЭтоВебКлиент = Истина;
	#Иначе
		ЭтоВебКлиент = Ложь;
	#КонецЕсли
	
	ЦиклОбмена = Основание;
	ПечатныеДокументы = Новый СписокЗначений;
	ПечатныеДокументы.Вставить(0, ТабличныйДокумент, "Справка о состоянии расчетов");
	СтруктураПараметров = Новый Структура();
	СтруктураПараметров.Вставить("ЦиклОбмена",ЦиклОбмена);
	СтруктураПараметров.Вставить("ПечатныеДокументы", ПечатныеДокументы);
	СтруктураПараметров.Вставить("ВидПечати", "ПечататьБланк");
	СтруктураПараметров.Вставить("ЭтоВебКлиент", ЭтоВебКлиент);

	ОткрытьФорму(ПутьКОбъекту + ".Форма.ПредварительныйПросмотрПечатныхФорм", СтруктураПараметров,,Новый УникальныйИдентификатор);
	
КонецПроцедуры

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

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

&НаСервереБезКонтекста
Функция ПолучитьЗначениеИзДерева(Дерево, НаименованиеУзла)
	
	Узел = Дерево.Строки.Найти(НаименованиеУзла, "Имя", Истина);
	Если Узел = Неопределено Тогда
		Возврат Неопределено;
	Иначе 
		Возврат Узел.Значение;
	КонецЕсли;	

КонецФункции

&НаСервереБезКонтекста
Функция ПривестиКВидуXMLЧисло(Знач СтрЧисло)
	
	СтрЧисло = СтрЗаменить(СтрЧисло, " ", "");
	СтрЧисло = СтрЗаменить(СтрЧисло, ",", ".");
	СтрЧисло = СтрЗаменить(СтрЧисло, Символы.НПП, "");
	
	Возврат СтрЧисло;
	
КонецФункции

&НаСервереБезКонтекста
Функция XMLЗначениеЧислоВПопытке(СтрЧисло)
	
	Попытка
		Возврат XMLЗначение(Тип("Число"), СтрЧисло);
	Исключение
		Возврат 0;
	КонецПопытки;
	
КонецФункции

&НаСервере
Процедура ПронумероватьСтроки()
	
	Для Каждого Стр Из СправкаОСостоянииРасчетов Цикл
		Стр.Номер = СправкаОСостоянииРасчетов.Индекс(Стр) + 1;
	КонецЦикла;
	
КонецПроцедуры

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

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

&НаСервере
Функция ПечатьНаСервере(ВидПечати)
	
	ТабДок = Новый ТабличныйДокумент;
	
	МакетСправки = ПолучитьМакетОбработки("СправкаОСостоянииРасчетовИОС");
	
	ТабДок.Очистить();
		
	// заполняем шапку
	Шапка = МакетСправки.ПолучитьОбласть("Шапка");
	Шапка.Параметры["РегистрационныйНомер"] 			= РегистрационныйНомер;
	Шапка.Параметры["ИНН"] 								= ИНН;
	Шапка.Параметры["КПП"] 								= КПП;
	Шапка.Параметры["Адрес"] 							= Адрес;
	Шапка.Параметры["ДатаДокумента"] 					= Формат(ДатаНа, "ДЛФ=DD");
	Шапка.Параметры["ПолноеНаименованиеОрганизации"] 	= ПолноеНаименованиеОрганизации;
    ТабДок.Вывести(Шапка);

	ИменаКолонок = Новый Массив; 
	ИменаКолонок.Добавить("ВзносыЗадолженность");
	ИменаКолонок.Добавить("ВзносыПереплата");
	ИменаКолонок.Добавить("ПениЗадолженность");
	ИменаКолонок.Добавить("ПениПереплата");
	ИменаКолонок.Добавить("ШтрафыЗадолженность");
	ИменаКолонок.Добавить("ШтрафыПереплата");			
	
	// заполняем таблицу
	ВсегоЗадолженностьИтого = 0; 
	ВсегоПереплатаИтого 	= 0;
	КоличествоСтрок = СправкаОСостоянииРасчетов.Количество();
	
	Для Каждого СтрокаСправки Из СправкаОСостоянииРасчетов Цикл
		СтрокаТаблицы 		= МакетСправки.ПолучитьОбласть("СтрокаТаблицы");
		ВсегоЗадолженность 	= 0;
		ВсегоПереплата 		= 0;
		Для каждого ИмяКолонки Из ИменаКолонок Цикл
			ЗначениеПараметра 	= СтрокаСправки[ИмяКолонки];
			ЭтоЗадолженность 	= Прав(ИмяКолонки,13) = "Задолженность";
			ЗнакПараметра 		= ?(ЭтоЗадолженность,1,-1);
			
			Если ЭтоЗадолженность Тогда				
				ВсегоЗадолженность 	= ВсегоЗадолженность + ЗначениеПараметра;
			Иначе 	
				ВсегоПереплата 		= ВсегоПереплата + ЗнакПараметра * ЗначениеПараметра;
			КонецЕсли;	
			
			СтрокаТаблицы.Параметры[ИмяКолонки] = ЗнакПараметра * ЗначениеПараметра;				
		КонецЦикла; 		
		// заполняем суммы в колонке Всего для каждой строки
		СтрокаТаблицы.Параметры["ВсегоЗадолженность"] 	= ВсегоЗадолженность;
		СтрокаТаблицы.Параметры["ВсегоПереплата"] 		= ВсегоПереплата;
		СтрокаТаблицы.Параметры["КБК"] 					= СтрокаСправки.КБК;
		СтрокаТаблицы.Параметры["НаименованиеПлатежа"]	= СтрокаСправки.НаименованиеПлатежа;
		
		ВсегоЗадолженностьИтого = ВсегоЗадолженностьИтого + ВсегоЗадолженность;
		ВсегоПереплатаИтого 	= ВсегоПереплатаИтого + ВсегоПереплата;
		ТабДок.Вывести(СтрокаТаблицы);
	КонецЦикла; 
	
	// заполняем итоги
	Подвал = МакетСправки.ПолучитьОбласть("Подвал");
	Для каждого ИмяКолонки Из ИменаКолонок Цикл
		ЗнакПараметра = ?(Прав(ИмяКолонки,13) = "Задолженность",1,-1);
		Подвал.Параметры[ИмяКолонки + "Итого"] = ЗнакПараметра * СправкаОСостоянииРасчетов.Итог(ИмяКолонки);	
	КонецЦикла;	
	
	// заполняем колонку Всего для строки итогов
	Подвал.Параметры["ВсегоЗадолженностьИтого"] 	= ВсегоЗадолженностьИтого;
	Подвал.Параметры["ВсегоПереплатаИтого"] 		= ВсегоПереплатаИтого;
	ТабДок.Вывести(Подвал);
	ТабДок.АвтоМасштаб = Истина;
	
	Возврат ТабДок;
	
КонецФункции	

&НаСервереБезКонтекста
Функция ПолучитьМакетОбработки(ИмяМакета)
	ОбработкаЭДО = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Возврат ОбработкаЭДО.ПолучитьМакет(ИмяМакета);
КонецФункции

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

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