Расчетная ведомость по средствам ФСС (форма 4-ФСС) / Настройки загрузки из файла XML 2022 (кв.2) / Содержимое макета

файл
// Область "Настройки" описывает параметры инициализации механизма загрузки
// регламентированных отчетов из файлов выгрузки. Формат области настроек - JSON.
//
// Описание параметров:
//  * Установкой параметра "РазрешитьЗагрузку" в "true" или "false" регулируем видимость
//    кнопки "Загрузить" и возможность загрузки из файла в форме отчета.
//  * Параметр "ФорматыСхемВыгрузки" описывает соответствие имен макетов схем выгрузки
//    поддерживаемым форматам загрузки. Если у формы единственная схема выгрузки или
//    нужно всегда использовать схему по умолчанию - указываем значение "null".
//  * Параметр "ОбластиОбработчиков" содержит список имен используемых обработчиков
//    загружаемых данных. Имена соответствуют областям макета, в которых можно размещать
//    произвольные алгоритмы на языке "1С:Предприятие" для обработки доступных объектов.
//
// Примечание:
//  Сопоставление имен узлов из файла XML и имен показателей отчета выполняется по данным схемы выгрузки,
//  поэтому обработчики используются для получения значений показателей не описанных в схеме выгрузки.
//
#Область Настройки
{
	"РазрешитьЗагрузку"   : true,
	
	"ФорматыСхемВыгрузки" : null,
	"ОбластиОбработчиков" : {
		"ПередЗагрузкой"  : "ПредОбработкаСхемыЗагрузки",
		"ПослеЗагрузки"   : "ПостОбработкаДокументаОтчета",
	}
}
#КонецОбласти

// Доступны параметры:
//
//  П.ДеревоДляЗагрузки - выбранное дерево схемы загрузки, не заполненное данными;
//  П.ПараметрыОтчета   - параметры, сформированные в форме отчета, используются для выгрузки.
//
#Область ПредОбработкаСхемыЗагрузки

	НайденныеУзлы = УзлыПоXPath(П.ДеревоДляЗагрузки, "/F4CALC");
	Для Каждого НайденныйУзел Из НайденныеУзлы Цикл
		НайденныйУзел.Обязательность = НайденныйУзел.Обязательность + "П";
	КонецЦикла;

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

