#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
УстановитьЗначенияПараметров(НастройкиОтчета);
ДокументРезультат.Очистить();
КлючВарианта = ЗарплатаКадрыОтчеты.КлючВарианта(КомпоновщикНастроек);
Если КлючВарианта = "ЧисленностьРаботающихИЗабронированныхГражданЗапаса" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЧисленностьРаботающихИЗабронированныхГражданЗапаса";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетЧисленностьРаботающихИЗабронированныхГражданЗапаса(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "ЧисленностьРаботающихИЗабронированныхГражданЗапаса2015" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЧисленностьРаботающихИЗабронированныхГражданЗапаса2015";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетЧисленностьРаботающихИЗабронированныхГражданЗапаса2015(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "ДонесениеОКоличествеГражданВЗапасе" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ДонесениеОКоличествеГражданВЗапасе";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетДонесениеОКоличествеГражданВЗапасе(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "АнализОбеспеченностиТрудовымиРесурсами" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АнализОбеспеченностиТрудовымиРесурсами";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетАнализОбеспеченностиТрудовымиРесурсами(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "СведенияОбОбеспеченностиТрудовымиРесурсами" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СведенияОбОбеспеченностиТрудовымиРесурсами";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетСведенияОбОбеспеченностиТрудовымиРесурсами(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "ЧисленностьРаботающихИЗабронированныхГражданПребывающихВЗапасе" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЧисленностьРаботающихИЗабронированныхГражданПребывающихВЗапасе";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетЧисленностьРаботающихИЗабронированныхГражданПребывающихВЗапасе(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ИнициализироватьОтчет() Экспорт
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект);
КонецПроцедуры
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
КонецПроцедуры
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
Если КлючСхемы <> КлючВарианта Тогда
ИнициализироватьОтчет();
ОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы);
КлючСхемы = КлючВарианта;
КонецЕсли;
КонецПроцедуры
Процедура ВывестиМакетЧисленностьРаботающихИЗабронированныхГражданЗапаса(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_ЧисленностьРаботающихИЗабронированныхГражданЗапаса");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
Итоги = Макет.ПолучитьОбласть("Итоги");
ИспользуетсяТрудПлавсостава = ПолучитьФункциональнуюОпцию("ИспользуетсяТрудПлавсостава");
ИспользуетсяТрудЛетноПодъемногоСостава = ПолучитьФункциональнуюОпцию("ИспользуетсяТрудЛетноПодъемногоСостава");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыЗаголовка);
ЗаполнитьЗначенияСвойств(Подвал.Параметры, ПараметрыЗаголовка);
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
СтрокиОтчета = СформироватьТаблицуСтрокиОтчета();
ЗаполнитьЗначенияСвойств(Итоги.Параметры, ДанныеОрганизации);
Для Каждого СтрокаГруппировки Из ДанныеОрганизации.Строки Цикл
Если ЗначениеЗаполнено(СтрокаГруппировки.ФизическоеЛицо) Тогда
Прервать;
КонецЕсли;
Если ИспользуетсяТрудПлавсостава И СтрокаГруппировки.Плавсостав = Истина Тогда
ЗаполнитьЗначенияСвойств(СтрокиОтчета[21], СтрокаГруппировки);
ИначеЕсли ИспользуетсяТрудЛетноПодъемногоСостава И СтрокаГруппировки.ЛетноПодъемныйСостав = Истина Тогда
ЗаполнитьЗначенияСвойств(СтрокиОтчета[20], СтрокаГруппировки);
Иначе
ЗаполнитьДанныеГруппировки(СтрокаГруппировки, СтрокиОтчета);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаОтчета Из СтрокиОтчета Цикл
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, СтрокаОтчета);
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ДокументРезультат.Вывести(Итоги);
ЗаполнитьПодписантов(Подвал, ДанныеОрганизации.Организация, ДатаОтчета);
ДокументРезультат.Вывести(Подвал);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьДанныеГруппировки(СтрокаГруппировки, СтрокиОтчета)
СтрокаОтчета = СтрокиОтчета.Найти(СтрокаГруппировки.КатегорияВоинскогоУчета, "Категория");
Если СтрокаОтчета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаОтчета, СтрокаГруппировки);
КонецЕсли;
Для Каждого ТекСтрока Из СтрокаГруппировки.Строки Цикл
СтрокаОтчета = СтрокиОтчета.Найти(ТекСтрока.КатегорияУчетаЗабронированных, "Категория");
Если СтрокаОтчета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаОтчета, ТекСтрока);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОписаниеСтрокиДанных(ТДанных, НомерСтрокиОтчета, ИмяСтрокиОтчета, Категория)
Строка = ТДанных.Добавить();
Строка.НомерСтрокиОтчета = НомерСтрокиОтчета;
Строка.ИмяСтрокиОтчета = ИмяСтрокиОтчета;
Строка.Категория = Категория;
КонецПроцедуры
Функция СформироватьТаблицуСтрокиОтчета()
ТДанных = Новый ТаблицаЗначений;
ТДанных.Колонки.Добавить("НомерСтрокиОтчета", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
ТДанных.Колонки.Добавить("ИмяСтрокиОтчета", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
ТДанных.Колонки.Добавить("Категория", Новый ОписаниеТипов("ПеречислениеСсылка.КатегорииДолжностейДляВоинскогоУчета, ПеречислениеСсылка.КатегорииДолжностейДляУчетаЗабронированных"));
ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15));
ТДанных.Колонки.Добавить("ВсегоРаботающих", ТипЧисло);
ТДанных.Колонки.Добавить("ВсегоВЗапасе", ТипЧисло);
ТДанных.Колонки.Добавить("ОфицеровВЗапасе", ТипЧисло);
ТДанных.Колонки.Добавить("ПрапорщиковИСолдатВЗапасе", ТипЧисло);
ТДанных.Колонки.Добавить("ПрапорщиковСолдатОграниченноГодныхВЗапасе", ТипЧисло);
ТДанных.Колонки.Добавить("ВсегоВЗапасеЗабронировано", ТипЧисло);
ТДанных.Колонки.Добавить("ОфицеровЗабронировано", ТипЧисло);
ТДанных.Колонки.Добавить("ПрапорщиковСолдатЗабронировано", ТипЧисло);
ТДанных.Колонки.Добавить("НезабронированоБезМобпредписаний", ТипЧисло);
ТДанных.Колонки.Добавить("ВЗапасеСМобпредписанием", ТипЧисло);
ТДанных.Колонки.Добавить("Призывников", ТипЧисло);
КатегорииВоинскогоУчета = Перечисления.КатегорииДолжностейДляВоинскогоУчета;
КатегорииУчетаЗабронированных = Перечисления.КатегорииДолжностейДляУчетаЗабронированных;
ОписаниеСтрокиДанных(ТДанных, "1", НСтр("ru='Руководители'"), КатегорииВоинскогоУчета.Руководители);
ОписаниеСтрокиДанных(ТДанных, "2", НСтр("ru='Специалисты - всего, из них по основным видам деятельности'"), КатегорииВоинскогоУчета.Специалисты);
ОписаниеСтрокиДанных(ТДанных, "3", НСтр("ru='А Сельское хозяйство'"), КатегорииУчетаЗабронированных.СпециалистыСХ);
ОписаниеСтрокиДанных(ТДанных, "4", НСтр("ru='C Добыча полезных ископаемых'"), КатегорииУчетаЗабронированных.СпециалистыПолезныеИскопаемые);
ОписаниеСтрокиДанных(ТДанных, "5", НСтр("ru='D Обрабатывающие производства'"), КатегорииУчетаЗабронированных.СпециалистыОбрабатывающиеПроизводства);
ОписаниеСтрокиДанных(ТДанных, "6", НСтр("ru='E Производство и распределение электроэнергии, газа и воды'"), КатегорииУчетаЗабронированных.СпециалистыПроизводствоЭлектроэнергии);
ОписаниеСтрокиДанных(ТДанных, "7", НСтр("ru='F Строительство'"), КатегорииУчетаЗабронированных.СпециалистыСтроительство);
ОписаниеСтрокиДанных(ТДанных, "8", НСтр("ru='I Транспорт и связь'"), КатегорииУчетаЗабронированных.СпециалистыТранспорт);
ОписаниеСтрокиДанных(ТДанных, "9", НСтр("ru='M Образование'"), КатегорииУчетаЗабронированных.СпециалистыОбразования);
ОписаниеСтрокиДанных(ТДанных, "10", НСтр("ru='N Здравоохранение и предоставление социальных услуг'"), КатегорииУчетаЗабронированных.СпециалистыЗдравоохранение);
ОписаниеСтрокиДанных(ТДанных, "11", НСтр("ru='прочие виды экономической деятельности'"), КатегорииУчетаЗабронированных.ПрочиеСпециалисты);
ОписаниеСтрокиДанных(ТДанных, "12", НСтр("ru='Другие служащие'"), КатегорииВоинскогоУчета.ДругиеСлужащие);
ОписаниеСтрокиДанных(ТДанных, "13", НСтр("ru='Рабочие - всего'"), КатегорииВоинскогоУчета.Рабочие);
ОписаниеСтрокиДанных(ТДанных, "14", НСтр("ru='в том числе: имеющие тарифные разряды'"), КатегорииУчетаЗабронированных.РабочиеИмеющиеТарифныйРазряд);
ОписаниеСтрокиДанных(ТДанных, "15", НСтр("ru='не имеющие тарифных разрядов'"), КатегорииУчетаЗабронированных.РабочиеНеИмеющиеТарифныхРазрядов);
ОписаниеСтрокиДанных(ТДанных, "16", НСтр("ru='сельскохозяйственного производства'"), КатегорииУчетаЗабронированных.РабочиеСХ);
ОписаниеСтрокиДанных(ТДанных, "17", НСтр("ru='локомотивных бригад'"), КатегорииУчетаЗабронированных.РабочиеЛокомотивныхБригад);
ОписаниеСтрокиДанных(ТДанных, "18", НСтр("ru='водители'"), КатегорииУчетаЗабронированных.Водители);
ОписаниеСтрокиДанных(ТДанных, "19", НСтр("ru='трактористы'"), КатегорииУчетаЗабронированных.Трактористы);
ОписаниеСтрокиДанных(ТДанных, " ", НСтр("ru='Из численности руководителей, специалистов и рабочих:'"), Неопределено);
ОписаниеСтрокиДанных(ТДанных, "20", НСтр("ru='летно-подъемный состав'"), Неопределено);
ОписаниеСтрокиДанных(ТДанных, "21", НСтр("ru='плавающий состав'"), Неопределено);
Возврат ТДанных;
КонецФункции
Процедура ВывестиМакетЧисленностьРаботающихИЗабронированныхГражданЗапаса2015(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Если ДатаОтчета >= '20170101' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_ЧисленностьРаботающихИЗабронированныхГражданЗапаса2017");
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_ЧисленностьРаботающихИЗабронированныхГражданЗапаса2015");
КонецЕсли;
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
Итоги = Макет.ПолучитьОбласть("Итоги");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыЗаголовка);
ЗаполнитьЗначенияСвойств(Подвал.Параметры, ПараметрыЗаголовка);
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
СтрокиОтчета = СформироватьТаблицуСтрокиОтчета2015();
ЗаполнитьЗначенияСвойств(Итоги.Параметры, ДанныеОрганизации);
Для Каждого СтрокаГруппировки Из ДанныеОрганизации.Строки Цикл
СтрокаОтчета = СтрокиОтчета.Найти(СтрокаГруппировки.КатегорияВоинскогоУчета, "Категория");
Если СтрокаОтчета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаОтчета, СтрокаГруппировки);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаОтчета Из СтрокиОтчета Цикл
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, СтрокаОтчета);
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ДокументРезультат.Вывести(Итоги);
ЗаполнитьПодписантов(Подвал, ДанныеОрганизации.Организация, ДатаОтчета);
ДокументРезультат.Вывести(Подвал);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецПроцедуры
Функция СформироватьТаблицуСтрокиОтчета2015()
СтрокиОтчета = Новый ТаблицаЗначений;
СтрокиОтчета.Колонки.Добавить("ИмяСтрокиОтчета", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
СтрокиОтчета.Колонки.Добавить("Категория", Новый ОписаниеТипов("ПеречислениеСсылка.КатегорииДолжностейДляВоинскогоУчета"));
ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15));
СтрокиОтчета.Колонки.Добавить("ВсегоРаботающих", ТипЧисло);
СтрокиОтчета.Колонки.Добавить("ВсегоВЗапасе", ТипЧисло);
СтрокиОтчета.Колонки.Добавить("ОфицеровВЗапасе", ТипЧисло);
СтрокиОтчета.Колонки.Добавить("ПрапорщиковИСолдатВЗапасе", ТипЧисло);
СтрокиОтчета.Колонки.Добавить("ВсегоВЗапасеЗабронировано", ТипЧисло);
СтрокиОтчета.Колонки.Добавить("ОфицеровЗабронировано", ТипЧисло);
СтрокиОтчета.Колонки.Добавить("ПрапорщиковСолдатЗабронировано", ТипЧисло);
КатегорииВоинскогоУчета = Перечисления.КатегорииДолжностейДляВоинскогоУчета;
НоваяСтрока = СтрокиОтчета.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Руководители'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.Руководители;
НоваяСтрока = СтрокиОтчета.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Специалисты'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.Специалисты;
НоваяСтрока = СтрокиОтчета.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Служащие'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.ДругиеСлужащие;
НоваяСтрока = СтрокиОтчета.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Рабочие'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.Рабочие;
Возврат СтрокиОтчета;
КонецФункции
Процедура ВывестиМакетДонесениеОКоличествеГражданВЗапасе(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_ДонесениеОКоличествеГражданВЗапасе");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыЗаголовка);
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, ДанныеОрганизации);
СтрокаТаблицы.Параметры.ЗабронированоПроцент = ?(ЗначениеЗаполнено(ДанныеОрганизации.ВсегоВЗапасе), ДанныеОрганизации.ВсегоВЗапасеЗабронировано * 100 / ДанныеОрганизации.ВсегоВЗапасе, 0);
СтрокаТаблицы.Параметры.НезабронированоСМобпредписаниемПроцент = ?(ЗначениеЗаполнено(ДанныеОрганизации.ВсегоВЗапасе), ДанныеОрганизации.НезабронированоСМобпредписанием * 100 / ДанныеОрганизации.ВсегоВЗапасе, 0);
ДокументРезультат.Вывести(СтрокаТаблицы);
ЗаполнитьЗначенияСвойств(Подвал.Параметры, ПараметрыЗаголовка);
ЗаполнитьПодписантов(Подвал, ДанныеОрганизации.Организация, ДатаОтчета);
ДокументРезультат.Вывести(Подвал);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетАнализОбеспеченностиТрудовымиРесурсами(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_АнализОбеспеченностиТрудовымиРесурсами");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыЗаголовка);
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
СтрокиОтчета = СформироватьТаблицуКатегорийДолжностей();
СтрокаИтог = СтрокиОтчета[5];
ЗаполнитьПлановыеДанныеПоОрганизации(СтрокиОтчета, ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(СтрокаИтог, ДанныеОрганизации);
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
Если ТекСтрока.КатегорияУчетаЗабронированных = Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Водители Тогда
СтрокаОтчета = СтрокиОтчета[4];
Иначе
СтрокаОтчета = СтрокиОтчета.Найти(ТекСтрока.КатегорияВоинскогоУчета, "Категория");
КонецЕсли;
Если СтрокаОтчета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаОтчета, ТекСтрока);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаОтчета Из СтрокиОтчета Цикл
СтрокаОтчета.ИзбытокНекомплект = СтрокаОтчета.ОстаетсяРаботать - СтрокаОтчета.Потребность;
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, СтрокаОтчета);
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
Если ДанныеОрганизации.Строки.Количество() > 0 Тогда
Подвал.Параметры.ПроцентОбеспеченности = 100 + ?(ЗначениеЗаполнено(СтрокаИтог.Потребность), СтрокаИтог.ИзбытокНекомплект / СтрокаИтог.Потребность, 0) * 100;
КонецЕсли;
ЗаполнитьЗначенияСвойств(Подвал.Параметры, ПараметрыЗаголовка);
ЗаполнитьПодписантов(Подвал, ДанныеОрганизации.Организация, ДатаОтчета);
ДокументРезультат.Вывести(Подвал);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьПлановыеДанныеПоОрганизации(СтрокиОтчета, Организация, ДатаОтчета)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Период", ДатаОтчета);
Запрос.Текст = "ВЫБРАТЬ
| ПотребностьВСпециалистахНаПериодМобилизации.КатегорияВоинскогоУчета КАК Категория,
| ПотребностьВСпециалистахНаПериодМобилизации.Количество КАК Потребность
|ИЗ
| РегистрСведений.ПотребностьВСпециалистахНаПериодМобилизации КАК ПотребностьВСпециалистахНаПериодМобилизации
|ГДЕ
| ПотребностьВСпециалистахНаПериодМобилизации.Организация = &Организация
| И ПотребностьВСпециалистахНаПериодМобилизации.Год = ГОД(&Период)";
Выборка = Запрос.Выполнить().Выбрать();
СтрокаИтог = СтрокиОтчета[5];
ПотребностьИтог = 0;
Водители = Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Водители;
Пока Выборка.Следующий() Цикл
СтрокаОтчета = СтрокиОтчета.Найти(Выборка.Категория, "Категория");
Если СтрокаОтчета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаОтчета, Выборка);
ПотребностьИтог = ?(Выборка.Категория = Водители, ПотребностьИтог, ПотребностьИтог + Выборка.Потребность);
КонецЕсли;
КонецЦикла;
СтрокаИтог.Потребность = ПотребностьИтог;
КонецПроцедуры
Функция СформироватьТаблицуКатегорийДолжностей()
ТДанных = Новый ТаблицаЗначений;
ТДанных.Колонки.Добавить("НомерСтрокиОтчета", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
ТДанных.Колонки.Добавить("ИмяСтрокиОтчета", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
ТДанных.Колонки.Добавить("Категория", Новый ОписаниеТипов("ПеречислениеСсылка.КатегорииДолжностейДляВоинскогоУчета, ПеречислениеСсылка.КатегорииДолжностейДляУчетаЗабронированных"));
ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15));
ТДанных.Колонки.Добавить("ВсегоРаботающих", ТипЧисло);
ТДанных.Колонки.Добавить("ВсегоВЗапасе", ТипЧисло);
ТДанных.Колонки.Добавить("ВЗапасеСМобПредписанием", ТипЧисло);
ТДанных.Колонки.Добавить("ОстаетсяРаботать", ТипЧисло);
ТДанных.Колонки.Добавить("Потребность", ТипЧисло);
ТДанных.Колонки.Добавить("ИзбытокНекомплект", ТипЧисло);
Категории = Перечисления.КатегорииДолжностейДляВоинскогоУчета;
ОписаниеСтрокиДанных(ТДанных, "1", НСтр("ru='Руководители'"), Категории.Руководители);
ОписаниеСтрокиДанных(ТДанных, "2", НСтр("ru='Специалисты'"), Категории.Специалисты);
ОписаниеСтрокиДанных(ТДанных, "3", НСтр("ru='Другие служащие'"), Категории.ДругиеСлужащие);
ОписаниеСтрокиДанных(ТДанных, "4", НСтр("ru='Рабочие'"), Категории.Рабочие);
ОписаниеСтрокиДанных(ТДанных, "5", " " + НСтр("ru='из них водители'"), Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Водители);
ОписаниеСтрокиДанных(ТДанных, "6", НСтр("ru='ВСЕГО'"), Неопределено);
Возврат ТДанных;
КонецФункции
Процедура ВывестиМакетСведенияОбОбеспеченностиТрудовымиРесурсами(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Если ДатаОтчета >= '20170101' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_СведенияОбОбеспеченностиТрудовымиРесурсами2017");
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_СведенияОбОбеспеченностиТрудовымиРесурсами");
КонецЕсли;
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыЗаголовка);
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
СтрокиОтчета = ТаблицаСведенийОбОбеспеченностиТрудовымиРесурсами();
СтрокаИтог = СтрокиОтчета[5];
ЗаполнитьПлановыеДанныеПоОрганизации(СтрокиОтчета, ДанныеОрганизации.Организация, ДатаОтчета);
ЗаполнитьЗначенияСвойств(СтрокаИтог, ДанныеОрганизации);
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
Если ТекСтрока.КатегорияУчетаЗабронированных = Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Водители Тогда
СтрокаОтчета = СтрокиОтчета[4];
Иначе
СтрокаОтчета = СтрокиОтчета.Найти(ТекСтрока.КатегорияВоинскогоУчета, "Категория");
КонецЕсли;
Если СтрокаОтчета <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаОтчета, ТекСтрока);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаОтчета Из СтрокиОтчета Цикл
СтрокаОтчета.ИзбытокНекомплект = СтрокаОтчета.ОстаетсяРаботать - СтрокаОтчета.Потребность;
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, СтрокаОтчета);
СтрокаТаблицы.Параметры.ПроцентОбеспеченности = 100 + ?(ЗначениеЗаполнено(СтрокаОтчета.Потребность), СтрокаОтчета.ИзбытокНекомплект / СтрокаОтчета.Потребность, 0) * 100;
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ЗаполнитьЗначенияСвойств(Подвал.Параметры, ПараметрыЗаголовка);
ЗаполнитьПодписантов(Подвал, ДанныеОрганизации.Организация, ДатаОтчета);
ДокументРезультат.Вывести(Подвал);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецПроцедуры
Функция ТаблицаСведенийОбОбеспеченностиТрудовымиРесурсами()
ТаблицаСведений = Новый ТаблицаЗначений;
ТаблицаСведений.Колонки.Добавить("ИмяСтрокиОтчета", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)));
ТаблицаСведений.Колонки.Добавить("Категория", Новый ОписаниеТипов("ПеречислениеСсылка.КатегорииДолжностейДляВоинскогоУчета, ПеречислениеСсылка.КатегорииДолжностейДляУчетаЗабронированных"));
ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15));
ТаблицаСведений.Колонки.Добавить("ВсегоРаботающих", ТипЧисло);
ТаблицаСведений.Колонки.Добавить("ВсегоВЗапасе", ТипЧисло);
ТаблицаСведений.Колонки.Добавить("ВЗапасеСМобпредписанием", ТипЧисло);
ТаблицаСведений.Колонки.Добавить("ВсегоВЗапасеЗабронировано", ТипЧисло);
ТаблицаСведений.Колонки.Добавить("ОстаетсяРаботать", ТипЧисло);
ТаблицаСведений.Колонки.Добавить("Потребность", ТипЧисло);
ТаблицаСведений.Колонки.Добавить("ИзбытокНекомплект", ТипЧисло);
Категории = Перечисления.КатегорииДолжностейДляВоинскогоУчета;
НоваяСтрока = ТаблицаСведений.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Руководители'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.Руководители;
НоваяСтрока = ТаблицаСведений.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Специалисты'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.Специалисты;
НоваяСтрока = ТаблицаСведений.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Служащие'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.ДругиеСлужащие;
НоваяСтрока = ТаблицаСведений.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Рабочие'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляВоинскогоУчета.Рабочие;
НоваяСтрока = ТаблицаСведений.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='из них водители'");
НоваяСтрока.Категория = Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Водители;
НоваяСтрока = ТаблицаСведений.Добавить();
НоваяСтрока.ИмяСтрокиОтчета = НСтр("ru='Всего'");
Возврат ТаблицаСведений;
КонецФункции
#Область ЧисленностьРаботающихИЗабронированныхГражданПребывающихВЗапасе
Процедура ВывестиМакетЧисленностьРаботающихИЗабронированныхГражданПребывающихВЗапасе(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетБронирование.ПФ_MXL_ЧисленностьРаботающихИЗабронированныхГражданПребывающихВЗапасе");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
ОбластьДата = Макет.ПолучитьОбласть("ДатаОтчета");
Подвал = Макет.ПолучитьОбласть("Подвал");
Организации = ОбщегоНазначения.ВыгрузитьКолонку(ДанныеОтчета.Строки, "Организация");
ПараметрыОрганизаций = СведенияОбОрганизациях(Организации, ДатаОтчета);
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
ПараметрыОрганизации = ПараметрыОрганизаций.Найти(ДанныеОрганизации.Организация);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыОрганизации);
ДокументРезультат.Вывести(Заголовок);
ОбластьДата.Параметры.ДатаОтчета = Формат(ДатаОтчета, "ДЛФ=Д");
ДокументРезультат.Вывести(ОбластьДата);
ДокументРезультат.Вывести(Шапка);
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, ДанныеОрганизации);
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, ПараметрыОрганизации);
СтрокаТаблицы.Параметры.НаименованиеОрганизации = ПараметрыОрганизации.НаименованиеПолное;
Если ЗначениеЗаполнено(ПараметрыОрганизации.НаименованиеСокращенное)
И СокрЛП(ПараметрыОрганизации.НаименованиеСокращенное) <> СокрЛП(ПараметрыОрганизации.НаименованиеПолное) Тогда
СтрокаТаблицы.Параметры.НаименованиеОрганизации = СтрокаТаблицы.Параметры.НаименованиеОрганизации
+ Символы.ПС + "(" + ПараметрыОрганизации.НаименованиеСокращенное + ")";
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыОрганизации.ПериодРегистрации) Тогда
СтрокаТаблицы.Параметры.КПП = СтрокаТаблицы.Параметры.КПП
+ Символы.ПС + Формат(ПараметрыОрганизации.ПериодРегистрации, "ДЛФ=Д");
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыОрганизации.НормаБронирования) Тогда
СтрокаТаблицы.Параметры.НормаБронирования = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %", ПараметрыОрганизации.НормаБронирования);
КонецЕсли;
ДокументРезультат.Вывести(СтрокаТаблицы);
ЗаполнитьПодписантов(Подвал, ДанныеОрганизации.Организация, ДатаОтчета);
ДокументРезультат.Вывести(Подвал);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;
КонецПроцедуры
#КонецОбласти
Процедура УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета)
ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
Если ЗначениеПараметраПериод <> Неопределено Тогда
УстановитьДатуОтчета = Ложь;
Если ТипЗнч(ЗначениеПараметраПериод.Значение) = Тип("Неопределено") Тогда
УстановитьДатуОтчета = Истина;
КонецЕсли;
Если ТипЗнч(ЗначениеПараметраПериод.Значение) = Тип("Дата")
И ЗначениеПараметраПериод.Значение = '00010101' Тогда
УстановитьДатуОтчета = Истина;
КонецЕсли;
Если ТипЗнч(ЗначениеПараметраПериод.Значение) = Тип("СтандартнаяДатаНачала")
И Дата(ЗначениеПараметраПериод.Значение) = '00010101' Тогда
УстановитьДатуОтчета = Истина;
КонецЕсли;
Если УстановитьДатуОтчета Тогда
ЗначениеПараметраПериод.Значение = ТекущаяДатаСеанса();
КонецЕсли;
ДатаОтчета = Дата(ЗначениеПараметраПериод.Значение);
КонецЕсли;
КонецПроцедуры
Процедура УстановитьЗначенияПараметров(НастройкиОтчета)
Специалисты = Новый Массив;
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыЗдравоохранение);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыОбрабатывающиеПроизводства);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыОбразования);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыПолезныеИскопаемые);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыПроизводствоЭлектроэнергии);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыСтроительство);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыСХ);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.СпециалистыТранспорт);
Специалисты.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.ПрочиеСпециалисты);
Рабочие = Новый Массив;
Рабочие.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.РабочиеИмеющиеТарифныйРазряд);
Рабочие.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.РабочиеЛокомотивныхБригад);
Рабочие.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.РабочиеНеИмеющиеТарифныхРазрядов);
Рабочие.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.РабочиеСХ);
Рабочие.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Трактористы);
Рабочие.Добавить(Перечисления.КатегорииДолжностейДляУчетаЗабронированных.Водители);
ПараметрСпециалисты = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Специалисты"));
Если ПараметрСпециалисты <> Неопределено Тогда
ПараметрСпециалисты.Значение = Специалисты;
ПараметрСпециалисты.Использование = Истина;
КонецЕсли;
ПараметрРабочие = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Рабочие"));
Если ПараметрРабочие <> Неопределено Тогда
ПараметрРабочие.Значение = Рабочие;
ПараметрРабочие.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Функция ПараметрыЗаголовкаСтруктура(Организация, ДатаОтчета)
ПараметрыЗаголовка = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "Наименование, НаименованиеПолное");
ПолноеНаименованиеОрганизации = ?(ЗначениеЗаполнено(ПараметрыЗаголовка.НаименованиеПолное), ПараметрыЗаголовка.НаименованиеПолное, ПараметрыЗаголовка.Наименование);
ПараметрыЗаголовка.Вставить("ДатаОтчета", ДатаОтчета);
ПараметрыЗаголовка.Вставить("Организация", Организация);
ПараметрыЗаголовка.Вставить("ПолноеНаименованиеОрганизации", ПолноеНаименованиеОрганизации);
Возврат ПараметрыЗаголовка;
КонецФункции
Процедура ЗаполнитьПодписантов(Макет, Организация, ДатаОтчета)
ПараметрыЗаполнения = Новый Структура("ДолжностьРуководителя,Руководитель,РуководительРасшифровкаПодписи");
КлючиОтветственныхЛиц = "";
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрРуководитель = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Руководитель"));
Если ПараметрРуководитель <> Неопределено И ПараметрРуководитель.Использование Тогда
Если ЗначениеЗаполнено(ПараметрРуководитель.Значение) Тогда
ПараметрыЗаполнения.Руководитель = ПараметрРуководитель.Значение;
КонецЕсли;
Иначе
КлючиОтветственныхЛиц = "Руководитель";
КонецЕсли;
ПараметрДолжностьРуководителя = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДолжностьРуководителя"));
Если ПараметрДолжностьРуководителя <> Неопределено И ПараметрДолжностьРуководителя.Использование Тогда
ПараметрыЗаполнения.ДолжностьРуководителя = ПараметрДолжностьРуководителя.Значение;
Иначе
КлючиОтветственныхЛиц = ?(ПустаяСтрока(КлючиОтветственныхЛиц), "", КлючиОтветственныхЛиц + ",") + "ДолжностьРуководителя,ДолжностьРуководителяСтрокой";
КонецЕсли;
Если Не ПустаяСтрока(КлючиОтветственныхЛиц) Тогда
ОтветственныеЛица = Новый Структура("Организация," + КлючиОтветственныхЛиц, Организация);
ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ОтветственныеЛица, ДатаОтчета);
ЗаполнитьЗначенияСвойств(ПараметрыЗаполнения, ОтветственныеЛица);
Если ОтветственныеЛица.Свойство("ДолжностьРуководителя") И ЗначениеЗаполнено(ОтветственныеЛица.ДолжностьРуководителя) Тогда
ПараметрыЗаполнения.ДолжностьРуководителя = Строка(ОтветственныеЛица.ДолжностьРуководителя);
КонецЕсли;
Если ОтветственныеЛица.Свойство("ДолжностьРуководителяСтрокой") И ЗначениеЗаполнено(ОтветственныеЛица.ДолжностьРуководителяСтрокой) Тогда
ПараметрыЗаполнения.ДолжностьРуководителя = ОтветственныеЛица.ДолжностьРуководителяСтрокой;
КонецЕсли;
КонецЕсли;
МассивФизЛиц = Новый Массив;
Если ЗначениеЗаполнено(ПараметрыЗаполнения.Руководитель) Тогда
МассивФизЛиц.Добавить(ПараметрыЗаполнения.Руководитель);
КонецЕсли;
Если МассивФизЛиц.Количество() > 0 Тогда
ФИОФизЛиц = ЗарплатаКадры.СоответствиеФИОФизЛицСсылкам(ДатаОтчета, МассивФизЛиц);
ПараметрыЗаполнения.РуководительРасшифровкаПодписи = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ФИОФизЛиц[ПараметрыЗаполнения.Руководитель]);
КонецЕсли;
Макет.Параметры.Заполнить(ПараметрыЗаполнения);
КонецПроцедуры
Функция СведенияОбОрганизациях(Организации, ДатаОтчета)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Организации", Организации);
Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Организации.Ссылка КАК СтруктурнаяЕдиница,
| Организации.Ссылка КАК Организация,
| &ДатаОтчета КАК Период
|ПОМЕСТИТЬ ВТОрганизацииПериоды
|ИЗ
| Справочник.Организации КАК Организации
|ГДЕ
| Организации.Ссылка В(&Организации)";
Запрос.Выполнить();
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ИсторияРегистрацийВНалоговомОргане",
Запрос.МенеджерВременныхТаблиц,
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(
"ВТОрганизацииПериоды",
"СтруктурнаяЕдиница"));
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ПараметрыБронированияСотрудниковОрганизаций",
Запрос.МенеджерВременныхТаблиц,
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(
"ВТОрганизацииПериоды",
"Организация"));
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ОрганизацииПериоды.Организация КАК Организация,
| Организации.Наименование КАК Наименование,
| Организации.НаименованиеПолное КАК НаименованиеПолное,
| Организации.НаименованиеСокращенное КАК НаименованиеСокращенное,
| Организации.ИНН КАК ИНН,
| ИсторияРегистрацийВНалоговомОрганеСрезПоследних.ПериодЗаписи КАК ПериодРегистрации,
| ЕСТЬNULL(РегистрацииВНалоговомОргане.Ссылка, ЗНАЧЕНИЕ(Справочник.РегистрацииВНалоговомОргане.ПустаяСсылка)) КАК РегистрацияВНалоговомОргане,
| ЕСТЬNULL(РегистрацииВНалоговомОргане.КПП, """") КАК КПП,
| ЕСТЬNULL(РегистрацииВНалоговомОргане.НаименованиеИФНС, """") КАК НаименованиеИФНС,
| ЕСТЬNULL(РегистрацииВНалоговомОргане.КодПоОКАТО, """") КАК ОКАТО,
| ПараметрыБронирования.Военкомат КАК Военкомат,
| ПараметрыБронирования.НормаБронирования КАК НормаБронирования,
| ПараметрыБронирования.ВидОснованияДляБронирования КАК ВидОснования,
| ПараметрыБронирования.РеквизитыОснованияДляБронирования КАК РеквизитыОснования,
| ВЫРАЗИТЬ("""" КАК СТРОКА(100)) КАК ОКОГУ
|ИЗ
| ВТОрганизацииПериоды КАК ОрганизацииПериоды
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО ОрганизацииПериоды.Организация = Организации.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТИсторияРегистрацийВНалоговомОрганеСрезПоследних КАК ИсторияРегистрацийВНалоговомОрганеСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РегистрацииВНалоговомОргане КАК РегистрацииВНалоговомОргане
| ПО ИсторияРегистрацийВНалоговомОрганеСрезПоследних.РегистрацияВНалоговомОргане = РегистрацииВНалоговомОргане.Ссылка
| ПО ОрганизацииПериоды.Организация = ИсторияРегистрацийВНалоговомОрганеСрезПоследних.СтруктурнаяЕдиница
| И ОрганизацииПериоды.Период = ИсторияРегистрацийВНалоговомОрганеСрезПоследних.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПараметрыБронированияСотрудниковОрганизацийСрезПоследних КАК ПараметрыБронирования
| ПО ОрганизацииПериоды.Организация = ПараметрыБронирования.Организация
| И ОрганизацииПериоды.Период = ПараметрыБронирования.Период";
ПараметрыОрганизаций = Запрос.Выполнить().Выгрузить();
ДанныеОКОГУ = Новый Соответствие;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
ДанныеОКОГУ = МодульГосударственнаяСлужба.СвойстваОрганизацийГосударственнойСлужбы(Организации);
КонецЕсли;
Для Каждого ПараметрыОрганизации Из ПараметрыОрганизаций Цикл
Если Не ЗначениеЗаполнено(ПараметрыОрганизации.НаименованиеПолное) Тогда
ПараметрыОрганизации.НаименованиеПолное = ПараметрыОрганизации.Наименование;
КонецЕсли;
Если ДанныеОКОГУ[ПараметрыОрганизации.Организация] <> Неопределено Тогда
ПараметрыОрганизации.ОКОГУ = ДанныеОКОГУ[ПараметрыОрганизации.Организация].ОКОГУ;
КонецЕсли;
КонецЦикла;
Возврат ПараметрыОрганизаций;
КонецФункции
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли