Расчетная ведомость по средствам ФСС (форма 4-ФСС) / Настройки загрузки из файла XML 2017 (кв.1) / Содержимое макета
файл // Область "Настройки" описывает параметры инициализации механизма загрузки
// регламентированных отчетов из файлов выгрузки. Формат области настроек - JSON.
//
// Описание параметров:
// * Установкой параметра "РазрешитьЗагрузку" в "true" или "false" регулируем видимость
// кнопки "Загрузить" и возможность загрузки из файла в форме отчета.
// * Параметр "ФорматыСхемВыгрузки" описывает соответствие имен макетов схем выгрузки
// поддерживаемым форматам загрузки. Если у формы единственная схема выгрузки или
// нужно всегда использовать схему по умолчанию - указываем значение "null".
// * Параметр "ОбластиОбработчиков" содержит список имен используемых обработчиков
// загружаемых данных. Имена соответствуют областям макета, в которых можно размещать
// произвольные алгоритмы на языке "1С:Предприятие" для обработки доступных объектов.
//
// Примечание:
// Сопоставление имен узлов из файла XML и имен показателей отчета выполняется по данным схемы выгрузки,
// поэтому обработчики используются для получения значений показателей не описанных в схеме выгрузки.
//
#Область Настройки
{
"РазрешитьЗагрузку" : true,
"ФорматыСхемВыгрузки" : null,
"ОбластиОбработчиков" : {
"ПередЗагрузкой" : "ПредОбработкаСхемыЗагрузки",
"ПослеЗагрузки" : "ПостОбработкаДокументаОтчета",
}
}
#КонецОбласти
// Доступны параметры:
//
// П.ДеревоДляЗагрузки - выбранное дерево схемы загрузки, не заполненное данными;
// П.ПараметрыОтчета - параметры, сформированные в форме отчета, используются для выгрузки.
//
#Область ПредОбработкаСхемыЗагрузки
#КонецОбласти
// Доступны параметры:
//
// П.ДанныеОтчета - заполненные данные документа регламентированного отчета;
// П.ДеревоДляЗагрузки - выбранное дерево схемы загрузки, не заполненное данными;
// П.ПараметрыОтчета - параметры, сформированные в форме отчета, используются для выгрузки.
//
#Область ПостОбработкаДокументаОтчета
НачалоПоследнегоМесяцаОП = НачалоМесяца(П.ДанныеОтчета.ДокументОтчета.ДатаОкончания);
НачалоПредпоследнегоМесяцаОП = НачалоМесяца(НачалоПоследнегоМесяцаОП - 1);
ЗначениеПараметра = Неопределено;
П.ПараметрыОтчета.Свойство("Табл2Стр16Месяц1", ЗначениеПараметра);
СуммаМесяц1 = ?(ЗначениеЗаполнено(ЗначениеПараметра), ЧислоИзСтроки(ЗначениеПараметра), 0);
П.ПараметрыОтчета.Свойство("Табл2Стр16Месяц2", ЗначениеПараметра);
СуммаМесяц2 = ?(ЗначениеЗаполнено(ЗначениеПараметра), ЧислоИзСтроки(ЗначениеПараметра), 0);
П.ПараметрыОтчета.Свойство("Табл2Стр16Месяц3", ЗначениеПараметра);
СуммаМесяц3 = ?(ЗначениеЗаполнено(ЗначениеПараметра), ЧислоИзСтроки(ЗначениеПараметра), 0);
ГруппыТаблица2 = УзлыПоXPath(П.ДеревоДляЗагрузки, "/F4INFO/PAYM_ORDER"); // группы строк таблицы 2
Если СуммаМесяц1 + СуммаМесяц2 + СуммаМесяц3 <> 0 Тогда
НачИндекс = 0;
НомСтроки = 0; ТекСуммаМесяц1 = 0;
Для Инд = НачИндекс По ГруппыТаблица2.Количество() - 1 Цикл
НачИндекс = НачИндекс + 1;
ГруппаРаздела = ГруппыТаблица2[Инд];
УзелСумма = УзлыПоXPath(ГруппаРаздела, "@SUM")[0];
ТекСуммаМесяц1 = ТекСуммаМесяц1 + ЧислоИзСтроки(УзелСумма.Значение);
Если ТекСуммаМесяц1 > СуммаМесяц1 Тогда
НачИндекс = Инд;
Прервать;
КонецЕсли;
НомСтроки = НомСтроки + 1;
УзелСумма.Ключ = "П000020016101";
УзлыПоXPath(ГруппаРаздела, "@NUM")[0].Ключ = "П000020016105";
УзлыПоXPath(ГруппаРаздела, "@DT" )[0].Ключ = "П000020016104";
ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(ГруппаРаздела, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
КонецЦикла;
НомСтроки = 0; ТекСуммаМесяц2 = 0;
Для Инд = НачИндекс По ГруппыТаблица2.Количество() - 1 Цикл
НачИндекс = НачИндекс + 1;
ГруппаРаздела = ГруппыТаблица2[Инд];
УзелСумма = УзлыПоXPath(ГруппаРаздела, "@SUM")[0];
ТекСуммаМесяц2 = ТекСуммаМесяц2 + ЧислоИзСтроки(УзелСумма.Значение);
Если ТекСуммаМесяц2 > СуммаМесяц2 Тогда
НачИндекс = Инд;
Прервать;
КонецЕсли;
НомСтроки = НомСтроки + 1;
УзелСумма.Ключ = "П000020016201";
УзлыПоXPath(ГруппаРаздела, "@NUM")[0].Ключ = "П000020016205";
УзлыПоXPath(ГруппаРаздела, "@DT" )[0].Ключ = "П000020016204";
ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(ГруппаРаздела, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
КонецЦикла;
НомСтроки = 0; ТекСуммаМесяц3 = 0;
Для Инд = НачИндекс По ГруппыТаблица2.Количество() - 1 Цикл
НачИндекс = НачИндекс + 1;
ГруппаРаздела = ГруппыТаблица2[Инд];
УзелСумма = УзлыПоXPath(ГруппаРаздела, "@SUM")[0];
ТекСуммаМесяц3 = ТекСуммаМесяц3 + ЧислоИзСтроки(УзелСумма.Значение);
Если ТекСуммаМесяц3 > СуммаМесяц3 Тогда
НачИндекс = Инд;
Прервать;
КонецЕсли;
НомСтроки = НомСтроки + 1;
УзелСумма.Ключ = "П000020016301";
УзлыПоXPath(ГруппаРаздела, "@NUM")[0].Ключ = "П000020016305";
УзлыПоXPath(ГруппаРаздела, "@DT" )[0].Ключ = "П000020016304";
ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(ГруппаРаздела, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
КонецЦикла;
Иначе
НомСтроки = 0;
Для Каждого ГруппаРаздела Из ГруппыТаблица2 Цикл
УзелДата = УзлыПоXPath(ГруппаРаздела, "@DT" )[0];
Если ДатаИзСтрокиЛюбогоФормата(УзелДата.Значение) >= НачалоПредпоследнегоМесяцаОП Тогда
Продолжить;
КонецЕсли;
НомСтроки = НомСтроки + 1;
УзелДата.Ключ = "П000020016104";
УзлыПоXPath(ГруппаРаздела, "@NUM")[0].Ключ = "П000020016105";
УзлыПоXPath(ГруппаРаздела, "@SUM")[0].Ключ = "П000020016101";
ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(ГруппаРаздела, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
КонецЦикла;
НомСтроки = 0;
Для Каждого ГруппаРаздела Из ГруппыТаблица2 Цикл
УзелДата = УзлыПоXPath(ГруппаРаздела, "@DT" )[0];
Если ДатаИзСтрокиЛюбогоФормата(УзелДата.Значение) < НачалоПредпоследнегоМесяцаОП
ИЛИ ДатаИзСтрокиЛюбогоФормата(УзелДата.Значение) >= НачалоПоследнегоМесяцаОП Тогда
Продолжить;
КонецЕсли;
НомСтроки = НомСтроки + 1;
УзелДата.Ключ = "П000020016204";
УзлыПоXPath(ГруппаРаздела, "@NUM")[0].Ключ = "П000020016205";
УзлыПоXPath(ГруппаРаздела, "@SUM")[0].Ключ = "П000020016201";
ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(ГруппаРаздела, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
КонецЦикла;
НомСтроки = 0;
Для Каждого ГруппаРаздела Из ГруппыТаблица2 Цикл
УзелДата = УзлыПоXPath(ГруппаРаздела, "@DT" )[0];
Если ДатаИзСтрокиЛюбогоФормата(УзелДата.Значение) < НачалоПоследнегоМесяцаОП Тогда
Продолжить;
КонецЕсли;
НомСтроки = НомСтроки + 1;
УзелДата.Ключ = "П000020016304";
УзлыПоXPath(ГруппаРаздела, "@NUM")[0].Ключ = "П000020016305";
УзлыПоXPath(ГруппаРаздела, "@SUM")[0].Ключ = "П000020016301";
ЗаполнитьДаннымиСохраненныйДокументИзДереваДляЗагрузки(ГруппаРаздела, П.ДанныеОтчета, П.ПараметрыОтчета, , , НомСтроки);
КонецЦикла;
КонецЕсли;
ГруппаТаблица11 = УзлыПоXPath(П.ДеревоДляЗагрузки, "/F4DOGOV"); // группа строк таблицы 1.1
Для НомСтроки = 1 По ГруппаТаблица11.Количество() Цикл
УзелСтрокаСведений = ГруппаТаблица11[НомСтроки - 1];
УзелЧислоВремРаб = УзлыПоXPath(УзелСтрокаСведений, "@WRK_P")[0];
УзелНомерСтроки = СкопированныйУзел(УзелСтрокаСведений, УзелЧислоВремРаб);
УзелНомерСтроки.Код = "НомСтроки";
УзелНомерСтроки.Ключ = "П000110000101";
УзелНомерСтроки.Значение = Формат(НомСтроки, "ЧГ=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);
П000010000903 = Окр(Таблица1.П000010000503 * (1 - Таблица1.П000010000603 / 100 + Таблица1.П000010000703 / 100), 2);
Таблица1.Вставить("П000010000903", П000010000903);
КонецЕсли;
Титульный = Неопределено;
П.ДанныеОтчета.ПоказателиОтчета.Свойство("ПолеТабличногоДокументаТитульный", Титульный);
Если Титульный <> Неопределено Тогда
Титульный.КодПодчиненности = П.ПараметрыОтчета.КодПодчиненности;
Титульный.НомДопРасчета = ?(ЧислоИзСтроки(П.ПараметрыОтчета.НомДопРасчета) = 0, "", Прав("00" + П.ПараметрыОтчета.НомДопРасчета, 2));
Титульный.ПрекращениеДеятельности = ?(ЧислоИзСтроки(П.ПараметрыОтчета.ПрекращениеДеятельности) = 1, "Л", "");
Титульный.ЧислРаботников = П.ПараметрыОтчета.ЧислРаботников;
Титульный.ЧислИнвалидов = П.ПараметрыОтчета.ЧислИнвалидов;
Титульный.ЧислВред = П.ПараметрыОтчета.ЧислВред;
Титульный.ПрПодп = П.ПараметрыОтчета.ПризнакПодписанта;
Титульный.ОргПодписантФамилия = П.ПараметрыОтчета.ОргДиректор;
Титульный.ДокУпПред = П.ПараметрыОтчета.ДокументПредставителя;
КонецЕсли;
Если ТипЗнч(П.ДанныеОтчета.ДеревоНастройкиСтраниц) = Тип("ДеревоЗначений") Тогда
СписокЗаполненныхРазделов = П.ДанныеОтчета.СписокЗаполненныхРазделов;
Для Каждого ОписаниеСтраницыРаздела Из П.ДанныеОтчета.ДеревоНастройкиСтраниц.Строки Цикл
Если СписокЗаполненныхРазделов.НайтиПоЗначению(ОписаниеСтраницыРаздела.ИмяСтраницы) <> Неопределено
И НЕ ЗначениеЗаполнено(ОписаниеСтраницыРаздела.ВыводНаПечать) Тогда
ОписаниеСтраницыРаздела.ВыводНаПечать = 1;
// Для автоматического включения страниц и записи изменений.
ОписаниеСтраницыРаздела.ПоказатьСтраницу = 0;
КонецЕсли;
КонецЦикла;
КонецЕсли;
#КонецОбласти