// Доступны параметры:
//
//  П.ДанныеОтчета      - заполненные данные документа регламентированного отчета;
//  П.ДеревоДляЗагрузки - выбранное дерево схемы загрузки, не заполненное данными;
//  П.ПараметрыОтчета   - параметры, сформированные в форме отчета, используются для выгрузки.
//
#Область ПостОбработкаДокументаОтчета
	
	ГруппаТаблицаПлатежи = УзлыПоXPath(П.ДеревоДляЗагрузки, "/F4INFO/PAYM_ORDER"); // группа строк таблицы платежей
	
	Для НомСтроки = 1 По ГруппаТаблицаПлатежи.Количество() Цикл
		УзелПлатеж = ГруппаТаблицаПлатежи[НомСтроки - 1];
		
		УзелЧислоСумма = УзлыПоXPath(УзелПлатеж, "@SUM")[0];
		
		УзелНомерСтроки = СкопированныйУзел(УзелПлатеж, УзелЧислоСумма);
		УзелНомерСтроки.Код  = "НомСтроки";
		УзелНомерСтроки.Ключ = "П000920000101";
		УзелНомерСтроки.МинРазмерность = 1;
		УзелНомерСтроки.Значение = Формат(НомСтроки, "ЧГ=0");
		
		ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(УзелПлатеж, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
	КонецЦикла;
	
	ГруппаТаблица2 = УзлыПоXPath(П.ДеревоДляЗагрузки, "/F4DOGOV"); // группа строк таблицы 2
	
	Для НомСтроки = 1 По ГруппаТаблица2.Количество() Цикл
		УзелСтрокаСведений = ГруппаТаблица2[НомСтроки - 1];
		УзелЧислоВремРаб = УзлыПоXPath(УзелСтрокаСведений, "@WRK_P")[0];
		
		УзелНомерСтроки = СкопированныйУзел(УзелСтрокаСведений, УзелЧислоВремРаб);
		УзелНомерСтроки.Код  = "НомСтроки";
		УзелНомерСтроки.Ключ = "П000020000101";
		УзелНомерСтроки.Значение = Формат(НомСтроки, "ЧГ=0");
		
		ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(УзелСтрокаСведений, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
	КонецЦикла;
	
	ГруппаТаблица11 = УзлыПоXPath(П.ДеревоДляЗагрузки, "/F4CALC"); // группа строк таблицы 1.1
	
	НомСтр = 0;
	ЭтоПерваяЗаполненная = Истина;
	Для НомСтроки = 0 По ГруппаТаблица11.Количество() - 1 Цикл
		УзелРасшифровкаСведений = ГруппаТаблица11[НомСтроки];
		
		ЗначениеОКВЭД = СокрЛП(УзлыПоXPath(УзелРасшифровкаСведений, "@OKVED_P")[0].Значение);
		ОКВЭДЗаполнен = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтрЗаменить(ЗначениеОКВЭД, ".", ""));
		
		Если НЕ ОКВЭДЗаполнен И НомСтроки = 0 Тогда
			УзелРасшифровкаСведений.Многострочность = Ложь;
			Для Каждого УзелПоказатель Из УзелРасшифровкаСведений.Строки Цикл
				УзелПоказатель.Ключ = СтрЗаменить(УзелПоказатель.Ключ, "П0001100001", "П00011ВСЕГО");
				УзелПоказатель.Многострочность = Ложь;
			КонецЦикла;
		ИначеЕсли ОКВЭДЗаполнен И ЭтоПерваяЗаполненная Тогда
			ЭтоПерваяЗаполненная = Ложь;
			УзелРасшифровкаСведений.Многострочность = Ложь;
			Для Каждого УзелПоказатель Из УзелРасшифровкаСведений.Строки Цикл
				УзелПоказатель.Ключ = СтрЗаменить(УзелПоказатель.Ключ, "П0001100001", "П00011ОСВЭД");
				УзелПоказатель.Многострочность = Ложь;
			КонецЦикла;
		ИначеЕсли НЕ ЭтоПерваяЗаполненная Тогда
			НомСтр = НомСтр + 1;
			
			УзелДляКопирования = УзлыПоXPath(УзелРасшифровкаСведений, "@RATE_MIS_P")[0];
			УзелНомерСтроки = СкопированныйУзел(УзелРасшифровкаСведений, УзелДляКопирования);
			УзелНомерСтроки.Код  = "НомСтроки";
			УзелНомерСтроки.Ключ = "П000110000101";
			УзелНомерСтроки.МаксРазмерность = 6;
			УзелНомерСтроки.МинРазмерность = 0;
			УзелНомерСтроки.Значение = Формат(НомСтр, "ЧГ=0");
			
			Для Каждого ИмяПоказателя Из СтрРазделить("RATE_DEC_P,RATE_INC_P,MIS_ALL_P", ",") Цикл
				УзлыДляОчисткиКлюча = УзлыПоXPath(УзелРасшифровкаСведений, "@" + ИмяПоказателя);
				Если ЗначениеЗаполнено(УзлыДляОчисткиКлюча) Тогда
					УзлыДляОчисткиКлюча[0].Ключ = "";
				КонецЕсли;
			КонецЦикла;
		Иначе
			Продолжить;
		КонецЕсли;
		
		ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(УзелРасшифровкаСведений, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтр);
	КонецЦикла;
	
	Таблица1 = Неопределено;
	
	П.ДанныеОтчета.ПоказателиОтчета.Свойство("ПолеТабличногоДокументаТаблица1", Таблица1);
	Если Таблица1 <> Неопределено Тогда
		ЗначениеПоказателя = Неопределено;
		Если Таблица1.Свойство("П000010000001", ЗначениеПоказателя) Тогда
			Таблица1.Вставить("П000010000001", ?(ЗначениеЗаполнено(ЗначениеПоказателя) И ЗначениеПоказателя <> "0", "Х", ""));
		КонецЕсли;
		Если Таблица1.Свойство("П000010000002", ЗначениеПоказателя) Тогда
			Таблица1.Вставить("П000010000002", ?(ЗначениеЗаполнено(ЗначениеПоказателя) И ЗначениеПоказателя <> "0", "Х", ""));
		КонецЕсли;
		
		Таблица1.Вставить("П000010000103", Таблица1.П000010000203 + Таблица1.П000010000303);
		Таблица1.Вставить("П000010000104", Таблица1.П000010000204 + Таблица1.П000010000304);
		Таблица1.Вставить("П000010000105", Таблица1.П000010000205 + Таблица1.П000010000305);
		Таблица1.Вставить("П000010000106", Таблица1.П000010000206 + Таблица1.П000010000306);
		
	КонецЕсли;
	
	Титульный = Неопределено;
	
	П.ДанныеОтчета.ПоказателиОтчета.Свойство("ПолеТабличногоДокументаТитульный", Титульный);
	Если Титульный <> Неопределено Тогда
		
		БюджетнаяОрганизация = Неопределено;
		П.ПараметрыОтчета.Свойство("БюджетнаяОрганизация", БюджетнаяОрганизация);
		
		Титульный.КодПодчиненности = П.ПараметрыОтчета.КодПодчиненности;
		
		Титульный.ПрекращениеДеятельности = ?(ЧислоИзСтроки(П.ПараметрыОтчета.ПрекращениеДеятельности) = 1, "Л", "");
		Титульный.БюджетнаяОрганизация    = ?(ЧислоИзСтроки(БюджетнаяОрганизация) = 0, "", БюджетнаяОрганизация);
		
		Титульный.ЧислРаботников = П.ПараметрыОтчета.ЧислРаботников;
		Титульный.ЧислФизЛицВыпл = П.ПараметрыОтчета.ЧислФизЛицВыпл;
		Титульный.ЧислИнвалидов  = П.ПараметрыОтчета.ЧислИнвалидов;
		Титульный.ЧислВред       = П.ПараметрыОтчета.ЧислВред;
		
		Титульный.ПрПодп              = П.ПараметрыОтчета.ПризнакПодписанта;
		Титульный.ОргПодписантФамилия = П.ПараметрыОтчета.ОргДиректор;
		Титульный.ДокУпПред           = П.ПараметрыОтчета.ДокументПредставителя;
		
	КонецЕсли;
	
	Если ТипЗнч(П.ДанныеОтчета.ДеревоНастройкиСтраниц) = Тип("ДеревоЗначений") Тогда
		
		СписокЗаполненныхРазделов = П.ДанныеОтчета.СписокЗаполненныхРазделов;
		Для Каждого ОписаниеСтраницыРаздела Из П.ДанныеОтчета.ДеревоНастройкиСтраниц.Строки Цикл
			Если СписокЗаполненныхРазделов.НайтиПоЗначению(ОписаниеСтраницыРаздела.ИмяСтраницы) <> Неопределено
				И НЕ ЗначениеЗаполнено(ОписаниеСтраницыРаздела.ВыводНаПечать) Тогда
				ОписаниеСтраницыРаздела.ВыводНаПечать = 1;
				// Для автоматического включения страниц и записи изменений.
				ОписаниеСтраницыРаздела.ПоказатьСтраницу = 0;
			КонецЕсли;
		КонецЦикла;
		
	КонецЕсли;
	
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = НСтр("ru='Снимите в меню ""Настройка"" флажок ""Отключить автоматический расчет вычисляемых ячеек"""
		+ " чтобы выполнить перерасчет всех рассчитываемых показателей.'");
	Сообщение.Сообщить();
	
#КонецОбласти

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