&НаКлиенте
Перем КонтекстЭДОКлиент;
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
АдресФайла = Параметры.АдресФайла;
ЗапросИОН = Параметры.ЗапросИОН;
Если Не ЗначениеЗаполнено(АдресФайла) Тогда
Возврат;
КонецЕсли;
НапечататьАкт();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытииЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовФормы
&НаКлиенте
Процедура АктСверкиТаблицаОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму(КонтекстЭДОКлиент.ПутьКОбъекту + ".Форма.ФормаРасшифровкиАктаСверкиСФНС5_03",
Новый Структура("АдресФайла, Расшифровка", АдресФайла, Расшифровка),
ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура НапечататьАкт()
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
XDTO = XDTOАктаСверки(АдресФайла);
АктыСверки = СписокИзXDTO(XDTO.Документ, "АктСвер");
ПерваяИтерация = Истина;
ЕстьДанные = Ложь;
Для Каждого АктСвер Из АктыСверки Цикл
Если НЕ ПерваяИтерация Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПерваяИтерация = Ложь;
ЕстьАкт = СформироватьТабДокАктСвер(XDTO, АктСвер);
Если ЕстьАкт Тогда
ЕстьДанные = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьДанные Тогда
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
КонтекстЭДОСервер.ДобавитьШтампПодписиВРезультатЗапросаИОН(ЗапросИОН, ТабДок, 3, Ложь);
Иначе
МакетАкта = КонтекстЭДОСервер.ПолучитьМакет("АктСверкиСФНС5_03");
Область = МакетАкта.ПолучитьОбласть("ДанныеОтсутствуют");
ТабДок.Вывести(Область);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
Если КонтекстЭДОКлиент = Неопределено Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция XDTOАктаСверки(АдресХранилища) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.XDTOАктаСверки(АдресХранилища);
КонецФункции
&НаСервере
Процедура ВывестиШапку(МакетАкта, XDTO, АктСвер) Экспорт
Шапка = МакетАкта.ПолучитьОбласть("Шапка");
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
КонтекстЭДОСервер.ЗаполнитьШапкуАктаСверки(Шапка, XDTO, АктСвер);
ТабДок.Вывести(Шапка);
КонецПроцедуры
&НаСервере
Процедура ВывестиШапкуТаблицы(ТабДокАкта, МакетАкта, АктСвер, Префикс) Экспорт
ШапкаТаблицы = МакетАкта.ПолучитьОбласть("ШапкаТаблицы" + Префикс);
ШапкаТаблицы.Параметры.ДатаНачала = АктСвер.ДатаНачПериод;
ШапкаТаблицы.Параметры.ДатаОкончания = АктСвер.ДатаКонПериод;
ТабДокАкта.Вывести(ШапкаТаблицы);
КонецПроцедуры
&НаСервере
Функция СформироватьТабДокАктСвер(XDTO, АктСвер) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
МакетАкта = КонтекстЭДОСервер.ПолучитьМакет("АктСверкиСФНС5_03");
Префикс = "АктПризнЕНП";
Колонки = ЧисловыеКолонкиТаблицыЕНП();
Таблица = ЗаполнитьТаблицуИзXDTO(АктСвер, Колонки, Префикс);
РезультатЕНП = СформироватьТабДокТекущегоАкта(МакетАкта, АктСвер, Таблица, Колонки, Префикс);
Префикс = "АктНеЕНП";
Колонки = ЧисловыеКолонкиТаблицыНеЕНП();
Таблица = ЗаполнитьТаблицуИзXDTO(АктСвер, Колонки, Префикс);
РезультатНеЕНП = СформироватьТабДокТекущегоАкта(МакетАкта, АктСвер, Таблица, Колонки, Префикс);
Если РезультатЕНП.ЕстьДанные ИЛИ РезультатНеЕНП.ЕстьДанные Тогда
ВывестиШапку(МакетАкта, XDTO, АктСвер);
Если РезультатЕНП.ЕстьДанные Тогда
ТабДок.Вывести(РезультатЕНП.ТабДок);
КонецЕсли;
Если РезультатНеЕНП.ЕстьДанные Тогда
ТабДок.Вывести(РезультатНеЕНП.ТабДок);
КонецЕсли;
КонецЕсли;
Возврат РезультатЕНП.ЕстьДанные ИЛИ РезультатНеЕНП.ЕстьДанные;
КонецФункции
&НаСервере
Функция СтрокаТаблицыЕНП_Всего(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Всего();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
НоваяСтрока.Начислено = ДанНО(ТекущийАкт.Начислено, "НачисленоВсего");
НоваяСтрока.Уменьшено = ДанНО(ТекущийАкт.Уменьшено, "УменьшеноВсего");
НоваяСтрока.ПоступилоЕНП = ДанНО(ТекущийАкт, "ПоступЕНП");
НоваяСтрока.РаспределеноЕНП = ДанНО(ТекущийАкт.РаспрЕНПДекл, "РаспрЕНПДеклВсего");
НоваяСтрока.Передано = ДанНО(ТекущийАкт, "ПрдСальдо");
НоваяСтрока.Принято = ДанНО(ТекущийАкт, "ПринСальдо");
НоваяСтрока.Списано =
ДанНО(ТекущийАкт, "СпЗадолжПен")
+ ДанНО(ТекущийАкт, "СпЗадолжШтр")
+ ДанНО(ТекущийАкт, "СписЗадолжПр");
НоваяСтрока.Возвращено = ДанНО(ТекущийАкт.Возвращено, "ВозвращеноВсего");
НоваяСтрока.Отсроченные = ДанНО(ТекущийАкт, "ОтсрРассрПлат");
НоваяСтрока.ПриостановленныеПоБанкротству = ДанНО(ТекущийАкт, "ПриостПлатБанкр");
НоваяСтрока.ПриостановленныеПоСуду = ДанНО(ТекущийАкт, "ПриостПлатРешен");
КонецФункции
&НаСервере
Функция СтрокаТаблицыЕНП_Налог(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Налог();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
НоваяСтрока.Начислено = ДанНО(ТекущийАкт.Начислено, "Налог");
НоваяСтрока.Уменьшено = ДанНО(ТекущийАкт.Уменьшено, "Налог");
НоваяСтрока.РаспределеноЕНП = ДанНО(ТекущийАкт.РаспрЕНПДекл, "Налог");
НоваяСтрока.Возвращено = ДанНО(ТекущийАкт.Возвращено, "Налог");
КонецФункции
&НаСервере
Функция СтрокаТаблицыЕНП_Пеня(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Пеня();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
НоваяСтрока.Начислено = ДанНО(ТекущийАкт.Начислено, "Пени");
НоваяСтрока.Уменьшено = ДанНО(ТекущийАкт.Уменьшено, "Пени");
НоваяСтрока.РаспределеноЕНП = ДанНО(ТекущийАкт.РаспрЕНПДекл, "Пени");
НоваяСтрока.Списано = ДанНО(ТекущийАкт, "СпЗадолжПен");
НоваяСтрока.Возвращено = ДанНО(ТекущийАкт.Возвращено, "Пени");
КонецФункции
&НаСервере
Функция СтрокаТаблицыЕНП_Штрафы(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Штраф();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
НоваяСтрока.Начислено = ДанНО(ТекущийАкт.Начислено, "Штраф");
НоваяСтрока.Уменьшено = ДанНО(ТекущийАкт.Уменьшено, "Штраф");
НоваяСтрока.РаспределеноЕНП = ДанНО(ТекущийАкт.РаспрЕНПДекл, "Штраф");
НоваяСтрока.Списано = ДанНО(ТекущийАкт, "СпЗадолжШтр");
НоваяСтрока.Возвращено = ДанНО(ТекущийАкт.Возвращено, "Штраф");
КонецФункции
&НаСервере
Функция СтрокаТаблицыЕНП_Прочее(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Прочее();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
НоваяСтрока.Начислено =
ДанНО(ТекущийАкт.Начислено, "ПроцСт")
+ ДанНО(ТекущийАкт.Начислено, "ПроцБанкр");
НоваяСтрока.Уменьшено = ДанНО(ТекущийАкт.Уменьшено, "ПроцСт");
НоваяСтрока.РаспределеноЕНП =
ДанНО(ТекущийАкт.РаспрЕНПДекл, "Остат")
+ ДанНО(ТекущийАкт.РаспрЕНПДекл, "ПроцСт")
+ ДанНО(ТекущийАкт.РаспрЕНПДекл, "ПроцБанкр");
НоваяСтрока.Списано = ДанНО(ТекущийАкт, "СписЗадолжПр");
НоваяСтрока.Возвращено =
ДанНО(ТекущийАкт.Возвращено, "Остат")
+ ДанНО(ТекущийАкт.Возвращено, "ПроцСт")
+ ДанНО(ТекущийАкт.Возвращено, "ПроцБанкр");
КонецФункции
&НаСервере
Функция ДобавитьОКТМОкКБК(Таблица, Область, ТекДанные) Экспорт
ДобавитьОКТМО = ЕстьНесколькоСтрокПоОдномуКБК(Таблица, ТекДанные.КБК);
Если ДобавитьОКТМО Тогда
Область.Параметры.Налог = Область.Параметры.Налог + " " + НСтр("ru = 'по ОКТМО'") + " " + ТекДанные.ОКТМО;
КонецЕсли;
КонецФункции
&НаСервере
Функция СтрокаСВидом(Таблица, КБК, ОКТМО, Вид) Экспорт
Отбор = Новый Структура();
Отбор.Вставить("КБК", КБК);
Отбор.Вставить("ОКТМО", ОКТМО);
Отбор.Вставить("Вид", Вид);
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
Возврат НайденныеСтроки[0];
КонецФункции
&НаСервере
Функция ЕстьНесколькоСтрокПоОдномуКБК(Таблица, КБК) Экспорт
Отбор = Новый Структура();
Отбор.Вставить("КБК", КБК);
Отбор.Вставить("Вид", Всего());
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
Возврат НайденныеСтроки.Количество() > 1;
КонецФункции
&НаСервере
Функция ВидыДанных()
Виды = Новый Массив;
Виды.Добавить(Всего());
Виды.Добавить(Налог());
Виды.Добавить(Пеня());
Виды.Добавить(Штраф());
Виды.Добавить(Прочее());
Возврат Виды;
КонецФункции
&НаСервере
Функция СформироватьТабДокТекущегоАкта(МакетАкта, АктСвер, Таблица, Колонки, Префикс) Экспорт
ЕстьДанные = Ложь;
ПарыКБК_ОКТМО = Таблица.Скопировать();
ПарыКБК_ОКТМО.Свернуть("КБК, ОКТМО");
ТабДокАкта = Новый ТабличныйДокумент;
ТабДокАкта.НачатьАвтогруппировкуСтрок();
ЭтоПерваяСтрока = Истина;
Для Каждого ТекДанные Из ПарыКБК_ОКТМО Цикл
Для каждого Вид Из ВидыДанных() Цикл
Строка = СтрокаСВидом(
Таблица,
ТекДанные.КБК,
ТекДанные.ОКТМО,
Вид);
ЭтоСтрокаВсего = Вид = Всего();
Если ВсеНули(Строка, Колонки) Тогда
Продолжить;
КонецЕсли;
Если ЭтоПерваяСтрока Тогда
ВывестиШапкуТаблицы(ТабДокАкта, МакетАкта, АктСвер, Префикс);
ЭтоПерваяСтрока = Ложь;
КонецЕсли;
ЕстьДанные = Истина;
Область = МакетАкта.ПолучитьОбласть(Вид + Префикс);
Область.Параметры.Заполнить(Строка);
Если ЭтоСтрокаВсего Тогда
ДобавитьОКТМОкКБК(Таблица, Область, ТекДанные);
КонецЕсли;
Область.Параметры.Расшифровка = АктСвер.НомерАкт + "_" + Префикс + "_" +ТекДанные.КБК + "_" + ТекДанные.ОКТМО;
Если ЭтоСтрокаВсего Тогда
ТабДокАкта.Вывести(Область, 1,, Истина);
Иначе
ТабДокАкта.Вывести(Область, 2,, Истина);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТабДокАкта.ЗакончитьАвтогруппировкуСтрок();
Если ЕстьДанные Тогда
СформироватьИтоги(ТабДокАкта, МакетАкта, Таблица, Колонки, Префикс);
КонецЕсли;
Результат = Новый Структура();
Результат.Вставить("ЕстьДанные", ЕстьДанные);
Результат.Вставить("ТабДок", ТабДокАкта);
Возврат Результат;
КонецФункции
&НаСервере
Функция СформироватьИтоги(ТабДокАкта, МакетАкта, Таблица, Колонки, Префикс)
КБК = Таблица.Скопировать();
КБК.Свернуть("КБК");
Если КБК.Количество() > 1 Тогда
Отбор = Новый Структура();
Отбор.Вставить("Вид", Всего());
КолонкиСуммирования = СтрСоединить(Колонки, ", ");
ТаблицаИтогов = Таблица.Скопировать(Отбор);
ТаблицаИтогов.Колонки.Добавить("Свертка", Новый ОписаниеТипов("Булево"));
ТаблицаИтогов.Свернуть("Свертка", КолонкиСуммирования);
Область = МакетАкта.ПолучитьОбласть("Итого" + Префикс);
Область.Параметры.Заполнить(ТаблицаИтогов[0]);
ТабДокАкта.Вывести(Область);
КонецЕсли;
КонецФункции
&НаСервере
Функция ЧисловыеКолонкиТаблицыНеЕНП()
Колонки = Новый Массив;
Колонки.Добавить("ЗадолженностьНаНачало");
Колонки.Добавить("ПереплатаНаНачало");
Колонки.Добавить("НачисленоЗаПериод");
Колонки.Добавить("УплаченоЗаПериод");
Колонки.Добавить("ЗадолженностьНаКонец");
Колонки.Добавить("ПереплатаНаКонец");
Возврат Колонки;
КонецФункции
&НаСервере
Функция ЧисловыеКолонкиТаблицыЕНП()
Колонки = Новый Массив;
Колонки.Добавить("Начислено");
Колонки.Добавить("Уменьшено");
Колонки.Добавить("ПоступилоЕНП");
Колонки.Добавить("РаспределеноЕНП");
Колонки.Добавить("Передано");
Колонки.Добавить("Принято");
Колонки.Добавить("Списано");
Колонки.Добавить("Возвращено");
Колонки.Добавить("Отсроченные");
Колонки.Добавить("ПриостановленныеПоБанкротству");
Колонки.Добавить("ПриостановленныеПоСуду");
Возврат Колонки;
КонецФункции
&НаСервере
Функция СтроковыеКолонкиТаблиц()
Колонки = Новый Массив;
Колонки.Добавить("Вид");
Колонки.Добавить("Налог");
Колонки.Добавить("ОКТМО");
Колонки.Добавить("КБК");
Возврат Колонки;
КонецФункции
&НаСервере
Функция ШаблонТаблицы(ЧисловыеКолонки)
ТипЧисло = ОбщегоНазначения.ОписаниеТипаЧисло(17, 2);
ТипСтрока = Новый ОписаниеТипов("Строка");
Таблица = Новый ТаблицаЗначений;
Колонки = СтроковыеКолонкиТаблиц();
Для каждого Колонка Из Колонки Цикл
Таблица.Колонки.Добавить(Колонка, ТипСтрока);
КонецЦикла;
Колонки = ЧисловыеКолонки;
Для каждого Колонка Из Колонки Цикл
Таблица.Колонки.Добавить(Колонка, ТипЧисло);
КонецЦикла;
Возврат Таблица;
КонецФункции
&НаСервере
Функция ДанНО(Узел, Поле)
Если ЕстьСвойствоXDTO(Узел, Поле) Тогда
Возврат ЧислоФНС(Узел[Поле].ДанНО);
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
&НаСервере
Функция Всего()
Возврат НСтр("ru = 'Всего'");
КонецФункции
&НаСервере
Функция Налог()
Возврат НСтр("ru = 'Налог'");
КонецФункции
&НаСервере
Функция Штраф()
Возврат НСтр("ru = 'Штраф'");
КонецФункции
&НаСервере
Функция Пеня()
Возврат НСтр("ru = 'Пеня'");
КонецФункции
&НаСервере
Функция Прочее()
Возврат НСтр("ru = 'Прочее'");
КонецФункции
&НаСервере
Процедура СтрокаТаблицыНеЕНП_Всего(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Всего();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлНач, "ЗадолжППлНачВсего");
НоваяСтрока.ЗадолженностьНаНачало = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаНачало = Переплата(ЗадолжППл);
НоваяСтрока.НачисленоЗаПериод =
ДанНО(ТекущийАкт.Начислено, "НачисленоВсего")
- ДанНО(ТекущийАкт.Уменьшено, "УменьшеноВсего")
- ДанНО(ТекущийАкт, "СпЗадолжНалог")
- ДанНО(ТекущийАкт, "СпЗадолжПен")
- ДанНО(ТекущийАкт, "СпЗадолжШтр")
- ДанНО(ТекущийАкт, "СписЗПр")
- ДанНО(ТекущийАкт.Возвращено, "ВозвращеноВсего")
- ДанНО(ТекущийАкт.ПрдСальдо, "ПрдСальдоВсего")
- ДанНО(ТекущийАкт.ПринСальдо, "ПринСальдоВсего");
НоваяСтрока.УплаченоЗаПериод = ДанНО(ТекущийАкт.Уплачено, "УплаченоВсего");
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлКон, "ЗадолжППлКонВсего");
НоваяСтрока.ЗадолженностьНаКонец = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаКонец = Переплата(ЗадолжППл);
КонецПроцедуры
&НаСервере
Функция Задолженность(Число)
Возврат ?(Число < 0, Число, 0);
КонецФункции
&НаСервере
Функция Переплата(Число)
Возврат ?(Число > 0, Число, 0);
КонецФункции
&НаСервере
Процедура СтрокаТаблицыНеЕНП_Налог(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Налог();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлНач, "НалВсего");
НоваяСтрока.ЗадолженностьНаНачало = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаНачало = Переплата(ЗадолжППл);
НоваяСтрока.НачисленоЗаПериод =
ДанНО(ТекущийАкт.Начислено, "Налог")
- ДанНО(ТекущийАкт.Уменьшено, "Налог")
- ДанНО(ТекущийАкт, "СпЗадолжНалог")
- ДанНО(ТекущийАкт.Возвращено, "Налог")
- ДанНО(ТекущийАкт.ПрдСальдо, "Налог")
- ДанНО(ТекущийАкт.ПринСальдо, "Налог");
НоваяСтрока.УплаченоЗаПериод = ДанНО(ТекущийАкт.Уплачено, "НалогВсего");
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлКон, "НалВсего");
НоваяСтрока.ЗадолженностьНаКонец = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаКонец = Задолженность(ЗадолжППл);
КонецПроцедуры
&НаСервере
Процедура СтрокаТаблицыНеЕНП_Пеня(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Пеня();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлНач, "ПениВсего");
НоваяСтрока.ЗадолженностьНаНачало = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаНачало = Переплата(ЗадолжППл);
НоваяСтрока.НачисленоЗаПериод =
ДанНО(ТекущийАкт.Начислено, "Пени")
- ДанНО(ТекущийАкт.Уменьшено, "Пени")
- ДанНО(ТекущийАкт, "СпЗадолжПен")
- ДанНО(ТекущийАкт.Возвращено, "Пени")
- ДанНО(ТекущийАкт.ПрдСальдо, "Пени")
- ДанНО(ТекущийАкт.ПринСальдо, "Пени");
НоваяСтрока.УплаченоЗаПериод = ДанНО(ТекущийАкт.Уплачено, "ПенВсего");
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлКон, "ПениВсего");
НоваяСтрока.ЗадолженностьНаКонец = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаКонец = Переплата(ЗадолжППл);
КонецПроцедуры
&НаСервере
Процедура СтрокаТаблицыНеЕНП_Штрафы(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Штраф();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлНач, "ШтрафВсего");
НоваяСтрока.ЗадолженностьНаНачало = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаНачало = Переплата(ЗадолжППл);
НоваяСтрока.НачисленоЗаПериод =
ДанНО(ТекущийАкт.Начислено, "Штраф")
- ДанНО(ТекущийАкт.Уменьшено, "Штраф")
- ДанНО(ТекущийАкт, "СпЗадолжШтр")
- ДанНО(ТекущийАкт.Возвращено, "Штраф")
- ДанНО(ТекущийАкт.ПрдСальдо, "Штрафы")
- ДанНО(ТекущийАкт.ПринСальдо, "Штрафы");
НоваяСтрока.УплаченоЗаПериод = ДанНО(ТекущийАкт.Уплачено, "ШтрВсего");
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлКон, "ШтрафВсего");
НоваяСтрока.ЗадолженностьНаКонец = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаКонец = Переплата(ЗадолжППл);
КонецПроцедуры
&НаСервере
Процедура СтрокаТаблицыНеЕНП_Прочее(ТекущийАкт, Налог, Таблица)
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Вид = Прочее();
НоваяСтрока.Налог = Налог;
НоваяСтрока.КБК = ТекущийАкт.КБК;
НоваяСтрока.ОКТМО = ТекущийАкт.ОКТМО;
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлНач, "НеупСумВс");
НоваяСтрока.ЗадолженностьНаНачало = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаНачало = Переплата(ЗадолжППл);
НоваяСтрока.НачисленоЗаПериод =
ДанНО(ТекущийАкт.Начислено, "ПроцБанкр")
- ДанНО(ТекущийАкт, "СписЗПр")
- ДанНО(ТекущийАкт.Возвращено, "ПроцБанкр")
- ДанНО(ТекущийАкт.Возвращено, "Остат")
- ДанНО(ТекущийАкт.ПрдСальдо, "НеупСум")
- ДанНО(ТекущийАкт.ПрдСальдо, "ПроцБанкр")
- ДанНО(ТекущийАкт.ПринСальдо, "НеупСум")
- ДанНО(ТекущийАкт.ПринСальдо, "ПроцБанкр");
НоваяСтрока.УплаченоЗаПериод = ДанНО(ТекущийАкт.Уплачено, "ПрВсего");
ЗадолжППл = ДанНО(ТекущийАкт.ЗадолжППлКон, "НеупСумВс");
НоваяСтрока.ЗадолженностьНаКонец = Задолженность(ЗадолжППл);
НоваяСтрока.ПереплатаНаКонец = Переплата(ЗадолжППл);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьТаблицуИзXDTO(АктСвер, Колонки, Префикс)
СодАкт = СписокИзXDTO(АктСвер, "СодАкт");
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Таблица = ШаблонТаблицы(Колонки);
НалогиПоКБК = Обработки.ДокументооборотСКонтролирующимиОрганами.ПолучитьМакет("КБК");
КолонкаКБК = НалогиПоКБК.Область("КБК");
Для Каждого ТекущийСодАкт Из СодАкт Цикл
ТекущийАкт = СвойствоXDTO(ТекущийСодАкт, Префикс);
Если ТекущийАкт = "" Тогда
Продолжить;
КонецЕсли;
ТекущийАкт = ТекущийСодАкт[Префикс];
КБК = ТекущийАкт.КБК;
Налог = "";
КонтекстЭДОСервер.ПолучитьНаименованиеНалога(КБК, НалогиПоКБК, КолонкаКБК, Налог);
Если Префикс = "АктПризнЕНП" Тогда
СтрокаТаблицыЕНП_Всего(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыЕНП_Налог(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыЕНП_Пеня(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыЕНП_Штрафы(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыЕНП_Прочее(ТекущийАкт, Налог, Таблица);
Иначе
СтрокаТаблицыНеЕНП_Всего(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыНеЕНП_Налог(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыНеЕНП_Пеня(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыНеЕНП_Штрафы(ТекущийАкт, Налог, Таблица);
СтрокаТаблицыНеЕНП_Прочее(ТекущийАкт, Налог, Таблица);
КонецЕсли;
КонецЦикла;
Таблица.Сортировать("Налог");
Возврат Таблица;
КонецФункции
&НаСервере
Функция ВсеНули(Строка, Колонки)
Для каждого Колонка Из Колонки Цикл
Если Строка[Колонка] <> 0 Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
&НаСервере
Функция ЧислоФНС(Строка)
Результат = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Строка);
Если Результат = Неопределено Тогда
Ошибка = НСтр("ru = 'Произошла ошибка при преобразовании строки суммы (%1) в число.'");
Ошибка = СтрШаблон(Ошибка, Строка);
Сообщить(Ошибка);
Возврат 0;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция СписокИзXDTO(Узел, Поле) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.СписокИзXDTO(Узел, Поле);
КонецФункции
&НаСервереБезКонтекста
Функция ЕстьСвойствоXDTO(Узел, Поле) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.ЕстьСвойствоXDTO(Узел, Поле);
КонецФункции
&НаСервереБезКонтекста
Функция СвойствоXDTO(Узел, Поле) Экспорт
КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
Возврат КонтекстЭДОСервер.СвойствоXDTO(Узел, Поле);
КонецФункции
#КонецОбласти