#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ДокументРезультат.Очистить();
КлючВарианта = ЗарплатаКадрыОтчеты.КлючВарианта(КомпоновщикНастроек);
Если КлючВарианта = "СписокГражданПодлежащихПостановкеНаВоинскийУчет" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписокГражданПодлежащихПостановкеНаВоинскийУчет";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
РезультатКомпоновки = ЗарплатаКадрыОтчеты.РезультатКомпоновкиМакетаПечатнойФормы(ЭтотОбъект, ДанныеРасшифровки, НастройкиОтчета);
ВывестиМакетСписокГражданПодлежащихПостановкеНаВоинскийУчет(ДокументРезультат, РезультатКомпоновки, ДатаОтчета);
ИначеЕсли КлючВарианта = "СписокЮношейДляОВК" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписокЮношейДляОВК";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ПараметрДатаРожденияНачало = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаРожденияНачало"));
Если ПараметрДатаРожденияНачало <> Неопределено Тогда
Если ДатаОтчета < '20170801' Тогда
ПараметрДатаРожденияНачало.Значение = КонецДня(ДобавитьМесяц(ДатаОтчета, -17*12));
Иначе
ПараметрДатаРожденияНачало.Значение = Дата(Год(ДатаОтчета) - 17, 9, 1);
КонецЕсли;
ПараметрДатаРожденияНачало.Использование = Истина;
КонецЕсли;
ПараметрДатаРожденияКонец = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаРожденияКонец"));
Если ПараметрДатаРожденияКонец <> Неопределено Тогда
Если ДатаОтчета < '20170801' Тогда
ПараметрДатаРожденияКонец.Значение = КонецДня(ДобавитьМесяц(ДатаОтчета, -15*12));
Иначе
ПараметрДатаРожденияКонец.Значение = Дата(Год(ДатаОтчета) - 15, 9, 1);
КонецЕсли;
ПараметрДатаРожденияКонец.Использование = Истина;
КонецЕсли;
РезультатКомпоновки = ЗарплатаКадрыОтчеты.РезультатКомпоновкиМакетаПечатнойФормы(ЭтотОбъект, ДанныеРасшифровки, НастройкиОтчета);
ВывестиМакетСписокЮношейДляОВК(ДокументРезультат, РезультатКомпоновки, ДатаОтчета);
ИначеЕсли КлючВарианта = "СписокПервоначальнойПостановкиНаВоинскийУчет" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписокПервоначальнойПостановкиНаВоинскийУчет";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ГодПостановкиНаУчет = ?(ДатаОтчета < '20170801', Год(ДатаОтчета), Год(ДатаОтчета) + 1);
ПараметрГодПостановкиНаУчет = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ГодПостановкиНаУчет"));
Если ПараметрГодПостановкиНаУчет <> Неопределено Тогда
Если ТипЗнч(ПараметрГодПостановкиНаУчет.Значение) = Тип("Неопределено") Или ПараметрГодПостановкиНаУчет.Значение = 0 Тогда
ПараметрГодПостановкиНаУчет.Значение = ГодПостановкиНаУчет;
КонецЕсли;
ГодПостановкиНаУчет = ПараметрГодПостановкиНаУчет.Значение;
КонецЕсли;
НачалоОтчетногоГода = Дата(ГодПостановкиНаУчет, 1, 1);
ПараметрДатаРожденияНачало = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаРожденияНачало"));
Если ПараметрДатаРожденияНачало <> Неопределено Тогда
ПараметрДатаРожденияНачало.Значение = ДобавитьМесяц(НачалоОтчетногоГода, -17*12);
ПараметрДатаРожденияНачало.Использование = Истина;
КонецЕсли;
ПараметрДатаРожденияКонец = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаРожденияКонец"));
Если ПараметрДатаРожденияКонец <> Неопределено Тогда
ПараметрДатаРожденияКонец.Значение = КонецГода(ДобавитьМесяц(НачалоОтчетногоГода, -17*12));
ПараметрДатаРожденияКонец.Использование = Истина;
КонецЕсли;
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетСписокПервоначальнойПостановкиНаВоинскийУчет(ДокументРезультат, ДанныеОтчета, ДатаОтчета, НачалоОтчетногоГода);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "СписокДляСверкиСВоенкоматом" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СписокДляСверкиСВоенкоматом";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
РезультатКомпоновки = ЗарплатаКадрыОтчеты.РезультатКомпоновкиМакетаПечатнойФормы(ЭтотОбъект, ДанныеРасшифровки, НастройкиОтчета);
ВывестиМакетСписокДляСверкиСВоенкоматом(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета);
ИначеЕсли КлючВарианта = "КарточкаОповещения" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КарточкаОповещения";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ТаблицаЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетКарточкаОповещения(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Количество() = 0);
ИначеЕсли КлючВарианта = "РаспискаПриПриемеДокументов" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РаспискаПриПриемеДокументов";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ТаблицаЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетРаспискаПриПриемеДокументов(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Количество() = 0);
ИначеЕсли КлючВарианта = "КарточкаУчетаОрганизации" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КарточкаУчетаОрганизации";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетКарточкаУчета(ДокументРезультат, ДанныеОтчета, ДатаОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "КарточкаУчетаОрганизации2015" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КарточкаУчетаОрганизации2015";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
ДанныеОтчета = Новый ДеревоЗначений;
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ВывестиМакетКарточкаУчета2015(ДокументРезультат, ДанныеОтчета, ДатаОтчета, НастройкиОтчета);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ДанныеОтчета.Строки.Количество() = 0);
ИначеЕсли КлючВарианта = "ИзвещениеОПриемеУвольнении" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИзвещениеОПриемеУвольнении";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьПериодОтчета(НастройкиОтчета, ДатаОтчета);
РезультатКомпоновки = ЗарплатаКадрыОтчеты.РезультатКомпоновкиМакетаПечатнойФормы(ЭтотОбъект, ДанныеРасшифровки, НастройкиОтчета);
ВывестиМакетИзвещениеОПриемеУвольнении(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета);
ИначеЕсли КлючВарианта = "ПринятыеУволенныеВоеннообязанные" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПринятыеУволенныеВоеннообязанные";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьПериодОтчета(НастройкиОтчета, ДатаОтчета);
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ОтчетыСервер.ОтчетПустой(ЭтотОбъект, ПроцессорКомпоновки));
ИначеЕсли КлючВарианта = "ПринятыеУволенныеПризывники" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПринятыеУволенныеПризывники";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьПериодОтчета(НастройкиОтчета, ДатаОтчета);
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ОтчетыСервер.ОтчетПустой(ЭтотОбъект, ПроцессорКомпоновки));
ИначеЕсли КлючВарианта = "АнализКарточекВоинскогоУчета" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АнализКарточекВоинскогоУчета";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанных(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
ДопСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
ДопСвойства.Вставить("ОтчетПустой", ОтчетыСервер.ОтчетПустой(ЭтотОбъект, ПроцессорКомпоновки));
ИначеЕсли КлючВарианта = "КарточкаГражданинаПодлежащегоВоинскомуУчету" Тогда
ДокументРезультат.ТолькоПросмотр = Истина;
ДокументРезультат.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КарточкаГражданинаПодлежащегоВоинскомуУчету";
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ДатаОтчета = '00010101';
УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета);
РезультатКомпоновки = ЗарплатаКадрыОтчеты.РезультатКомпоновкиМакетаПечатнойФормы(ЭтотОбъект, ДанныеРасшифровки, НастройкиОтчета);
ВывестиМакетКарточкаГражданинаПодлежащегоВоинскомуУчету(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ИнициализироватьОтчет() Экспорт
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект);
КонецПроцедуры
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = Истина;
КонецПроцедуры
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
ЗарплатаКадрыОтчеты.ИнициализироватьОтчетПечатнойФормы(Контекст, ЭтотОбъект, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД);
КонецПроцедуры
Процедура ВывестиМакетСписокГражданПодлежащихПостановкеНаВоинскийУчет(ДокументРезультат, РезультатКомпоновки, ДатаОтчета)
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = ?(ДатаОтчета < '20170801',
УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокГражданПодлежащихПостановкеНаВоинскийУчет"),
УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокГражданПодлежащихПостановкеНаВоинскийУчет2017"));
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
ВыводимыеОбласти = Новый Массив;
ВыводимыеОбласти.Добавить(СтрокаТаблицы);
ВыводимыеОбласти.Добавить(Подвал);
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ДанныеОрганизации.Организация, ДанныеОрганизации.Военкомат);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ДанныеОрганизации);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Заголовок, ПараметрыЗаголовка, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Подвал, ПараметрыЗаголовка, ДанныеПользовательскихПолейСсылки);
ТелефоныПодписантов = ТелефоныПодписантов(ПараметрыЗаголовка);
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ОтветственныйЗаВУР) Тогда
ТелефонОтветственногоЗаВУР = ТелефоныПодписантов[ПараметрыЗаголовка.ОтветственныйЗаВУР];
Если ЗначениеЗаполнено(ТелефонОтветственногоЗаВУР) Тогда
Заголовок.Параметры.ТелефонОтветственногоЗаВУР = ТелефонОтветственногоЗаВУР;
КонецЕсли;
КонецЕсли;
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
КоличествоСтрок = ДанныеОрганизации.Строки.Количество();
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
Если ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке < КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, СтрокаТаблицы) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ИначеЕсли ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке = КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, ВыводимыеОбласти) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(СтрокаТаблицы, ТекСтрока, ДанныеПользовательскихПолейСсылки);
СтрокаТаблицы.Параметры.ДатаМестоРождения = Формат(ТекСтрока.ДатаРождения, "ДЛФ=Д") + ?(ЗначениеЗаполнено(ТекСтрока.МестоРождения), ", " + ПредставлениеМестаРождения(ТекСтрока.МестоРождения), "");
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ДокументРезультат.Вывести(Подвал);
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетСписокЮношейДляОВК(ДокументРезультат, РезультатКомпоновки, ДатаОтчета)
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = ?(ДатаОтчета < '20170801',
УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокЮношейДляОВК"),
УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокЮношейДляОВК2017"));
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
ВыводимыеОбласти = Новый Массив;
ВыводимыеОбласти.Добавить(СтрокаТаблицы);
ВыводимыеОбласти.Добавить(Подвал);
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ДанныеОрганизации.Организация, ДанныеОрганизации.Военкомат);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ДанныеОрганизации);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Заголовок, ПараметрыЗаголовка, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Подвал, ПараметрыЗаголовка, ДанныеПользовательскихПолейСсылки);
Если ДатаОтчета >= '20170801' Тогда
Заголовок.Параметры.ДатаОтчета = Формат(ДатаОтчета, "ДФ=гггг");
КонецЕсли;
ТелефоныПодписантов = ТелефоныПодписантов(ПараметрыЗаголовка);
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ОтветственныйЗаВУР) Тогда
ТелефонОтветственногоЗаВУР = ТелефоныПодписантов[ПараметрыЗаголовка.ОтветственныйЗаВУР];
Если ЗначениеЗаполнено(ТелефонОтветственногоЗаВУР) Тогда
Заголовок.Параметры.ТелефонОтветственногоЗаВУР = ТелефонОтветственногоЗаВУР;
КонецЕсли;
КонецЕсли;
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
КоличествоСтрок = ДанныеОрганизации.Строки.Количество();
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
Если ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке < КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, СтрокаТаблицы) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ИначеЕсли ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке = КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, ВыводимыеОбласти) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(СтрокаТаблицы, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ДокументРезультат.Вывести(Подвал);
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетСписокПервоначальнойПостановкиНаВоинскийУчет(ДокументРезультат, ДанныеОтчета, ДатаОтчета, НачалоОтчетногоГода)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокПервоначальнойПостановкиНаВоинскийУчет2021");
Если ДатаОтчета < '20170801' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокПервоначальнойПостановкиНаВоинскийУчет");
ИначеЕсли ДатаОтчета < '20211027' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокЮношейДляОВК2017");
КонецЕсли;
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
ВыводимыеОбласти = Новый Массив;
ВыводимыеОбласти.Добавить(СтрокаТаблицы);
ВыводимыеОбласти.Добавить(Подвал);
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ДанныеОрганизации.Организация);
ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ПараметрыЗаголовка);
ЗаполнитьЗначенияСвойств(Подвал.Параметры, ПараметрыЗаголовка);
Если ДатаОтчета >= '20211027' Тогда
Заголовок.Параметры.ГодРождения = Формат(ДобавитьМесяц(НачалоОтчетногоГода, -17*12), "ДФ=""гггг""");
Заголовок.Параметры.ГодПостановкиНаУчет = Формат(НачалоОтчетногоГода, "ДФ=""гггг""");
ИначеЕсли ДатаОтчета >= '20170801' Тогда
Заголовок.Параметры.ДатаОтчета = Формат(ДатаОтчета, "ДФ=гггг");
Иначе
Заголовок.Параметры.ГодРождения = Формат(ДобавитьМесяц(НачалоОтчетногоГода, -17*12), "ДФ=""гггг""");
Заголовок.Параметры.ГодПостановкиНаУчет = Формат(НачалоОтчетногоГода, "ДФ=""гггг""");
КонецЕсли;
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
КоличествоСтрок = ДанныеОрганизации.Строки.Количество();
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
Если ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке < КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, СтрокаТаблицы) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ИначеЕсли ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке = КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, ВыводимыеОбласти) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, ТекСтрока);
Если ДатаОтчета < '20170801' И ТекСтрока.Старше17 Тогда
СтрокаТаблицы.Параметры.ФИОПолные = Строка(СтрокаТаблицы.Параметры.ФИОПолные) + ", " + Формат(ТекСтрока.ДатаРождения, "ДФ=""гггг""") + " " + НСтр("ru = 'г. р.'");
КонецЕсли;
Если ДатаОтчета >= '20211027' Тогда
СтрокаТаблицы.Параметры.ДатаРожденияПредставление = Формат(ТекСтрока.ДатаРождения, "ДЛФ=Д");
Если ТекСтрока.АдресПоПропискеПредставление = ТекСтрока.АдресМестаПроживанияПредставление Тогда
СтрокаТаблицы.Параметры.АдресМестаПроживанияПредставление = "";
КонецЕсли;
Если ТекСтрока.АдресДляИнформированияПредставление = ТекСтрока.АдресПоПропискеПредставление
Или ТекСтрока.АдресДляИнформированияПредставление = ТекСтрока.АдресМестаПроживанияПредставление Тогда
СтрокаТаблицы.Параметры.АдресДляИнформированияПредставление = "";
КонецЕсли;
КонецЕсли;
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ДокументРезультат.Вывести(Подвал);
Если ДатаОтчета >= '20211027' Тогда
Анкета = Макет.ПолучитьОбласть("Анкета");
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ЗаполнитьЗначенияСвойств(Анкета.Параметры, ПараметрыЗаголовка);
ЗаполнитьЗначенияСвойств(Анкета.Параметры, ТекСтрока);
Анкета.Параметры.ГодРождения = Формат(ТекСтрока.ДатаРождения, "ДФ=гггг");
ДокументРезультат.Вывести(Анкета);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетСписокДляСверкиСВоенкоматом(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета)
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТолькоАдресПоПрописке = Ложь;
ПараметрТолькоАдресПоПрописке = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТолькоАдресПоПрописке"));
Если ПараметрТолькоАдресПоПрописке <> Неопределено Тогда
ТолькоАдресПоПрописке = ПараметрТолькоАдресПоПрописке.Значение;
КонецЕсли;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокДляСверкиСВоенкоматом2021");
Если ДатаОтчета < '20170801' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокДляСверкиСВоенкоматом");
ИначеЕсли ДатаОтчета < '20220108' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_СписокДляСверкиСВоенкоматом2017");
КонецЕсли;
Военкомат = Макет.ПолучитьОбласть("Военкомат");
ПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
АдресВоенкомата = Макет.ПолучитьОбласть("АдресВоенкомата");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
Подвал = Макет.ПолучитьОбласть("Подвал");
ВыводимыеОбласти = Новый Массив;
ВыводимыеОбласти.Добавить(СтрокаТаблицы);
ВыводимыеОбласти.Добавить(Подвал);
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ДанныеОрганизации.Организация, ДанныеОрганизации.Военкомат);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ДанныеОрганизации);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Военкомат, ДанныеОрганизации, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(АдресВоенкомата, ДанныеОрганизации, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Заголовок, ПараметрыЗаголовка, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Шапка, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Подвал, ПараметрыЗаголовка, ДанныеПользовательскихПолейСсылки);
ДокументРезультат.Вывести(Военкомат);
Если ЗначениеЗаполнено(ДанныеОрганизации.ВоенкоматАдрес) Тогда
ДокументРезультат.Вывести(АдресВоенкомата);
Иначе
ДокументРезультат.Вывести(ПустаяСтрока);
КонецЕсли;
ТелефоныПодписантов = ТелефоныПодписантов(ПараметрыЗаголовка);
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ОтветственныйЗаВУР) Тогда
ТелефонОтветственногоЗаВУР = ТелефоныПодписантов[ПараметрыЗаголовка.ОтветственныйЗаВУР];
Если ЗначениеЗаполнено(ТелефонОтветственногоЗаВУР) Тогда
Заголовок.Параметры.ТелефонОтветственногоЗаВУР = ТелефонОтветственногоЗаВУР;
КонецЕсли;
КонецЕсли;
ДокументРезультат.Вывести(Заголовок);
ДокументРезультат.Вывести(Шапка);
ДополнительныеСведения = Новый Соответствие;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйУчет.СемейныеПоложенияФизическихЛиц") Тогда
МодульСемейныеПоложенияФизическихЛиц = ОбщегоНазначения.ОбщийМодуль("СемейныеПоложенияФизическихЛиц");
МодульСемейныеПоложенияФизическихЛиц.ДополнитьСведенияУнифицированнойФормыТ2(ДополнительныеСведения, ДанныеОрганизации.Строки, ДатаОтчета, "КарточкаГражданинаПодлежащегоВоинскомуУчету");
КонецЕсли;
Образование = ОбразованиеФизическихЛиц(ДанныеОрганизации.Строки);
КоличествоСтрок = ДанныеОрганизации.Строки.Количество();
Для Каждого ТекСтрока Из ДанныеОрганизации.Строки Цикл
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(СтрокаТаблицы, ТекСтрока, ДанныеПользовательскихПолейСсылки);
СтрокаТаблицы.Параметры.ДатаРождения = Формат(ТекСтрока.ДатаРождения, "ДЛФ=Д");
Если ДатаОтчета >= '20170801' Тогда
СтрокаТаблицы.Параметры.МестоРождения = ПредставлениеМестаРождения(ТекСтрока.МестоРождения);
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекСтрока.ВидОбразования) И Образование.Количество() > 0 Тогда
Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
ДанныеОбОбразовании = Образование.НайтиСтроки(Отбор);
Если ДанныеОбОбразовании.Количество() > 0 Тогда
ОбразованиеРаботника = ДанныеОбОбразовании[0];
ОбразованиеПредставление = ОбразованиеРаботникаПредставлениеДляСверки(
ОбразованиеРаботника.ВидОбразования,
ОбразованиеРаботника.УчебноеЗаведение,
ОбразованиеРаботника.Окончание,
ОбразованиеРаботника.Квалификация,
ОбразованиеРаботника.Специальность,
ОбразованиеРаботника.Серия,
ОбразованиеРаботника.Номер);
СтрокаТаблицы.Параметры.ВидОбразования = ОбразованиеПредставление;
КонецЕсли;
Иначе
ОбразованиеПредставление = ОбразованиеРаботникаПредставлениеДляСверки(
ТекСтрока.ВидОбразования,
ТекСтрока.Образование1УчебноеЗаведение,
ТекСтрока.Образование1Окончание,
ТекСтрока.Образование1Квалификация,
ТекСтрока.Образование1Специальность,
ТекСтрока.Образование1Серия,
ТекСтрока.Образование1Номер);
СтрокаТаблицы.Параметры.ВидОбразования = ОбразованиеПредставление;
КонецЕсли;
СоставСемьиПредставление = "";
ДанныеЗаполнения = ДополнительныеСведения.Получить("ДанныеЗаполненияСоставСемьи");
Если ДанныеЗаполнения = Неопределено Тогда
ДанныеЗаполненияПоСотруднику = Новый Массив;
Иначе
ДанныеЗаполненияПоСотруднику = ДанныеЗаполнения.Получить(ТекСтрока.ФизическоеЛицо);
Если ДанныеЗаполненияПоСотруднику = Неопределено Тогда
ДанныеЗаполненияПоСотруднику = Новый Массив;
КонецЕсли;
КонецЕсли;
Сч = 1;
КоличествоРодственников = Мин(4, ДанныеЗаполненияПоСотруднику.Количество());
Для Сч = 1 По КоличествоРодственников Цикл
Если Сч > 1 Тогда
СоставСемьиПредставление = СоставСемьиПредставление + Символы.ПС;
КонецЕсли;
ДанныеРодственника = ДанныеЗаполненияПоСотруднику[КоличествоРодственников-Сч];
СоставСемьиПредставление = СоставСемьиПредставление + ДанныеРодственника.СтепеньРодства + ": " + ДанныеРодственника.ФИОРодственника;
Если ЗначениеЗаполнено(ДанныеРодственника.ГодРожденияРодственника) Тогда
СоставСемьиПредставление = СоставСемьиПредставление + ", " + ДанныеРодственника.ГодРожденияРодственника;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(СоставСемьиПредставление) Тогда
СтрокаТаблицы.Параметры.СоставСемьи = СоставСемьиПредставление;
КонецЕсли;
АдресПредставление = Строка(ТекСтрока.АдресПоПропискеПредставление);
Если Не ТолькоАдресПоПрописке Тогда
Если Не ЗначениеЗаполнено(АдресПредставление) Тогда
АдресПредставление = Строка(ТекСтрока.АдресМестаПроживанияПредставление);
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.АдресМестаПроживанияПредставление) И ТекСтрока.АдресМестаПроживанияПредставление <> АдресПредставление Тогда
АдресПредставление = АдресПредставление + Символы.ПС + "(" + ТекСтрока.АдресМестаПроживанияПредставление + ")";
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ТелефонРабочийПредставление) Тогда
АдресПредставление = АдресПредставление + Символы.ПС + ТекСтрока.ТелефонРабочийПредставление + " " + НСтр("ru = '(рабочий)'");
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ТелефонМобильныйПредставление) Тогда
АдресПредставление = АдресПредставление + Символы.ПС + ТекСтрока.ТелефонМобильныйПредставление + " " + НСтр("ru = '(сотовый)'");
КонецЕсли;
СтрокаТаблицы.Параметры.АдресМестаПроживанияПредставление = АдресПредставление;
Если ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке < КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, СтрокаТаблицы) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ИначеЕсли ТекСтрока.СистемныеПоляНомерПоПорядкуВГруппировке = КоличествоСтрок
И Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ДокументРезультат, ВыводимыеОбласти) Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ДокументРезультат.Вывести(СтрокаТаблицы);
КонецЦикла;
ДокументРезультат.Вывести(Подвал);
КонецЦикла;
КонецПроцедуры
Функция ОбразованиеРаботникаПредставлениеДляСверки(ВидОбразования, УчебноеЗаведение, Окончание, Квалификация, Специальность, Серия, Номер)
ОбразованиеПредставление = Строка(ВидОбразования);
Если ЗначениеЗаполнено(УчебноеЗаведение) Тогда
ОбразованиеПредставление = ОбразованиеПредставление + Символы.ПС + УчебноеЗаведение;
Если ЗначениеЗаполнено(Окончание) Тогда
ОбразованиеПредставление = ОбразованиеПредставление + "; " + СтрЗаменить(Год(Окончание), Символы.НПП, "");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Квалификация) Тогда
ОбразованиеПредставление = ОбразованиеПредставление + Символы.ПС + Квалификация;
КонецЕсли;
Если ЗначениеЗаполнено(Специальность) Тогда
ОбразованиеПредставление = ОбразованиеПредставление + Символы.ПС + Специальность;
КонецЕсли;
Если ЗначениеЗаполнено(Серия) Или ЗначениеЗаполнено(Номер) Тогда
ОбразованиеПредставление = ОбразованиеПредставление + Символы.ПС + СокрЛП(Серия + " " + Номер);
КонецЕсли;
Возврат ОбразованиеПредставление;
КонецФункции
Процедура ВывестиМакетКарточкаОповещения(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_КарточкаОповещения");
Карточка = Макет.ПолучитьОбласть("Карточка");
Для Каждого ТекСтрока Из ДанныеОтчета Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ЗаполнитьЗначенияСвойств(Карточка.Параметры, ТекСтрока);
Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений И ЗначениеЗаполнено(Карточка.Параметры.Подразделение) Тогда
Карточка.Параметры.Подразделение = Карточка.Параметры.Подразделение.ПолноеНаименование();
КонецЕсли;
ДокументРезультат.Вывести(Карточка);
КонецЦикла;
Если ДанныеОтчета.Количество() = 0 Тогда
ДокументРезультат.Вывести(Карточка);
КонецЕсли;
КонецПроцедуры
Процедура ВывестиМакетРаспискаПриПриемеДокументов(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_РаспискаПриПриемеДокументов");
Расписка = Макет.ПолучитьОбласть("Расписка");
СписокФизическихЛиц = ОбщегоНазначения.ВыгрузитьКолонку(ДанныеОтчета, "ФизическоеЛицо");
ДанныеДокументов = КадровыйУчет.ДокументыФизическихЛиц(
СписокФизическихЛиц, Истина, Неопределено, ДатаОтчета);
ДокументыВоинскогоУчета = ВоинскийУчет.ВидыДокументовВоинскогоУчета();
Для Каждого ТекСтрока Из ДанныеОтчета Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ОчиститьОбласть(Расписка);
КонецЕсли;
ЗаполнитьЗначенияСвойств(Расписка.Параметры, ТекСтрока);
Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
ДанныеДокументовРаботника = ДанныеДокументов.НайтиСтроки(Отбор);
Для Каждого ДанныеДокумента Из ДанныеДокументовРаботника Цикл
Если ДанныеДокумента.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ВоенныйБилет
Или ДанныеДокумента.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ВоенныйБилетОфицераЗапаса Тогда
Расписка.Параметры.ВидДокумента = ?(ДанныеДокумента.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ВоенныйБилет,
НСтр("ru = 'Военный билет'"),
НСтр("ru = 'Военный билет офицера запаса'"));
Расписка.Параметры.СерияДокумента = ?(ЗначениеЗаполнено(ДанныеДокумента.Серия), ДанныеДокумента.Серия, "");
Расписка.Параметры.НомерДокумента = ?(ЗначениеЗаполнено(ДанныеДокумента.Номер), ДанныеДокумента.Номер, "");
Прервать;
КонецЕсли;
Если ДокументыВоинскогоУчета.Найти(ДанныеДокумента.ВидДокумента) <> Неопределено Тогда
Расписка.Параметры.ВидДокумента = Строка(ДанныеДокумента.ВидДокумента);
Расписка.Параметры.СерияДокумента = ?(ЗначениеЗаполнено(ДанныеДокумента.Серия), ДанныеДокумента.Серия, "");
Расписка.Параметры.НомерДокумента = ?(ЗначениеЗаполнено(ДанныеДокумента.Номер), ДанныеДокумента.Номер, "");
КонецЕсли;
КонецЦикла;
ДокументРезультат.Вывести(Расписка);
КонецЦикла;
Если ДанныеОтчета.Количество() = 0 Тогда
ДокументРезультат.Вывести(Расписка);
КонецЕсли;
КонецПроцедуры
Процедура ВывестиМакетКарточкаУчета(ДокументРезультат, ДанныеОтчета, ДатаОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_КарточкаУчета");
ОбластьКарточка = Макет.ПолучитьОбласть("Лист1Карточки");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ДанныеОрганизации.Организация);
УстановитьПривилегированныйРежим(Истина);
КодыОрганизации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДанныеОрганизации.Организация,"КодПоОКПО,ИНН,ОГРН,КодОКВЭД,КодОКОПФ,КодОКФС,НаименованиеОКВЭД,НаименованиеОКОПФ,НаименованиеОКФС");
РегистрацияВНалоговомОргане = ЗарплатаКадры.РегистрацияВНалоговомОргане(ДанныеОрганизации.Организация, ДатаОтчета);
КодыОрганизацииИзРегистрации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РегистрацияВНалоговомОргане,"КодПоОКАТО");
УстановитьПривилегированныйРежим(Ложь);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, ПараметрыЗаголовка);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, КодыОрганизации);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, КодыОрганизацииИзРегистрации);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, ДанныеОрганизации);
ТелефоныПодписантов = ТелефоныПодписантов(ПараметрыЗаголовка);
Если ЗначениеЗаполнено(ПараметрыЗаголовка.Руководитель) Тогда
ТелефонРуководителя = ТелефоныПодписантов[ПараметрыЗаголовка.Руководитель];
Если ЗначениеЗаполнено(ТелефонРуководителя) Тогда
Если ЗначениеЗаполнено(ОбластьКарточка.Параметры.ДолжностьРуководителя) Тогда
ОбластьКарточка.Параметры.ТелефонФакс = ", " + НСтр("ru='тел'") + ". " + ТелефонРуководителя;
Иначе
ОбластьКарточка.Параметры.ТелефонФакс = НСтр("ru='тел'") + ". " + ТелефонРуководителя;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ОтветственныйЗаВУР) Тогда
ТелефонОтветственногоЗаВУР = ТелефоныПодписантов[ПараметрыЗаголовка.ОтветственныйЗаВУР];
Если ЗначениеЗаполнено(ТелефонОтветственногоЗаВУР) Тогда
ОбластьКарточка.Параметры.ТелефонОтветственногоЗаВУР = ", " + НСтр("ru='тел'") + ". " + ТелефонОтветственногоЗаВУР;
КонецЕсли;
КонецЕсли;
ОбластьКарточка.Параметры.ЕстьЗабронированные = ЗначениеЗаполнено(ДанныеОрганизации.ВсегоВЗапасеЗабронировано);
ДокументРезультат.Вывести(ОбластьКарточка);
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетКарточкаУчета2015(ДокументРезультат, ДанныеОтчета, ДатаОтчета, НастройкиОтчета)
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Если ДатаОтчета >= '20170101' Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_КарточкаУчета2017");
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_КарточкаУчета2015");
КонецЕсли;
ПечатьНаДвухЛистах = Ложь;
ПараметрПечатьНаДвухЛистах = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПечатьНаДвухЛистах"));
Если ПараметрПечатьНаДвухЛистах <> Неопределено Тогда
ПечатьНаДвухЛистах = ПараметрПечатьНаДвухЛистах.Значение;
КонецЕсли;
ОбластьКарточка = Макет.ПолучитьОбласть("Лист1Карточки");
Для Каждого ДанныеОрганизации Из ДанныеОтчета.Строки Цикл
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ДанныеОрганизации.Организация);
УстановитьПривилегированныйРежим(Истина);
КодыОрганизации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДанныеОрганизации.Организация,"КодПоОКПО,ИНН,ОГРН,КодОКВЭД,КодОКВЭД2,КодОКОПФ,КодОКФС,НаименованиеОКВЭД,НаименованиеОКВЭД2,НаименованиеОКОПФ,НаименованиеОКФС");
РегистрацияВНалоговомОргане = ЗарплатаКадры.РегистрацияВНалоговомОргане(ДанныеОрганизации.Организация, ДатаОтчета);
КодыОрганизацииИзРегистрации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(РегистрацияВНалоговомОргане,"КодПоОКАТО");
УстановитьПривилегированныйРежим(Ложь);
Если ДатаОтчета >= Дата(2017, 1, 1) Тогда
КодыОрганизации.КодОКВЭД = КодыОрганизации.КодОКВЭД2;
КодыОрганизации.НаименованиеОКВЭД = КодыОрганизации.НаименованиеОКВЭД2;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, ПараметрыЗаголовка);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, КодыОрганизации);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, КодыОрганизацииИзРегистрации);
ЗаполнитьЗначенияСвойств(ОбластьКарточка.Параметры, ДанныеОрганизации);
ТелефоныПодписантов = ТелефоныПодписантов(ПараметрыЗаголовка);
Если ЗначениеЗаполнено(ПараметрыЗаголовка.Руководитель) Тогда
ТелефонРуководителя = ТелефоныПодписантов[ПараметрыЗаголовка.Руководитель];
Если ЗначениеЗаполнено(ТелефонРуководителя) Тогда
Если ЗначениеЗаполнено(ОбластьКарточка.Параметры.ДолжностьРуководителя) Тогда
ОбластьКарточка.Параметры.ТелефонФакс = ", " + НСтр("ru='тел'") + ". " + ТелефонРуководителя;
Иначе
ОбластьКарточка.Параметры.ТелефонФакс = НСтр("ru='тел'") + ". " + ТелефонРуководителя;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ОтветственныйЗаВУР) Тогда
ТелефонОтветственногоЗаВУР = ТелефоныПодписантов[ПараметрыЗаголовка.ОтветственныйЗаВУР];
Если ЗначениеЗаполнено(ТелефонОтветственногоЗаВУР) Тогда
ОбластьКарточка.Параметры.ТелефонОтветственногоЗаВУР = ", " + НСтр("ru='тел'") + ". " + ТелефонОтветственногоЗаВУР;
КонецЕсли;
КонецЕсли;
ОбластьКарточка.Параметры.ЕстьЗабронированные = ЗначениеЗаполнено(ДанныеОрганизации.ВсегоВЗапасеЗабронировано);
ЗаполнитьЧисленностьРаботающихГраждан(ОбластьКарточка, ДатаОтчета, ДанныеОрганизации.Организация, НастройкиОтчета);
Если ПечатьНаДвухЛистах Тогда
Если ДатаОтчета >= '20170101' Тогда
ОбластьСтраница1 = ОбластьКарточка.ПолучитьОбласть("R1C1:R44C12");
ОбластьСтраница2 = ОбластьКарточка.ПолучитьОбласть("R1C13:R44C27");
Иначе
ОбластьСтраница1 = ОбластьКарточка.ПолучитьОбласть("R1C1:R42C12");
ОбластьСтраница2 = ОбластьКарточка.ПолучитьОбласть("R1C13:R42C28");
КонецЕсли;
ОбластьСтраница1.Область().СоздатьФорматСтрок();
ОбластьСтраница2.Область().СоздатьФорматСтрок();
ДокументРезультат.Вывести(ОбластьСтраница1);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ДокументРезультат.Вывести(ОбластьСтраница2);
Иначе
ДокументРезультат.Вывести(ОбластьКарточка);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьЧисленностьРаботающихГраждан(ОбластьКарточка, ДатаОтчета, Организация, НастройкиФормы)
Если ДатаОтчета < '20170101' Тогда
Возврат;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьБронированиеГраждан") Тогда
Возврат;
КонецЕсли;
Военкомат = Неопределено;
ВоенкоматВидСравнения = Неопределено;
Подразделение = Неопределено;
ПодразделениеВидСравнения = Неопределено;
Для Каждого ЭлементОтбора Из НастройкиФормы.Отбор.Элементы Цикл
Если ТипЗнч(ЭлементОтбора) <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Военкомат") И ЭлементОтбора.Использование Тогда
Военкомат = ЭлементОтбора.ПравоеЗначение;
ВоенкоматВидСравнения = ЭлементОтбора.ВидСравнения;
КонецЕсли;
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение") И ЭлементОтбора.Использование Тогда
Подразделение = ЭлементОтбора.ПравоеЗначение;
ПодразделениеВидСравнения = ЭлементОтбора.ВидСравнения;
КонецЕсли;
КонецЦикла;
СхемаКомпоновкиДанных = Отчеты.ВоинскийУчетБронирование.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
НастройкиОтчета = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
НастройкиОтчета.Структура.Очистить();
НастройкиОтчета.Выбор.Элементы.Очистить();
ПараметрПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
Если ПараметрПериод <> Неопределено Тогда
ПараметрПериод.Значение = ДатаОтчета;
ПараметрПериод.Использование = Истина;
КонецЕсли;
ЭлементыКУдалению = Новый Массив;
Для Каждого ЭлементОтбора Из НастройкиОтчета.Отбор.Элементы Цикл
Если ТипЗнч(ЭлементОтбора) <> Тип("ЭлементОтбораКомпоновкиДанных") Тогда
Продолжить;
КонецЕсли;
Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация")
Или ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Военкомат")
Или ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение") Тогда
ЭлементыКУдалению.Добавить(ЭлементОтбора);
КонецЕсли;
КонецЦикла;
Для Каждого ЭлементОтбора Из ЭлементыКУдалению Цикл
НастройкиОтчета.Отбор.Элементы.Удалить(ЭлементОтбора);
КонецЦикла;
ОтчетыСервер.ДобавитьВыбранноеПоле(НастройкиОтчета, "Организация");
ОтчетыСервер.ДобавитьВыбранноеПоле(НастройкиОтчета, "КатегорияВоинскогоУчета");
ОтчетыСервер.ДобавитьВыбранноеПоле(НастройкиОтчета, "ВсегоРаботающих");
ОтчетыСервер.ДобавитьВыбранноеПоле(НастройкиОтчета, "ВсегоВЗапасе");
ОтчетыСервер.ДобавитьВыбранноеПоле(НастройкиОтчета, "ОфицеровВЗапасе");
ОтчетыСервер.ДобавитьВыбранноеПоле(НастройкиОтчета, "ПрапорщиковИСолдатВЗапасе");
ГруппировкаКомпоновкиДанных = НастройкиОтчета.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаКомпоновкиДанных.Использование = Истина;
ГруппировкаКомпоновкиДанных.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
ГруппировкаКомпоновкиДанных.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ЭлементОтбора = НастройкиОтчета.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Организация;
ЭлементОтбора.Использование = Истина;
Если Военкомат <> Неопределено Тогда
ЭлементОтбора = НастройкиОтчета.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Военкомат");
ЭлементОтбора.ВидСравнения = ВоенкоматВидСравнения;
ЭлементОтбора.ПравоеЗначение = Военкомат;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
Если Подразделение <> Неопределено Тогда
ЭлементОтбора = НастройкиОтчета.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение");
ЭлементОтбора.ВидСравнения = ПодразделениеВидСравнения;
ЭлементОтбора.ПравоеЗначение = Подразделение;
ЭлементОтбора.Использование = Истина;
КонецЕсли;
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(Новый Структура("СхемаКомпоновкиДанных", СхемаКомпоновкиДанных));
МакетКомпоновки = ЗарплатаКадрыОтчеты.МакетКомпоновкиДанныхДляКоллекцииЗначений(СхемаКомпоновкиДанных, НастройкиОтчета);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДанныеОтчета = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
ДанныеОтчета.Свернуть("КатегорияВоинскогоУчета", "ВсегоРаботающих,ВсегоВЗапасе,ОфицеровВЗапасе,ПрапорщиковИСолдатВЗапасе");
НомераСтрок = Новый Соответствие;
НомераСтрок.Вставить(Перечисления.КатегорииДолжностейДляВоинскогоУчета.Руководители, 1);
НомераСтрок.Вставить(Перечисления.КатегорииДолжностейДляВоинскогоУчета.Специалисты, 2);
НомераСтрок.Вставить(Перечисления.КатегорииДолжностейДляВоинскогоУчета.ДругиеСлужащие, 3);
НомераСтрок.Вставить(Перечисления.КатегорииДолжностейДляВоинскогоУчета.Рабочие, 4);
ВсегоРаботающих = 0;
ВсегоВЗапасе = 0;
ОфицеровВЗапасе = 0;
ПрапорщиковИСолдатВЗапасе = 0;
Для Каждого ДанныеПоКатегории Из ДанныеОтчета Цикл
НомерСтроки = НомераСтрок[ДанныеПоКатегории.КатегорияВоинскогоУчета];
Если НомерСтроки = Неопределено Тогда
Продолжить;
КонецЕсли;
ОбластьКарточка.Параметры["ВсегоРаботающих" + НомерСтроки] = ДанныеПоКатегории.ВсегоРаботающих;
ВсегоРаботающих = ВсегоРаботающих + ДанныеПоКатегории.ВсегоРаботающих;
ОбластьКарточка.Параметры["ВсегоВЗапасе" + НомерСтроки] = ДанныеПоКатегории.ВсегоВЗапасе;
ВсегоВЗапасе = ВсегоВЗапасе + ДанныеПоКатегории.ВсегоВЗапасе;
ОбластьКарточка.Параметры["ОфицеровВЗапасе" + НомерСтроки] = ДанныеПоКатегории.ОфицеровВЗапасе;
ОфицеровВЗапасе = ОфицеровВЗапасе + ДанныеПоКатегории.ОфицеровВЗапасе;
ОбластьКарточка.Параметры["ПрапорщиковИСолдатВЗапасе" + НомерСтроки] = ДанныеПоКатегории.ПрапорщиковИСолдатВЗапасе;
ПрапорщиковИСолдатВЗапасе = ПрапорщиковИСолдатВЗапасе + ДанныеПоКатегории.ПрапорщиковИСолдатВЗапасе;
КонецЦикла;
ОбластьКарточка.Параметры["ВсегоРаботающих5"] = ВсегоРаботающих;
ОбластьКарточка.Параметры["ВсегоВЗапасе5"] = ВсегоВЗапасе;
ОбластьКарточка.Параметры["ОфицеровВЗапасе5"] = ОфицеровВЗапасе;
ОбластьКарточка.Параметры["ПрапорщиковИСолдатВЗапасе5"] = ПрапорщиковИСолдатВЗапасе;
КонецПроцедуры
Процедура ВывестиМакетИзвещениеОПриемеУвольнении(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета)
Если ДатаОтчета >= '20230805' Тогда
ВывестиМакетИзвещениеОПриемеУвольнении2023(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета);
Возврат;
ИначеЕсли ДатаОтчета >= '20200218' Тогда
ВывестиМакетИзвещениеОПриемеУвольнении2020(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета);
Возврат;
КонецЕсли;
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = ?(ДатаОтчета < '20170801',
УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_ИзвещениеОПриемеУвольнении"),
УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_ИзвещениеОПриемеУвольнении2017"));
ВоенкоматПриПриеме = Макет.ПолучитьОбласть("ВоенкоматПриПриеме");
АдресВоенкоматаПриПриеме = Макет.ПолучитьОбласть("АдресВоенкоматаПриПриеме");
Прием = Макет.ПолучитьОбласть("Прием");
ВоенкоматПриУвольнении = Макет.ПолучитьОбласть("ВоенкоматПриУвольнении");
АдресВоенкоматаПриУвольнении = Макет.ПолучитьОбласть("АдресВоенкоматаПриУвольнении");
Увольнение = Макет.ПолучитьОбласть("Увольнение");
ПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
Для Каждого ТекСтрока Из ДанныеОтчета.Строки Цикл
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ТекСтрока.Организация, ТекСтрока.Военкомат);
Если ТекСтрока.ДатаПриема <= ТекСтрока.ПараметрыДанныхПериод
И ТекСтрока.ДатаПриема >= ТекСтрока.ПараметрыДанныхНачалоПериода Тогда
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(ВоенкоматПриПриеме, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(АдресВоенкоматаПриПриеме, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Прием, ПараметрыЗаголовка, ТекСтрока, ДанныеПользовательскихПолейСсылки);
Если НастройкиПечатныхФорм.УдалятьПрефиксыОрганизацииИИБИзНомеровКадровыхПриказов Тогда
Прием.Параметры.НомерПриказаОПриеме = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ТекСтрока.НомерПриказаОПриеме, Истина, Истина);
КонецЕсли;
ДокументРезультат.Вывести(ВоенкоматПриПриеме);
Если ЗначениеЗаполнено(ТекСтрока.ВоенкоматПриПриемеАдрес) Тогда
ДокументРезультат.Вывести(АдресВоенкоматаПриПриеме);
Иначе
ДокументРезультат.Вывести(ПустаяСтрока);
КонецЕсли;
ДокументРезультат.Вывести(Прием);
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ДатаУвольнения) И ТекСтрока.ДатаУвольнения <= ТекСтрока.ПараметрыДанныхПериод
И ТекСтрока.ДатаУвольнения >= ТекСтрока.ПараметрыДанныхНачалоПериода Тогда
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(ВоенкоматПриУвольнении, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(АдресВоенкоматаПриУвольнении, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Увольнение, ПараметрыЗаголовка, ТекСтрока, ДанныеПользовательскихПолейСсылки);
Если НастройкиПечатныхФорм.УдалятьПрефиксыОрганизацииИИБИзНомеровКадровыхПриказов Тогда
Увольнение.Параметры.НомерПриказаОбУвольнении = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ТекСтрока.НомерПриказаОбУвольнении, Истина, Истина);
КонецЕсли;
ДокументРезультат.Вывести(ВоенкоматПриУвольнении);
Если ЗначениеЗаполнено(ТекСтрока.ВоенкоматАдрес) Тогда
ДокументРезультат.Вывести(АдресВоенкоматаПриУвольнении);
Иначе
ДокументРезультат.Вывести(ПустаяСтрока);
КонецЕсли;
ДокументРезультат.Вывести(Увольнение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетИзвещениеОПриемеУвольнении2020(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета)
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_ИзвещениеОПриемеУвольнении2020");
Извещение = Макет.ПолучитьОбласть("Извещение");
НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
Для Каждого ТекСтрока Из ДанныеОтчета.Строки Цикл
ПараметрыМакета = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ТекСтрока.Организация, ТекСтрока.Военкомат);
ПараметрыМакета.Вставить("ДатаРождения", ТекСтрока.ДатаРождения);
ПараметрыМакета.Вставить("АдресМестаПроживанияПредставление", ТекСтрока.АдресМестаПроживанияПредставление);
ПараметрыМакета.Вставить("ВоенкоматСотрудника", ТекСтрока.Военкомат);
ПараметрыМакета.Вставить("НаименованиеВоенкомата", ТекСтрока.ВоенкоматНаименование);
ПараметрыМакета.Вставить("АдресВоенкомата", ТекСтрока.ВоенкоматАдрес);
ПараметрыМакета.Вставить("ФИОПолные");
ПараметрыМакета.Вставить("Звание");
ПараметрыМакета.Вставить("ВУС");
ПараметрыМакета.Вставить("Должность");
ПараметрыМакета.Вставить("НомерПриказа");
ПараметрыМакета.Вставить("ДатаПриказа");
Если ТекСтрока.ДатаПриема <= ТекСтрока.ПараметрыДанныхПериод
И ТекСтрока.ДатаПриема >= ТекСтрока.ПараметрыДанныхНачалоПериода Тогда
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ВоенкоматПриПриеме) Тогда
ПараметрыМакета.ВоенкоматСотрудника = ТекСтрока.ВоенкоматПриПриеме;
ПараметрыМакета.НаименованиеВоенкомата = ТекСтрока.ВоенкоматПриПриемеНаименование;
ПараметрыМакета.АдресВоенкомата = ТекСтрока.ВоенкоматПриПриемеАдрес;
КонецЕсли;
ПараметрыМакета.ФИОПолные = ТекСтрока.ФИОПолныеПриПриеме;
ПараметрыМакета.Звание = ТекСтрока.ЗваниеПриПриеме;
ПараметрыМакета.ВУС = ТекСтрока.ВУСПриПриеме;
ПараметрыМакета.Должность = ТекСтрока.ДолжностьПриПриеме;
ПараметрыМакета.НомерПриказа = ЗарплатаКадрыОтчеты.НомерНаПечать(ТекСтрока.НомерПриказаОПриеме, ТекСтрока.ПриказОПриемеНомерПриказа);
ПараметрыМакета.ДатаПриказа = ТекСтрока.ДатаПриказаОПриеме;
Извещение.Области.Принят.Шрифт = Новый Шрифт(Извещение.Области.Принят.Шрифт, , , , , , Ложь);
Извещение.Области.Уволен.Шрифт = Новый Шрифт(Извещение.Области.Уволен.Шрифт, , , , , , Истина);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Извещение, ТекСтрока, ПараметрыМакета, ДанныеПользовательскихПолейСсылки);
ДокументРезультат.Вывести(Извещение);
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ДатаУвольнения) И ТекСтрока.ДатаУвольнения <= ТекСтрока.ПараметрыДанныхПериод
И ТекСтрока.ДатаУвольнения >= ТекСтрока.ПараметрыДанныхНачалоПериода Тогда
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыМакета.НаименованиеВоенкомата = ТекСтрока.ВоенкоматНаименование;
ПараметрыМакета.ФИОПолные = ТекСтрока.ФИОПолные;
ПараметрыМакета.Звание = ТекСтрока.Звание;
ПараметрыМакета.ВУС = ТекСтрока.ВУС;
ПараметрыМакета.Должность = ТекСтрока.Должность;
ПараметрыМакета.НомерПриказа = ЗарплатаКадрыОтчеты.НомерНаПечать(ТекСтрока.НомерПриказаОбУвольнении, ТекСтрока.ПриказОбУвольненииНомерПриказа);
ПараметрыМакета.ДатаПриказа = ТекСтрока.ДатаПриказаОбУвольнении;
ПараметрыМакета.АдресВоенкомата = ТекСтрока.ВоенкоматАдрес;
Извещение.Области.Принят.Шрифт = Новый Шрифт(Извещение.Области.Принят.Шрифт, , , , , , Истина);
Извещение.Области.Уволен.Шрифт = Новый Шрифт(Извещение.Области.Уволен.Шрифт, , , , , , Ложь);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Извещение, ТекСтрока, ПараметрыМакета, ДанныеПользовательскихПолейСсылки);
ДокументРезультат.Вывести(Извещение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетИзвещениеОПриемеУвольнении2023(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета)
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_ИзвещениеОПриемеУвольнении2023");
Извещение = Макет.ПолучитьОбласть("Извещение");
НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
ТолькоАдресПоПрописке = Ложь;
ПараметрТолькоАдресПоПрописке = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТолькоАдресПоПрописке"));
Если ПараметрТолькоАдресПоПрописке <> Неопределено Тогда
ТолькоАдресПоПрописке = ПараметрТолькоАдресПоПрописке.Значение;
КонецЕсли;
Для Каждого ТекСтрока Из ДанныеОтчета.Строки Цикл
ПараметрыМакета = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ТекСтрока.Организация, ТекСтрока.Военкомат);
ПараметрыМакета.Вставить("ДатаРождения", ТекСтрока.ДатаРождения);
ПараметрыМакета.Вставить("АдресМестаПроживанияПредставление", ТекСтрока.АдресМестаПроживанияПредставление);
ПараметрыМакета.Вставить("ВоенкоматСотрудника", ТекСтрока.Военкомат);
ПараметрыМакета.Вставить("НаименованиеВоенкомата", ТекСтрока.ВоенкоматНаименование);
ПараметрыМакета.Вставить("АдресВоенкомата", ТекСтрока.ВоенкоматАдрес);
ПараметрыМакета.Вставить("ФИОПолные");
ПараметрыМакета.Вставить("Звание");
ПараметрыМакета.Вставить("ВУС");
ПараметрыМакета.Вставить("Должность");
ПараметрыМакета.Вставить("НомерПриказа");
ПараметрыМакета.Вставить("ДатаПриказа");
ПараметрыМакета.Вставить("ДокументСерия");
ПараметрыМакета.Вставить("ДокументНомер");
ПараметрыМакета.Вставить("СтраховойНомерПФР");
Если ТекСтрока.ДатаПриема <= ТекСтрока.ПараметрыДанныхПериод
И ТекСтрока.ДатаПриема >= ТекСтрока.ПараметрыДанныхНачалоПериода Тогда
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ВоенкоматПриПриеме) Тогда
ПараметрыМакета.ВоенкоматСотрудника = ТекСтрока.ВоенкоматПриПриеме;
ПараметрыМакета.НаименованиеВоенкомата = ТекСтрока.ВоенкоматПриПриемеНаименование;
ПараметрыМакета.АдресВоенкомата = ТекСтрока.ВоенкоматПриПриемеАдрес;
КонецЕсли;
ПараметрыМакета.ФИОПолные = ТекСтрока.ФИОПолныеПриПриеме;
ПараметрыМакета.Звание = ТекСтрока.ЗваниеПриПриеме;
ПараметрыМакета.ВУС = ТекСтрока.ВУСПриПриеме;
ПараметрыМакета.Должность = ТекСтрока.ДолжностьПриПриеме;
ПараметрыМакета.НомерПриказа = ЗарплатаКадрыОтчеты.НомерНаПечать(ТекСтрока.НомерПриказаОПриеме, ТекСтрока.ПриказОПриемеНомерПриказа);
ПараметрыМакета.ДатаПриказа = ТекСтрока.ДатаПриказаОПриеме;
ПараметрыМакета.ДокументСерия = ТекСтрока.ДокументСерия;
ПараметрыМакета.ДокументНомер = ТекСтрока.ДокументНомер;
ПараметрыМакета.СтраховойНомерПФР = ТекСтрока.СтраховойНомерПФР;
Если Не ЗначениеЗаполнено(ТекСтрока.ДатаПриказаОПриеме) Тогда
ПараметрыМакета.НомерПриказа = СокрЛП(ТекСтрока.ТрудовойДоговорНомер);
ПараметрыМакета.ДатаПриказа = ТекСтрока.ТрудовойДоговорДата;
КонецЕсли;
Извещение.Области.Принят.Шрифт = Новый Шрифт(Извещение.Области.Принят.Шрифт, , , , , , Ложь);
Извещение.Области.Уволен.Шрифт = Новый Шрифт(Извещение.Области.Уволен.Шрифт, , , , , , Истина);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Извещение, ТекСтрока, ПараметрыМакета, ДанныеПользовательскихПолейСсылки);
Если ТолькоАдресПоПрописке Тогда
Извещение.Параметры.АдресМестаПроживанияПредставление = ТекСтрока.АдресПоПропискеПредставление;
КонецЕсли;
ДокументРезультат.Вывести(Извещение);
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ДатаУвольнения) И ТекСтрока.ДатаУвольнения <= ТекСтрока.ПараметрыДанныхПериод
И ТекСтрока.ДатаУвольнения >= ТекСтрока.ПараметрыДанныхНачалоПериода Тогда
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПараметрыМакета.НаименованиеВоенкомата = ТекСтрока.ВоенкоматНаименование;
ПараметрыМакета.ФИОПолные = ТекСтрока.ФИОПолные;
ПараметрыМакета.Звание = ТекСтрока.Звание;
ПараметрыМакета.ВУС = ТекСтрока.ВУС;
ПараметрыМакета.Должность = ТекСтрока.Должность;
ПараметрыМакета.НомерПриказа = ЗарплатаКадрыОтчеты.НомерНаПечать(ТекСтрока.НомерПриказаОбУвольнении, ТекСтрока.ПриказОбУвольненииНомерПриказа);
ПараметрыМакета.ДатаПриказа = ТекСтрока.ДатаПриказаОбУвольнении;
ПараметрыМакета.АдресВоенкомата = ТекСтрока.ВоенкоматАдрес;
ПараметрыМакета.ДокументСерия = ТекСтрока.ДокументСерия;
ПараметрыМакета.ДокументНомер = ТекСтрока.ДокументНомер;
ПараметрыМакета.СтраховойНомерПФР = ТекСтрока.СтраховойНомерПФР;
Извещение.Области.Принят.Шрифт = Новый Шрифт(Извещение.Области.Принят.Шрифт, , , , , , Истина);
Извещение.Области.Уволен.Шрифт = Новый Шрифт(Извещение.Области.Уволен.Шрифт, , , , , , Ложь);
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(Извещение, ТекСтрока, ПараметрыМакета, ДанныеПользовательскихПолейСсылки);
Если ТолькоАдресПоПрописке Тогда
Извещение.Параметры.АдресМестаПроживанияПредставление = ТекСтрока.АдресПоПропискеПредставление;
КонецЕсли;
ДокументРезультат.Вывести(Извещение);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВывестиМакетКарточкаГражданинаПодлежащегоВоинскомуУчету(ДокументРезультат, РезультатКомпоновки, ДатаОтчета, НастройкиОтчета)
ДанныеОтчета = РезультатКомпоновки.ДанныеОтчета;
ИдентификаторыМакета = РезультатКомпоновки.ИдентификаторыМакета;
ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ЗаполнятьКарандашом = Ложь;
ПараметрЗаполнятьКарандашом = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ЗаполнятьКарандашом"));
Если ПараметрЗаполнятьКарандашом <> Неопределено Тогда
ЗаполнятьКарандашом = ПараметрЗаполнятьКарандашом.Значение;
КонецЕсли;
ТолькоАдресПоПрописке = Ложь;
ПараметрТолькоАдресПоПрописке = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ТолькоАдресПоПрописке"));
Если ПараметрТолькоАдресПоПрописке <> Неопределено Тогда
ТолькоАдресПоПрописке = ПараметрТолькоАдресПоПрописке.Значение;
КонецЕсли;
Макет = УправлениеПечатью.МакетПечатнойФормы("Отчет.ВоинскийУчетОбщий.ПФ_MXL_КарточкаГражданинаПодлежащегоВоинскомуУчету");
ЛицеваяСторона = Макет.ПолучитьОбласть("ЛицеваяСторона");
ОборотнаяСторона = Макет.ПолучитьОбласть("ОборотнаяСторона");
НастройкиПечатныхФорм = ЗарплатаКадры.НастройкиПечатныхФорм();
ПараметрыЗаголовка = Новый Структура;
ДополнительныеСведения = Новый Соответствие;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.КадровыйУчет.СемейныеПоложенияФизическихЛиц") Тогда
МодульСемейныеПоложенияФизическихЛиц = ОбщегоНазначения.ОбщийМодуль("СемейныеПоложенияФизическихЛиц");
МодульСемейныеПоложенияФизическихЛиц.ДополнитьСведенияУнифицированнойФормыТ2(ДополнительныеСведения, ДанныеОтчета.Строки, ДатаОтчета, "КарточкаГражданинаПодлежащегоВоинскомуУчету");
КонецЕсли;
СписокСотрудников = ОбщегоНазначения.ВыгрузитьКолонку(ДанныеОтчета.Строки, "Сотрудник");
ДанныеРабочихМест = РабочиеМестаСотрудников(СписокСотрудников, ДатаОтчета, НастройкиПечатныхФорм);
СписокФизическихЛиц = ОбщегоНазначения.ВыгрузитьКолонку(ДанныеОтчета.Строки, "ФизическоеЛицо");
ДанныеДокументов = КадровыйУчет.ДокументыФизическихЛиц(
СписокФизическихЛиц, Истина, Неопределено, ДатаОтчета);
Образование = ОбразованиеФизическихЛиц(ДанныеОтчета.Строки);
ДополнительныеСведенияКарточки = ДополнительныеСведенияКарточкиГражданинаПодлежащегоВоинскомуУчету(СписокФизическихЛиц, ДатаОтчета);
ИспользоватьБронирование = ПолучитьФункциональнуюОпцию("ИспользоватьБронированиеГраждан");
ДокументыВоинскогоУчета = ВоинскийУчет.ВидыДокументовВоинскогоУчета();
Для Каждого ТекСтрока Из ДанныеОтчета.Строки Цикл
Если Не ПараметрыЗаголовка.Свойство("Организация")
Или ПараметрыЗаголовка.Организация <> ТекСтрока.Организация
Или ПараметрыЗаголовка.Военкомат <> ТекСтрока.Военкомат Тогда
ТекущаяОрганизация = ТекСтрока.Организация;
Если Не ЗначениеЗаполнено(ТекущаяОрганизация) И ЗначениеЗаполнено(ТекСтрока.Сотрудник) Тогда
ТекущаяОрганизация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекСтрока.Сотрудник, "ГоловнаяОрганизация");
КонецЕсли;
ПараметрыЗаголовка = ПараметрыЗаголовкаСтруктура(ДатаОтчета, ТекущаяОрганизация, ТекСтрока.Военкомат);
КонецЕсли;
Если ДокументРезультат.ВысотаТаблицы > 0 Тогда
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ОчиститьОбласть(ЛицеваяСторона);
ОчиститьОбласть(ОборотнаяСторона);
КонецЕсли;
ДанныеПользовательскихПолейСсылки = ЗарплатаКадрыОтчеты.ЗначенияЗаполненияПользовательскихПолей(ИдентификаторыМакета, ТекСтрока);
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(ЛицеваяСторона, ПараметрыЗаголовка, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ЛицеваяСторона.Параметры.МестоРождения = ПредставлениеМестаРождения(ТекСтрока.МестоРождения);
Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
СверкаСДокументамиВоинскогоУчета = ДополнительныеСведенияКарточки.СверкаСДокументамиВоинскогоУчета.НайтиСтроки(Отбор);
Если СверкаСДокументамиВоинскогоУчета.Количество() > 0 Тогда
ЛицеваяСторона.Параметры.СверкаСДокументамиВоинскогоУчетаДата = Формат(СверкаСДокументамиВоинскогоУчета[0].Период, "ДФ=дд.ММ.гг");
ЛицеваяСторона.Параметры.СверкаСДокументамиВоинскогоУчетаФамилия =
Лев(СверкаСДокументамиВоинскогоУчета[0].СверкуПровелИмя, 1) + ". "
+ СверкаСДокументамиВоинскогоУчета[0].СверкуПровелФамилия;
КонецЕсли;
СверкаСВоеннымКомиссариатом = ДополнительныеСведенияКарточки.СверкаСВоеннымКомиссариатом.НайтиСтроки(Отбор);
Если СверкаСВоеннымКомиссариатом.Количество() > 0 Тогда
ЛицеваяСторона.Параметры.СверкаСВоеннымКомиссариатомДата =
СокрЛП(Формат(СверкаСВоеннымКомиссариатом[0].Период, "ДФ=дд.ММ.гг")
+ ?(ЗначениеЗаполнено(СверкаСВоеннымКомиссариатом[0].НомерСписка), " № ", "")
+ СверкаСВоеннымКомиссариатом[0].НомерСписка);
ЛицеваяСторона.Параметры.СверкаСВоеннымКомиссариатомФамилия =
Лев(СверкаСВоеннымКомиссариатом[0].СверкуПровелИмя, 1) + ". "
+ СверкаСВоеннымКомиссариатом[0].СверкуПровелФамилия;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекСтрока.ВидОбразованияНаименование) И Образование.Количество() > 0 Тогда
Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
ДанныеОбОбразовании = Образование.НайтиСтроки(Отбор);
Если ДанныеОбОбразовании.Количество() > 0 Тогда
ОбразованиеРаботника = ДанныеОбОбразовании[0];
ЛицеваяСторона.Параметры.ВидОбразованияНаименование = Строка(ОбразованиеРаботника.ВидОбразования);
ЛицеваяСторона.Параметры.Образование1УчебноеЗаведение = ОбразованиеРаботника.УчебноеЗаведение;
ЛицеваяСторона.Параметры.Образование1Квалификация = ОбразованиеРаботника.Квалификация;
ЛицеваяСторона.Параметры.Образование1Специальность = ОбразованиеРаботника.Специальность;
ЛицеваяСторона.Параметры.Образование1Серия = ОбразованиеРаботника.Серия;
ЛицеваяСторона.Параметры.Образование1Номер = ОбразованиеРаботника.Номер;
ЛицеваяСторона.Параметры.Образование1Окончание = СтрЗаменить(Год(ОбразованиеРаботника.Окончание), Символы.НПП, "");
КонецЕсли;
КонецЕсли;
ДанныеЗаполнения = ДополнительныеСведения.Получить("ДанныеЗаполненияСоставСемьи");
Если ДанныеЗаполнения = Неопределено Тогда
ДанныеЗаполненияПоСотруднику = Новый Массив;
Иначе
ДанныеЗаполненияПоСотруднику = ДанныеЗаполнения.Получить(ТекСтрока.ФизическоеЛицо);
Если ДанныеЗаполненияПоСотруднику = Неопределено Тогда
ДанныеЗаполненияПоСотруднику = Новый Массив;
КонецЕсли;
КонецЕсли;
Сч = 1;
КоличествоРодственников = Мин(4, ДанныеЗаполненияПоСотруднику.Количество());
Для Сч = 1 По КоличествоРодственников Цикл
ДанныеРодственника = ДанныеЗаполненияПоСотруднику[КоличествоРодственников-Сч];
ЛицеваяСторона.Параметры["СтепеньРодства" + Сч] = ДанныеРодственника.СтепеньРодства;
ЛицеваяСторона.Параметры["ФИОРодственника" + Сч] = ДанныеРодственника.ФИОРодственника;
ЛицеваяСторона.Параметры["ГодРожденияРодственника" + Сч] = ДанныеРодственника.ГодРожденияРодственника;
КонецЦикла;
Отбор = Новый Структура("ФизическоеЛицо, ВидДокумента",
ТекСтрока.ФизическоеЛицо, Справочники.ВидыДокументовФизическихЛиц.ВодительскоеУдостоверение);
ДанныеУдостоверений = ДанныеДокументов.НайтиСтроки(Отбор);
Если ДанныеУдостоверений.Количество() > 0 Тогда
ДанныеУдостоверения = ДанныеУдостоверений[0];
ЛицеваяСторона.Параметры.УдостоверениеСерия = ДанныеУдостоверения.Серия;
ЛицеваяСторона.Параметры.УдостоверениеНомер = ДанныеУдостоверения.Номер;
ЛицеваяСторона.Параметры.УдостоверениеДатаВыдачи = ДанныеУдостоверения.ДатаВыдачи;
ЛицеваяСторона.Параметры.УдостоверениеКатегорииТранспортныхСредств = ДанныеУдостоверения.КатегорииТранспортныхСредств;
КонецЕсли;
Если ТолькоАдресПоПрописке Тогда
ЛицеваяСторона.Параметры.АдресМестаПроживанияПредставление = "";
ЛицеваяСторона.Параметры.ДатаВременнойРегистрации = "";
КонецЕсли;
Если ЗаполнятьКарандашом Тогда
ЛицеваяСторона.Параметры.СостояниеВБраке = "";
ЛицеваяСторона.Параметры.АдресПоПропискеПредставление = "";
ЛицеваяСторона.Параметры.ДатаРегистрации = "";
ЛицеваяСторона.Параметры.АдресМестаПроживанияПредставление = "";
ЛицеваяСторона.Параметры.ДатаВременнойРегистрации = "";
ЛицеваяСторона.Параметры.ТелефонРабочийПредставление = "";
ЛицеваяСторона.Параметры.ТелефонМобильныйПредставление = "";
ЛицеваяСторона.Параметры.СверкаСДокументамиВоинскогоУчетаДата = "";
ЛицеваяСторона.Параметры.СверкаСДокументамиВоинскогоУчетаФамилия = "";
ЛицеваяСторона.Параметры.СверкаСВоеннымКомиссариатомДата = "";
ЛицеваяСторона.Параметры.СверкаСВоеннымКомиссариатомФамилия = "";
КонецЕсли;
ДокументРезультат.Вывести(ЛицеваяСторона);
ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
ЗарплатаКадрыОтчеты.ЗаполнитьПараметрыОбластиМакета(ОборотнаяСторона, ПараметрыЗаголовка, ТекСтрока, ДанныеПользовательскихПолейСсылки);
ОборотнаяСторона.Область("ОбщийУчет").ГраницаСнизу =
?(Не (ИспользоватьБронирование И ЗначениеЗаполнено(ТекСтрока.ЗабронированОрганизацией))
И Не ЗаполнятьКарандашом
И Не ЗначениеЗаполнено(ТекСтрока.НомерКомандыПартии)
И Не ТекСтрока.ОтношениеКВоинскойОбязанности = Перечисления.ОтношениеКВоинскойОбязанности.Призывник,
Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная),
Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии));
Если ТекСтрока.ОтношениеКВоинскойОбязанности = Перечисления.ОтношениеКВоинскойОбязанности.Призывник Тогда
ОборотнаяСторона.Параметры.Звание = НСтр("ru = 'Подлежит призыву'");
КонецЕсли;
Если ИспользоватьБронирование И ЗначениеЗаполнено(ТекСтрока.ЗабронированОрганизацией) Тогда
Если ТипЗнч(ТекСтрока.ПриказОБронировании) = Тип("ДокументСсылка.ПриказОБронированииРаботников") Тогда
ОборотнаяСторона.Параметры.ДокументСпецучета = СокрЛП(Формат(ТекСтрока.ПриказОБронированииДата, "ДЛФ=Д") + " " + ЗарплатаКадрыОтчеты.НомерНаПечать(ТекСтрока.ПриказОБронированииНомер, ТекСтрока.ПриказОБронированииНомерПриказа));
ИначеЕсли ЗначениеЗаполнено(ТекСтрока.ДатаОформленияОтсрочки) Тогда
ОборотнаяСторона.Параметры.ДокументСпецучета = СокрЛП(ТекСтрока.СерияУдостоверенияОбОтсрочке + " " + ТекСтрока.НомерУдостоверенияОбОтсрочке + " " + Формат(ТекСтрока.ДатаОформленияОтсрочки, "ДЛФ=Д"));
ИначеЕсли ЗначениеЗаполнено(ТекСтрока.ДатаСписка) Тогда
ОборотнаяСторона.Параметры.ДокументСпецучета = СокрЛП(Формат(ТекСтрока.ДатаСписка, "ДЛФ=Д") + " " + ТекСтрока.ИсходящийНомерСписка);
КонецЕсли;
КонецЕсли;
Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
ДанныеДокументовРаботника = ДанныеДокументов.НайтиСтроки(Отбор);
Для Каждого ДанныеДокумента Из ДанныеДокументовРаботника Цикл
Если ДанныеДокумента.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ВоенныйБилет
Или ДанныеДокумента.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ВоенныйБилетОфицераЗапаса Тогда
ВоенныйБилет = ?(ДанныеДокумента.ВидДокумента = Справочники.ВидыДокументовФизическихЛиц.ВоенныйБилет,
НСтр("ru = 'Военный билет'"),
НСтр("ru = 'Военный билет офицера запаса'"));
Если ЗначениеЗаполнено(ДанныеДокумента.Серия) Или ЗначениеЗаполнено(ДанныеДокумента.Номер) Тогда
ВоенныйБилет = ВоенныйБилет + ", " + ДанныеДокумента.Серия + " " + ДанныеДокумента.Номер;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеДокумента.КемВыдан) Тогда
ВоенныйБилет = ВоенныйБилет + ", " + ДанныеДокумента.КемВыдан;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеДокумента.ДатаВыдачи) Тогда
ВоенныйБилет = ВоенныйБилет + ", " + Формат(ДанныеДокумента.ДатаВыдачи, "ДЛФ=ДД");
КонецЕсли;
ОборотнаяСторона.Параметры.ВоенныйБилет = ВоенныйБилет;
Прервать;
КонецЕсли;
Если ДокументыВоинскогоУчета.Найти(ДанныеДокумента.ВидДокумента) <> Неопределено Тогда
ВоенныйБилет = Строка(ДанныеДокумента.ВидДокумента);
Если ЗначениеЗаполнено(ДанныеДокумента.Серия) Или ЗначениеЗаполнено(ДанныеДокумента.Номер) Тогда
ВоенныйБилет = ВоенныйБилет + ", " + ДанныеДокумента.Серия + " " + ДанныеДокумента.Номер;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеДокумента.КемВыдан) Тогда
ВоенныйБилет = ВоенныйБилет + ", " + ДанныеДокумента.КемВыдан;
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеДокумента.ДатаВыдачи) Тогда
ВоенныйБилет = ВоенныйБилет + ", " + Формат(ДанныеДокумента.ДатаВыдачи, "ДЛФ=ДД");
КонецЕсли;
ОборотнаяСторона.Параметры.ВоенныйБилет = ВоенныйБилет;
КонецЕсли;
КонецЦикла;
Сч = 1;
Если ЗначениеЗаполнено(ТекСтрока.ПринадлежностьККазачеству) Тогда
ОборотнаяСторона.Параметры["ДополнительныеСведения" + Сч] = ТекСтрока.ПринадлежностьККазачеству;
Сч = Сч + 1;
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.АдминистративныеВзыскания) Тогда
ОборотнаяСторона.Параметры["ДополнительныеСведения" + Сч] = ТекСтрока.АдминистративныеВзыскания;
Сч = Сч + 1;
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ДопускКонтрольныхОрганов) Тогда
ОборотнаяСторона.Параметры["ДополнительныеСведения" + Сч] = ТекСтрока.ДопускКонтрольныхОрганов;
Сч = Сч + 1;
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ПрохождениеВоенныхСборов) Тогда
ОборотнаяСторона.Параметры["ДополнительныеСведения" + Сч] = ТекСтрока.ПрохождениеВоенныхСборов;
Сч = Сч + 1;
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.КонтрактНаПребываниеВРезерве) Тогда
ОборотнаяСторона.Параметры["ДополнительныеСведения" + Сч] = ТекСтрока.КонтрактНаПребываниеВРезерве;
Сч = Сч + 1;
КонецЕсли;
Если ЗначениеЗаполнено(ТекСтрока.ДополнительныеСведения) Тогда
ОборотнаяСторона.Параметры["ДополнительныеСведения" + Сч] = ТекСтрока.ДополнительныеСведения;
Сч = Сч + 1;
КонецЕсли;
ДанныеРабочихМестПоСотруднику = ДанныеРабочихМест.Получить(ТекСтрока.Сотрудник);
Если ДанныеРабочихМестПоСотруднику = Неопределено Тогда
ДанныеРабочихМестПоСотруднику = Новый Массив;
КонецЕсли;
Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
ДанныеКадровыхИзменений = ДополнительныеСведенияКарточки.ДанныеКадровыхИзменений.Скопировать(Отбор);
ДанныеКадровыхПриказов = Новый Массив;
ДанныеПриказа = Новый Структура("ОснованиеПеревода, ДолжностьПеревода, Военкомат, ДатаИсходящийНомер");
ПредыдущаяДолжность = Неопределено;
Для Каждого ДанныеПриемыПеремещения Из ДанныеРабочихМестПоСотруднику Цикл
Если ПредыдущаяДолжность <> Неопределено
И ДанныеПриемыПеремещения.ДолжностьПеревода = ПредыдущаяДолжность Тогда
Продолжить;
КонецЕсли;
ДанныеПриказа = Новый Структура("ОснованиеПеревода, ДолжностьПеревода, Военкомат, ДатаИсходящийНомер");
ДанныеПриказа.ОснованиеПеревода = ДанныеПриемыПеремещения.ОснованиеПеревода;
ДанныеПриказа.ДолжностьПеревода = ДанныеПриемыПеремещения.ДолжностьПеревода;
ДанныеПриказа.Военкомат = ПараметрыЗаголовка.Военкомат;
ПредыдущаяДолжность = ДанныеПриемыПеремещения.ДолжностьПеревода;
Отбор = Новый Структура("Приказ", ДанныеПриемыПеремещения.Регистратор);
ИмяДокументаВводаОстатков = "ПереносДанных";
Если Метаданные.Документы.Найти(ИмяДокументаВводаОстатков) <> Неопределено
И ТипЗнч(ДанныеПриемыПеремещения.Регистратор) = Тип("ДокументСсылка." + ИмяДокументаВводаОстатков) Тогда
Отбор.Вставить("ДатаСобытия", ДанныеПриемыПеремещения.ДатаПеревода);
Отбор.Вставить("ВидСобытия", ДанныеПриемыПеремещения.ВидСобытия);
КонецЕсли;
ДанныеСобытия = ДанныеКадровыхИзменений.НайтиСтроки(Отбор);
Если ДанныеСобытия.Количество() > 0 Тогда
ДанныеПриказа.ДатаИсходящийНомер = ДанныеСобытия[0].ДатаИИсходящийНомер;
КонецЕсли;
ДанныеКадровыхПриказов.Добавить(ДанныеПриказа);
КонецЦикла;
Если ЗначениеЗаполнено(ТекСтрока.ДатаУвольнения) И ТекСтрока.ДатаУвольнения <= ДатаОтчета Тогда
ДанныеПриказа = Новый Структура("ОснованиеПеревода, ДолжностьПеревода, Военкомат, ДатаИсходящийНомер");
ДанныеПриказа.ОснованиеПеревода = КадровыйУчет.ОснованиеДляРеестра(ТекСтрока.ДатаПриказаОбУвольнении, ТекСтрока.НомерПриказаОбУвольнении);
ДанныеПриказа.ДолжностьПеревода = ТекСтрока.Должность;
ДанныеПриказа.Военкомат = ПараметрыЗаголовка.Военкомат;
Отбор = Новый Структура("Приказ", ТекСтрока.ПриказОбУвольнении);
ДанныеСобытия = ДанныеКадровыхИзменений.НайтиСтроки(Отбор);
Если ДанныеСобытия.Количество() > 0 Тогда
ДанныеПриказа.ДатаИсходящийНомер = ДанныеСобытия[0].ДатаИИсходящийНомер;
КонецЕсли;
ДанныеКадровыхПриказов.Добавить(ДанныеПриказа);
КонецЕсли;
КоличествоПриказов = ДанныеКадровыхПриказов.Количество();
НачальныйИндекс = ?(КоличествоПриказов > 5, КоличествоПриказов - 5, 0);
Для Сч = 1 По 5 Цикл
Если Сч > КоличествоПриказов Тогда
Прервать;
КонецЕсли;
ИндексЭлемента = НачальныйИндекс + Сч - 1;
ОборотнаяСторона.Параметры["ОснованиеПеревода" + Сч] = ДанныеКадровыхПриказов[ИндексЭлемента].ОснованиеПеревода;
ОборотнаяСторона.Параметры["ДолжностьПеревода" + Сч] = ДанныеКадровыхПриказов[ИндексЭлемента].ДолжностьПеревода;
ОборотнаяСторона.Параметры["Военкомат" + Сч] = ДанныеКадровыхПриказов[ИндексЭлемента].Военкомат;
ОборотнаяСторона.Параметры["ДатаИсходящийНомер" + Сч] = ДанныеКадровыхПриказов[ИндексЭлемента].ДатаИсходящийНомер;
КонецЦикла;
Если ТекСтрока.ОтношениеКВоинскомуУчету = Перечисления.ОтношениеКВоинскомуУчету.СнятПоВозрасту Тогда
ОборотнаяСторона.Параметры.ДатаСнятияСВоинскогоУчета = Формат(ТекСтрока.ДатаСнятияСВоинскогоУчета, "ДЛФ=Д");
ОборотнаяСторона.Параметры.ПричинаСнятияСВоинскогоУчета = НСтр("ru = 'По возрасту'");
КонецЕсли;
Если ТекСтрока.ОтношениеКВоинскомуУчету = Перечисления.ОтношениеКВоинскомуУчету.СнятПоСостояниюЗдоровья Тогда
ОборотнаяСторона.Параметры.ДатаСнятияСВоинскогоУчета = Формат(ТекСтрока.ДатаСнятияСВоинскогоУчета, "ДЛФ=Д");
ОборотнаяСторона.Параметры.ПричинаСнятияСВоинскогоУчета = НСтр("ru = 'По состоянию здоровья'");
КонецЕсли;
ОборотнаяСторона.Параметры.ДатаОтчетаПредставление = ЗарплатаКадрыОтчеты.ФорматДатыЧислоВКавычкахМесяцПрописью(ПараметрыЗаголовка.ДатаОтчета, Истина);
Если ЗаполнятьКарандашом Тогда
ОборотнаяСторона.Параметры.НомерКомандыПартии = "";
ОборотнаяСторона.Параметры.ДокументСпецучета = "";
КонецЕсли;
ДокументРезультат.Вывести(ОборотнаяСторона);
КонецЦикла;
КонецПроцедуры
Функция ДополнительныеСведенияКарточкиГражданинаПодлежащегоВоинскомуУчету(СписокФизическихЛиц, ДатаОтчета)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("СписокФизическихЛиц", СписокФизическихЛиц);
Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеКадровыхИзменений.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеКадровыхИзменений.Приказ КАК Приказ,
| ДанныеКадровыхИзменений.ДатаИИсходящийНомер КАК ДатаИИсходящийНомер,
| ДанныеКадровыхИзменений.ДатаСобытия КАК ДатаСобытия,
| ДанныеКадровыхИзменений.ВидСобытия КАК ВидСобытия
|ИЗ
| РегистрСведений.ДанныеКадровыхИзмененийДляВоенкомата.СрезПоследних(&ДатаОтчета, ФизическоеЛицо В (&СписокФизическихЛиц)) КАК ДанныеКадровыхИзменений
|;
|
|
|ВЫБРАТЬ
| ДанныеСверкиСВоеннымКомиссариатом.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеСверкиСВоеннымКомиссариатом.Период КАК Период,
| ДанныеСверкиСВоеннымКомиссариатом.СверкуПровел КАК СверкуПровел,
| ДанныеСверкиСВоеннымКомиссариатом.НомерСписка КАК НомерСписка,
| ДанныеСверкиСВоеннымКомиссариатом.СверкуПровел.Фамилия КАК СверкуПровелФамилия,
| ДанныеСверкиСВоеннымКомиссариатом.СверкуПровел.Имя КАК СверкуПровелИмя
|ИЗ
| РегистрСведений.ДанныеСверкиСВоеннымКомиссариатом.СрезПоследних(&ДатаОтчета, ФизическоеЛицо В (&СписокФизическихЛиц)) КАК ДанныеСверкиСВоеннымКомиссариатом
|;
|
|
|ВЫБРАТЬ
| ДанныеСверкиСДокументамиВоинскогоУчета.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеСверкиСДокументамиВоинскогоУчета.Период КАК Период,
| ДанныеСверкиСДокументамиВоинскогоУчета.СверкуПровел КАК СверкуПровел,
| ДанныеСверкиСДокументамиВоинскогоУчета.СверкуПровел.Фамилия КАК СверкуПровелФамилия,
| ДанныеСверкиСДокументамиВоинскогоУчета.СверкуПровел.Имя КАК СверкуПровелИмя
|ИЗ
| РегистрСведений.ДанныеСверкиСДокументамиВоинскогоУчета.СрезПоследних(&ДатаОтчета, ФизическоеЛицо В (&СписокФизическихЛиц)) КАК ДанныеСверкиСДокументамиВоинскогоУчета";
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ДанныеКадровыхИзменений = РезультатыЗапроса[0].Выгрузить();
ДанныеКадровыхИзменений.Индексы.Добавить("ФизическоеЛицо");
СверкаСВоеннымКомиссариатом = РезультатыЗапроса[1].Выгрузить();
СверкаСВоеннымКомиссариатом.Индексы.Добавить("ФизическоеЛицо");
СверкаСДокументамиВоинскогоУчета = РезультатыЗапроса[2].Выгрузить();
СверкаСДокументамиВоинскогоУчета.Индексы.Добавить("ФизическоеЛицо");
ДополнительныеСведения = Новый Структура;
ДополнительныеСведения.Вставить("ДанныеКадровыхИзменений", ДанныеКадровыхИзменений);
ДополнительныеСведения.Вставить("СверкаСВоеннымКомиссариатом", СверкаСВоеннымКомиссариатом);
ДополнительныеСведения.Вставить("СверкаСДокументамиВоинскогоУчета", СверкаСДокументамиВоинскогоУчета);
Возврат ДополнительныеСведения;
КонецФункции
Процедура УстановитьДатуОтчета(НастройкиОтчета, ДатаОтчета)
ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
Если ЗначениеПараметраПериод <> Неопределено Тогда
УстановитьДатуОтчета = Ложь;
Если ТипЗнч(ЗначениеПараметраПериод.Значение) = Тип("Неопределено") Тогда
УстановитьДатуОтчета = Истина;
КонецЕсли;
Если ТипЗнч(ЗначениеПараметраПериод.Значение) = Тип("Дата")
И ЗначениеПараметраПериод.Значение = '00010101' Тогда
УстановитьДатуОтчета = Истина;
КонецЕсли;
Если ТипЗнч(ЗначениеПараметраПериод.Значение) = Тип("СтандартнаяДатаНачала")
И Дата(ЗначениеПараметраПериод.Значение) = '00010101' Тогда
УстановитьДатуОтчета = Истина;
КонецЕсли;
Если УстановитьДатуОтчета Тогда
ЗначениеПараметраПериод.Значение = ТекущаяДатаСеанса();
КонецЕсли;
ДатаОтчета = Дата(ЗначениеПараметраПериод.Значение);
КонецЕсли;
КонецПроцедуры
Процедура УстановитьПериодОтчета(НастройкиОтчета, ДатаОтчета)
ЗначениеПараметраПериодОтчета = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета"));
Если ЗначениеПараметраПериодОтчета <> Неопределено И ЗначениеПараметраПериодОтчета.Значение <> '00010101' Тогда
НачалоПериода = ЗначениеПараметраПериодОтчета.Значение.ДатаНачала;
КонецПериода = ЗначениеПараметраПериодОтчета.Значение.ДатаОкончания;
Если НачалоПериода = '00010101' Тогда
ЗначениеПараметраПериодОтчета.Значение.ДатаНачала = НачалоМесяца(ТекущаяДатаСеанса());
КонецЕсли;
Если КонецПериода = '00010101' Тогда
ЗначениеПараметраПериодОтчета.Значение.ДатаОкончания = КонецМесяца(ТекущаяДатаСеанса());
КонецЕсли;
ЗначениеПараметраПериод = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
Если ЗначениеПараметраПериод <> Неопределено Тогда
ЗначениеПараметраПериод.Значение = НачалоДня(ЗначениеПараметраПериодОтчета.Значение.ДатаОкончания);
КонецЕсли;
ДатаОтчета = Дата(ЗначениеПараметраПериод.Значение);
КонецЕсли;
КонецПроцедуры
Функция ПараметрыЗаголовкаСтруктура(ДатаОтчета, Организация, Военкомат = Неопределено)
ПараметрыЗаголовка = Новый Структура;
ПараметрыЗаголовка.Вставить("Наименование", "");
ПараметрыЗаголовка.Вставить("НаименованиеПолное", "");
ПараметрыЗаголовка.Вставить("ЮрАдресОрганизации", "");
ПараметрыЗаголовка.Вставить("ФактАдресОрганизации", "");
ПараметрыЗаголовка.Вставить("ПочтовыйАдресОрганизации", "");
Если ЗначениеЗаполнено(Организация) Тогда
ДанныеОрганизации = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Организация, "Наименование, НаименованиеПолное");
ЗаполнитьЗначенияСвойств(ПараметрыЗаголовка, ДанныеОрганизации);
ПараметрыЗаголовка.ЮрАдресОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Организация, Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации, ДатаОтчета);
ПараметрыЗаголовка.ФактАдресОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Организация, Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации, ДатаОтчета);
ПараметрыЗаголовка.ПочтовыйАдресОрганизации = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Организация, Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресОрганизации, ДатаОтчета);
КонецЕсли;
ПолноеНаименованиеОрганизации = ?(ЗначениеЗаполнено(ПараметрыЗаголовка.НаименованиеПолное), ПараметрыЗаголовка.НаименованиеПолное, ПараметрыЗаголовка.Наименование);
ПараметрыЗаголовка.Вставить("ДатаОтчета", ДатаОтчета);
ПараметрыЗаголовка.Вставить("Организация", Организация);
ПараметрыЗаголовка.Вставить("ПолноеНаименованиеОрганизации", ПолноеНаименованиеОрганизации);
ПараметрыЗаголовка.Вставить("Военкомат", Военкомат);
ЗаполнитьПодписантов(ПараметрыЗаголовка, Организация, ДатаОтчета);
Возврат ПараметрыЗаголовка;
КонецФункции
Процедура ЗаполнитьПодписантов(ПараметрыЗаголовка, Организация, ДатаОтчета)
ПараметрыЗаполнения = Новый Структура("Руководитель,РуководительРасшифровкаПодписи,ДолжностьРуководителя,ОтветственныйЗаВУР,ФИОРуководителя,"
+ "ОтветственныйЗаВУРРасшифровкаПодписи,ДолжностьОтветственногоЗаВУР,ФИООтветственногоЗаВУР");
КлючиОтветственныхЛиц = "";
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрРуководитель = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Руководитель"));
Если ПараметрРуководитель <> Неопределено И ПараметрРуководитель.Использование Тогда
Если ЗначениеЗаполнено(ПараметрРуководитель.Значение) Тогда
ПараметрыЗаполнения.Руководитель = ПараметрРуководитель.Значение;
КонецЕсли;
Иначе
КлючиОтветственныхЛиц = "Руководитель";
КонецЕсли;
ПараметрДолжностьРуководителя = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДолжностьРуководителя"));
Если ПараметрДолжностьРуководителя <> Неопределено И ПараметрДолжностьРуководителя.Использование Тогда
ПараметрыЗаполнения.ДолжностьРуководителя = ПараметрДолжностьРуководителя.Значение;
Иначе
КлючиОтветственныхЛиц = ?(ПустаяСтрока(КлючиОтветственныхЛиц), "", КлючиОтветственныхЛиц + ",") + "ДолжностьРуководителя,ДолжностьРуководителяСтрокой";
КонецЕсли;
ПараметрОтветственныйЗаВУР = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ОтветственныйЗаВУР"));
Если ПараметрОтветственныйЗаВУР <> Неопределено И ПараметрОтветственныйЗаВУР.Использование Тогда
Если ЗначениеЗаполнено(ПараметрОтветственныйЗаВУР.Значение) Тогда
ПараметрыЗаполнения.ОтветственныйЗаВУР = ПараметрОтветственныйЗаВУР.Значение;
КонецЕсли;
Иначе
КлючиОтветственныхЛиц = ?(ПустаяСтрока(КлючиОтветственныхЛиц), "", КлючиОтветственныхЛиц + ",") + "ОтветственныйЗаВУР";
КонецЕсли;
ПараметрДолжностьОтветственногоЗаВУР = НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДолжностьОтветственногоЗаВУР"));
Если ПараметрДолжностьОтветственногоЗаВУР <> Неопределено И ПараметрДолжностьОтветственногоЗаВУР.Использование Тогда
ПараметрыЗаполнения.ДолжностьОтветственногоЗаВУР = ПараметрДолжностьОтветственногоЗаВУР.Значение;
Иначе
КлючиОтветственныхЛиц = ?(ПустаяСтрока(КлючиОтветственныхЛиц), "", КлючиОтветственныхЛиц + ",") + "ДолжностьОтветственногоЗаВУР,ДолжностьОтветственногоЗаВУРСтрокой";
КонецЕсли;
Если Не ПустаяСтрока(КлючиОтветственныхЛиц) Тогда
ОтветственныеЛица = Новый Структура("Организация," + КлючиОтветственныхЛиц, Организация);
ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ОтветственныеЛица, ДатаОтчета);
ЗаполнитьЗначенияСвойств(ПараметрыЗаполнения, ОтветственныеЛица);
Если ОтветственныеЛица.Свойство("ДолжностьРуководителя") И ЗначениеЗаполнено(ОтветственныеЛица.ДолжностьРуководителя) Тогда
ПараметрыЗаполнения.ДолжностьРуководителя = Строка(ОтветственныеЛица.ДолжностьРуководителя);
КонецЕсли;
Если ОтветственныеЛица.Свойство("ДолжностьОтветственногоЗаВУР") И ЗначениеЗаполнено(ОтветственныеЛица.ДолжностьОтветственногоЗаВУР) Тогда
ПараметрыЗаполнения.ДолжностьОтветственногоЗаВУР = Строка(ОтветственныеЛица.ДолжностьОтветственногоЗаВУР);
КонецЕсли;
Если ОтветственныеЛица.Свойство("ДолжностьРуководителяСтрокой") И ЗначениеЗаполнено(ОтветственныеЛица.ДолжностьРуководителяСтрокой) Тогда
ПараметрыЗаполнения.ДолжностьРуководителя = ОтветственныеЛица.ДолжностьРуководителяСтрокой;
КонецЕсли;
Если ОтветственныеЛица.Свойство("ДолжностьОтветственногоЗаВУРСтрокой") И ЗначениеЗаполнено(ОтветственныеЛица.ДолжностьОтветственногоЗаВУРСтрокой) Тогда
ПараметрыЗаполнения.ДолжностьОтветственногоЗаВУР = ОтветственныеЛица.ДолжностьОтветственногоЗаВУРСтрокой;
КонецЕсли;
КонецЕсли;
МассивФизЛиц = Новый Массив;
Если ЗначениеЗаполнено(ПараметрыЗаполнения.Руководитель) Тогда
МассивФизЛиц.Добавить(ПараметрыЗаполнения.Руководитель);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗаполнения.ОтветственныйЗаВУР) Тогда
МассивФизЛиц.Добавить(ПараметрыЗаполнения.ОтветственныйЗаВУР);
КонецЕсли;
Если МассивФизЛиц.Количество() > 0 Тогда
ФИОФизЛиц = ЗарплатаКадры.СоответствиеФИОФизЛицСсылкам(ДатаОтчета, МассивФизЛиц);
ФИОРуководителя = ФИОФизЛиц[ПараметрыЗаполнения.Руководитель];
Если ЗначениеЗаполнено(ФИОРуководителя) Тогда
ПараметрыЗаполнения.РуководительРасшифровкаПодписи = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ФИОРуководителя);
ПараметрыЗаполнения.ФИОРуководителя = ФИОРуководителя.Фамилия + " " + ФИОРуководителя.Имя + " " + ФИОРуководителя.Отчество;
КонецЕсли;
ФИООтветственногоЗаВУР = ФИОФизЛиц[ПараметрыЗаполнения.ОтветственныйЗаВУР];
Если ЗначениеЗаполнено(ФИООтветственногоЗаВУР) Тогда
ПараметрыЗаполнения.ОтветственныйЗаВУРРасшифровкаПодписи = ФизическиеЛицаЗарплатаКадры.РасшифровкаПодписи(ФИООтветственногоЗаВУР);
ПараметрыЗаполнения.ФИООтветственногоЗаВУР = ФИООтветственногоЗаВУР.Фамилия + " " + ФИООтветственногоЗаВУР.Имя + " " + ФИООтветственногоЗаВУР.Отчество;
КонецЕсли;
КонецЕсли;
Для каждого КлючИЗначение Из ПараметрыЗаполнения Цикл
ПараметрыЗаголовка.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
КонецПроцедуры
Функция ТелефоныПодписантов(ПараметрыЗаголовка)
МассивФизическихЛиц = Новый Массив;
Если ЗначениеЗаполнено(ПараметрыЗаголовка.Руководитель) Тогда
МассивФизическихЛиц.Добавить(ПараметрыЗаголовка.Руководитель);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыЗаголовка.ОтветственныйЗаВУР) Тогда
МассивФизическихЛиц.Добавить(ПараметрыЗаголовка.ОтветственныйЗаВУР);
КонецЕсли;
ТелефоныПодписантов = Новый Соответствие;
Если МассивФизическихЛиц.Количество() = 0 Тогда
Возврат ТелефоныПодписантов;
КонецЕсли;
РабочиеТелефоныПодписантов = КонтактнаяИнформацияБЗК.КонтактнаяИнформацияОбъектов(
МассивФизическихЛиц,
,
Справочники.ВидыКонтактнойИнформации.ТелефонРабочийФизическиеЛица);
Для Каждого ДанныеПодписанта Из РабочиеТелефоныПодписантов Цикл
ТелефоныПодписантов.Вставить(ДанныеПодписанта.Объект, ДанныеПодписанта.Представление);
КонецЦикла;
Возврат ТелефоныПодписантов;
КонецФункции
Функция ОбразованиеФизическихЛиц(ДанныеОтчета)
СписокФизическихЛиц = Новый Массив;
Для Каждого ТекСтрока Из ДанныеОтчета Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ВидОбразованияНаименование) Тогда
СписокФизическихЛиц.Добавить(ТекСтрока.ФизическоеЛицо);
КонецЕсли;
КонецЦикла;
Если СписокФизическихЛиц.Количество() = 0 Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
Запрос = Новый Запрос;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("СписокФизическихЛиц", СписокФизическихЛиц);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ФизическиеЛица.Ссылка КАК ФизическоеЛицо
|ПОМЕСТИТЬ ВТФизическиеЛица
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.Ссылка В(&СписокФизическихЛиц)";
Запрос.Выполнить();
ОписательОтборов = Новый Структура("ИмяВременнойТаблицыОтборовФизическихЛиц,ИмяПоляФизическоеЛицо", "ВТФизическиеЛица", "ФизическоеЛицо");
КадровыйУчет.СоздатьВТОбразованияФизическихЛиц(МенеджерВременныхТаблиц, Истина, ОписательОтборов);
Запрос.Текст =
"ВЫБРАТЬ
| ОбразованияФизическихЛиц.*
|ИЗ
| ВТОбразованияФизическихЛиц КАК ОбразованияФизическихЛиц
|
|УПОРЯДОЧИТЬ ПО
| ОбразованияФизическихЛиц.Окончание УБЫВ";
Образование = Запрос.Выполнить().Выгрузить();
Образование.Индексы.Добавить("ФизическоеЛицо");
Возврат Образование;
КонецФункции
Функция РабочиеМестаСотрудников(СписокСотрудников, ДатаОтчета, НастройкиПечатныхФорм)
ДанныеРабочихМест = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ПараметрыПолученияРабочихМест = КадровыйУчет.ПараметрыДляЗапросВТРабочиеМестаСотрудниковПоСпискуСотрудников(СписокСотрудников, , ДатаОтчета);
КадровыйУчет.СоздатьВТРабочиеМестаСотрудников(Запрос.МенеджерВременныхТаблиц, Истина, ПараметрыПолученияРабочихМест);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РабочиеМестаСотрудников.ДокументОснование КАК Регистратор
|ИЗ
| ВТРабочиеМестаСотрудников КАК РабочиеМестаСотрудников";
РегистраторыПриказов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Регистратор");
РеквизитыПриказов = Новый Соответствие;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы.КадровыйУчетРасширенная") Тогда
МодульКадровыйУчетРасширенный = ОбщегоНазначения.ОбщийМодуль("КадровыйУчетРасширенный");
РеквизитыПриказов = МодульКадровыйУчетРасширенный.РеквизитыКадровыхПриказов(РегистраторыПриказов);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыРасширеннаяПодсистемы.РасчетЗарплатыРасширенная.РазрядыКатегорииДолжностей") Тогда
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(Запрос.МенеджерВременныхТаблиц, "ВТРабочиеМестаСотрудников");
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, "РазрядКатегория");
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РабочиеМестаСотрудников.Период КАК Период,
| РабочиеМестаСотрудников.Сотрудник КАК Сотрудник,
| РабочиеМестаСотрудников.Подразделение КАК Подразделение,
| РабочиеМестаСотрудников.Должность КАК Должность,
| РабочиеМестаСотрудников.ДокументОснование КАК ДокументОснование,
| КадровыеДанные.РазрядКатегория КАК Разряд,
| ВЫБОР
| КОГДА КадровыеДанные.РазрядКатегория ЕСТЬ NULL
| ТОГДА """"
| ИНАЧЕ КадровыеДанные.РазрядКатегория.НаименованиеПолное
| КОНЕЦ КАК РазрядНаименованиеПолное
|ПОМЕСТИТЬ ВТКадровыеСобытия
|ИЗ
| ВТРабочиеМестаСотрудников КАК РабочиеМестаСотрудников
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанные
| ПО РабочиеМестаСотрудников.Сотрудник = КадровыеДанные.Сотрудник
| И РабочиеМестаСотрудников.Период = КадровыеДанные.Период";
Запрос.Выполнить();
Иначе
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РабочиеМестаСотрудников.Период КАК Период,
| РабочиеМестаСотрудников.Сотрудник КАК Сотрудник,
| РабочиеМестаСотрудников.Подразделение КАК Подразделение,
| РабочиеМестаСотрудников.Должность КАК Должность,
| РабочиеМестаСотрудников.ДокументОснование КАК ДокументОснование,
| NULL КАК Разряд,
| """" КАК РазрядНаименованиеПолное
|ПОМЕСТИТЬ ВТКадровыеСобытия
|ИЗ
| ВТРабочиеМестаСотрудников КАК РабочиеМестаСотрудников";
Запрос.Выполнить();
КонецЕсли;
ПринятыеНаРаботуПоДоговорам = Новый ТаблицаЗначений;
ПринятыеНаРаботуПоДоговорам.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
ПринятыеНаРаботуПоДоговорам.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ПринятыеНаРаботуПоДоговорам.Колонки.Добавить("Регистратор");
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КадровыеСобытия.Период КАК Период,
| КадровыеСобытия.Сотрудник КАК Сотрудник,
| КадровыеСобытия.Подразделение КАК Подразделение,
| КадровыеСобытия.Должность КАК Должность,
| КадровыеСобытия.Разряд КАК Разряд,
| КадровыеСобытия.РазрядНаименованиеПолное КАК РазрядНаименованиеПолное,
| КадровыеСобытия.ДокументОснование КАК Регистратор,
| КадровыеСобытия.ДокументОснование.Номер КАК РегистраторНомер,
| КадровыеСобытия.ДокументОснование.НомерПриказа КАК РегистраторНомерПриказа,
| КадровыеСобытия.ДокументОснование.Дата КАК РегистраторДата
|ИЗ
| ВТКадровыеСобытия КАК КадровыеСобытия
|
|УПОРЯДОЧИТЬ ПО
| Сотрудник,
| Период";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
ДанныеСотрудника = Новый Массив;
Пока Выборка.Следующий() Цикл
СтруктураСтроки = Новый Структура();
СтруктураСтроки.Вставить("ДатаПеревода", Выборка.Период);
Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений И ЗначениеЗаполнено(Выборка.Подразделение) Тогда
СтруктураСтроки.Вставить("ПодразделениеПеревода", Выборка.Подразделение.ПолноеНаименование());
Иначе
СтруктураСтроки.Вставить("ПодразделениеПеревода", Выборка.Подразделение);
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Разряд) Тогда
Если ЗначениеЗаполнено(Выборка.РазрядНаименованиеПолное) Тогда
СтруктураСтроки.Вставить("ДолжностьПеревода", Строка(Выборка.Должность) + ", " + Выборка.РазрядНаименованиеПолное);
Иначе
СтруктураСтроки.Вставить("ДолжностьПеревода", Строка(Выборка.Должность) + ", " + Строка(Выборка.Разряд));
КонецЕсли;
Иначе
СтруктураСтроки.Вставить("ДолжностьПеревода", Строка(Выборка.Должность));
КонецЕсли;
РеквизитыПриказа = РеквизитыПриказов[Выборка.Регистратор];
Если РеквизитыПриказа <> Неопределено Тогда
НомерПриказа = РеквизитыПриказа.НомерПриказа;
ДатаПриказа = РеквизитыПриказа.Дата;
Если РеквизитыПриказа.ПриемТрудовымДоговором = Истина Тогда
ЗаполнитьЗначенияСвойств(ПринятыеНаРаботуПоДоговорам.Добавить(), Выборка);
КонецЕсли;
Иначе
НомерПриказа = ЗарплатаКадрыОтчеты.НомерНаПечать(
Выборка.РегистраторНомер, Выборка.РегистраторНомерПриказа);
ДатаПриказа = Выборка.РегистраторДата;
КонецЕсли;
СтруктураСтроки.Вставить("ОснованиеПеревода", НСтр("ru='Пр'") + ". № "
+ НомерПриказа + " " + НСтр("ru='от'") + " " + Формат(ДатаПриказа, "ДЛФ=D"));
СтруктураСтроки.Вставить("Регистратор", Выборка.Регистратор);
ДанныеСотрудника.Добавить(СтруктураСтроки);
КонецЦикла;
ДанныеРабочихМест.Вставить(Выборка.Сотрудник, ДанныеСотрудника);
КонецЦикла;
Если ПринятыеНаРаботуПоДоговорам.Количество() > 0 Тогда
КадровыеДанныеСотрудниковПринятыхНаРаботуПоДоговорам = КадровыйУчет.КадровыеДанныеСотрудниковПоТаблицеЗначений(
Истина, ПринятыеНаРаботуПоДоговорам, "ПриказОПриемеВидДоговора,ПриказОПриемеТрудовойДоговорНомер,ПриказОПриемеТрудовойДоговорДата");
Для Каждого ДанныеТрудовогоДоговора Из КадровыеДанныеСотрудниковПринятыхНаРаботуПоДоговорам Цикл
ДанныеСотрудника = ДанныеРабочихМест[ДанныеТрудовогоДоговора.Сотрудник];
Если ДанныеСотрудника = Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого ДанныеСобытия Из ДанныеСотрудника Цикл
Если ПринятыеНаРаботуПоДоговорам.Найти(ДанныеСобытия.Регистратор, "Регистратор") <> Неопределено Тогда
Если Не ЗначениеЗаполнено(ДанныеТрудовогоДоговора.ПриказОПриемеВидДоговора)
Или ДанныеТрудовогоДоговора.ПриказОПриемеВидДоговора = Перечисления.ВидыДоговоровССотрудниками.ТрудовойДоговор Тогда
Основание = СтрШаблон(НСтр("ru = 'Тр. дог. №%1 от %2'"),
ДанныеТрудовогоДоговора.ПриказОПриемеТрудовойДоговорНомер,
Формат(ДанныеТрудовогоДоговора.ПриказОПриемеТрудовойДоговорДата, "ДЛФ=D"));
Иначе
Основание = СтрШаблон(НСтр("ru = 'Контр. №%1 от %2'"),
ДанныеТрудовогоДоговора.ПриказОПриемеТрудовойДоговорНомер,
Формат(ДанныеТрудовогоДоговора.ПриказОПриемеТрудовойДоговорДата, "ДЛФ=D"));
КонецЕсли;
ДанныеСобытия.Вставить("ОснованиеПеревода", Основание);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Возврат ДанныеРабочихМест;
КонецФункции
Процедура ОчиститьОбласть(ОбластьМакета)
Для Счетчик = 0 По ОбластьМакета.Параметры.Количество() - 1 Цикл
ОбластьМакета.Параметры[Счетчик] = ""
КонецЦикла;
КонецПроцедуры
Функция ПредставлениеМестаРождения(Знач МестоРожденияСтрокой) Экспорт
Возврат ВоинскийУчет.ПредставлениеМестаРождения(МестоРожденияСтрокой);
КонецФункции
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли