Ходатайство о бронировании / Модуль менеджера

файл

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.УправлениеДоступом

// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ДляВсехСтрок( ЗначениеРазрешено(Сотрудники.ФизическоеЛицо, NULL КАК ИСТИНА)
	|	) И ЗначениеРазрешено(Организация)";
КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

#Область СлужебныйПрограммныйИнтерфейс

#Область ОбработчикиПравилРегистрации

// См. ЗарплатаКадрыРасширенныйСинхронизацияДанных.ШаблонОбработчика
Процедура ПриЗаполненииНастроекОбработчиковПравилРегистрации(Настройки) Экспорт
	ВоинскийУчет.ДляОтбораПоОрганизации(Настройки);
	ВоинскийУчет.ДляОбъектаСПрисоединеннымиФайлами(Настройки);
КонецПроцедуры

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

// Возвращает описание состава документа
//
// Возвращаемое значение:
//  Структура - см. ЗарплатаКадрыСоставДокументов.НовоеОписаниеСоставаОбъекта.
Функция ОписаниеСоставаОбъекта() Экспорт
	
	МетаданныеДокумента = Метаданные.Документы.ХодатайствоОБронированииГражданПребывающихВЗапасе;
	ОписаниеСоставаОбъекта = ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаПоМетаданнымФизическиеЛицаВТабличныхЧастях(МетаданныеДокумента);
	ОписаниеСоставаОбъекта.ЗаполнятьФизическиеЛицаПоСотрудникам = Ложь;
	Возврат ОписаниеСоставаОбъекта;
	
КонецФункции

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

#Область СлужебныеПроцедурыИФункции

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

КонецПроцедуры

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	// Ходатайство о бронировании в соответствии с перечнем (форма № 8).
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
	КомандаПечати.Идентификатор = "ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем";
	КомандаПечати.Представление = НСтр("ru = 'Ходатайство о бронировании в соответствии с перечнем (форма № 8)'");
	КомандаПечати.Порядок = 10;
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	
	// Ходатайство об индивидуальном бронировании (форма № 2).
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
	КомандаПечати.Идентификатор = "ПФ_MXL_ХодатайствоОбИндивидуальномБронировании";
	КомандаПечати.Представление = НСтр("ru = 'Ходатайство об индивидуальном бронировании (форма № 2)'");
	КомандаПечати.Порядок = 20;
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
	
КонецПроцедуры

// Сформировать печатные формы объектов.
//
// ВХОДЯЩИЕ:
//   МассивОбъектов  - Массив    - Массив ссылок на объекты которые нужно распечатать.
//
// ИСХОДЯЩИЕ:
//   КоллекцияПечатныхФорм - Таблица значений - Сформированные табличные документы.
//   ОшибкиПечати          - Список значений  - Ошибки печати  (значение - ссылка на объект, представление - текст
//                           ошибки).
//   ОбъектыПечати         - Список значений  - Объекты печати (значение - ссылка на объект, представление - имя
//                           области в которой был выведен объект).
//   ПараметрыВывода       - Структура        - Параметры сформированных табличных документов.
//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем") Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
						КоллекцияПечатныхФорм, 
						"ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем", 
						НСтр("ru = 'Ходатайство о бронировании в соответствии с перечнем (форма № 8)'"), 
						ПечатнаяФормаХодатайстваОБронированииВСоответствииСПеречнем(МассивОбъектов, ОбъектыПечати), ,
						"Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем");
	КонецЕсли;					
						
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_ХодатайствоОбИндивидуальномБронировании") Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
						КоллекцияПечатныхФорм, 
						"ПФ_MXL_ХодатайствоОбИндивидуальномБронировании", 
						НСтр("ru = 'Ходатайство об индивидуальном бронировании (форма № 2)'"), 
						ПечатнаяФормаХодатайстваОбИндивидуальномБронировании(МассивОбъектов, ОбъектыПечати), ,
						"Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОбИндивидуальномБронировании");
	КонецЕсли;
	
КонецПроцедуры								

#Область ПроцедурыФункцииПечатиБланковВоинскогоУчета

Функция ПечатнаяФормаХодатайстваОБронированииВСоответствииСПеречнем(МассивОбъектов, ОбъектыПечати)
	
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ХодатайствоОБронированииВСоответствииСПеречнем";
	
	ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
	ДанныеДляПечати = ДанныеДляПечатиДокументаХодатайствоОБронировании(МассивОбъектов);
	
	ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоШапке.Выбрать();
	ВыборкаПоСтрокам 	= ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать();
	
	Пока ВыборкаПоДокументам.Следующий() Цикл
		
		Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем2023");
		
		ИспользоватьФорму2017 = Ложь;
		ИспользоватьФорму2023 = Ложь;
		Если ВыборкаПоДокументам.ДатаДок >= '20231102' Тогда
			ИспользоватьФорму2023 = Истина;
		ИначеЕсли ВыборкаПоДокументам.ДатаДок >= '20170801' Тогда 
			ИспользоватьФорму2017 = Истина;
			Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем2017");
		Иначе 
			Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОБронированииВСоответствииСПеречнем");
		КонецЕсли;
		
		Заголовок 	  = Макет.ПолучитьОбласть("Заголовок");
		Шапка 		  = Макет.ПолучитьОбласть("Шапка");
		СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
		Подвал 		  = Макет.ПолучитьОбласть("Подвал");
		
		ВыводимыеОбласти = Новый Массив;
		ВыводимыеОбласти.Добавить(СтрокаТаблицы);
		ВыводимыеОбласти.Добавить(Подвал);
		
		НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
		
	    ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ВыборкаПоДокументам);
		
		ТабДокумент.Вывести(Заголовок);
		ТабДокумент.Вывести(Шапка);
		
		СтруктураПоиска = Новый Структура("Ссылка", ВыборкаПоДокументам.Ссылка);
		
		ВыборкаПоСтрокам.Сбросить();
		
		Пока ВыборкаПоСтрокам.НайтиСледующий(СтруктураПоиска) Цикл 
			
	    	ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, ВыборкаПоСтрокам);
			
			Если ИспользоватьФорму2017 Или ИспользоватьФорму2023 Тогда 
				ДанныеДолжности = ВыборкаПоСтрокам.КодВЭД + Символы.ПС + ВыборкаПоСтрокам.КодДолжности;
				Если Не ЗначениеЗаполнено(ВыборкаПоСтрокам.КодВЭД) И Не ЗначениеЗаполнено(ВыборкаПоСтрокам.КодДолжности) Тогда 
					ДанныеДолжности = ВыборкаПоСтрокам.ОписаниеПунктаПеречня;
				КонецЕсли;
				СтрокаТаблицы.Параметры.ДанныеДолжности = ДанныеДолжности;
			КонецЕсли;
			
			Если ИспользоватьФорму2023 Тогда 
				Должность = Строка(ВыборкаПоСтрокам.Должность) 
					+ Символы.ПС + ВыборкаПоДокументам.ПолноеНаименованиеОрганизации 
					+ Символы.ПС + ВыборкаПоДокументам.ИНН;
				СтрокаТаблицы.Параметры.Должность = Должность;
			КонецЕсли;
			
			Если Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти) Тогда
				ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			
			ТабДокумент.Вывести(СтрокаТаблицы);
			
		КонецЦикла;	
			
	    ЗаполнитьЗначенияСвойств(Подвал.Параметры, ВыборкаПоДокументам);
		
		ТабДокумент.Вывести(Подвал);
		
	    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции	

Функция ПечатнаяФормаХодатайстваОбИндивидуальномБронировании(МассивОбъектов, ОбъектыПечати)
	
	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ХодатайствоОбИндивидуальномБронировании";
	
	ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	
	ДанныеДляПечати = ДанныеДляПечатиДокументаХодатайствоОБронировании(МассивОбъектов);
	
	ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоШапке.Выбрать();
	ВыборкаПоСтрокам 	= ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать();
	
	Пока ВыборкаПоДокументам.Следующий() Цикл
		
		Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОбИндивидуальномБронировании2017");
		
		ИспользоватьФорму2017 = ВыборкаПоДокументам.ДатаДок >= '20170801';
		Если Не ИспользоватьФорму2017 Тогда
			Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.ПФ_MXL_ХодатайствоОбИндивидуальномБронировании");
		КонецЕсли;
		
		Заголовок 	  = Макет.ПолучитьОбласть("Заголовок");
		Шапка 		  = Макет.ПолучитьОбласть("Шапка");
		СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
		Подвал 		  = Макет.ПолучитьОбласть("Подвал");
		
		ВыводимыеОбласти = Новый Массив;
		ВыводимыеОбласти.Добавить(СтрокаТаблицы);
		ВыводимыеОбласти.Добавить(Подвал);
		
		НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
		
	    ЗаполнитьЗначенияСвойств(Заголовок.Параметры, ВыборкаПоДокументам);
		
		ТабДокумент.Вывести(Заголовок);
		ТабДокумент.Вывести(Шапка);
		
		СтруктураПоиска = Новый Структура("Ссылка", ВыборкаПоДокументам.Ссылка);
		
		ВыборкаПоСтрокам.Сбросить();
		
		Пока ВыборкаПоСтрокам.НайтиСледующий(СтруктураПоиска) Цикл 
			
	    	ЗаполнитьЗначенияСвойств(СтрокаТаблицы.Параметры, ВыборкаПоСтрокам);
			
			Если ИспользоватьФорму2017 Тогда 
				ДанныеДолжности = ВыборкаПоСтрокам.КодВЭД + Символы.ПС + ВыборкаПоСтрокам.КодДолжности;
				Если Не ЗначениеЗаполнено(ВыборкаПоСтрокам.КодВЭД) И Не ЗначениеЗаполнено(ВыборкаПоСтрокам.КодДолжности) Тогда 
					ДанныеДолжности = ВыборкаПоСтрокам.ОписаниеПунктаПеречня;
				КонецЕсли;
				Если Не ЗначениеЗаполнено(ВыборкаПоСтрокам.ПунктПеречня) Тогда 
					ДанныеДолжности = НСтр("ru = 'в Перечне нет'");
				КонецЕсли;
				СтрокаТаблицы.Параметры.ДанныеДолжности = ДанныеДолжности;
				Если Не ЗначениеЗаполнено(ВыборкаПоСтрокам.НомерКомандыПартии) Тогда 
					СтрокаТаблицы.Параметры.НомерКомандыПартии = "-";
				КонецЕсли;
			КонецЕсли;
			
			Если Не ОбщегоНазначения.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти) Тогда
				ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			КонецЕсли;
			
			ТабДокумент.Вывести(СтрокаТаблицы);
			
		КонецЦикла;	
			
	    ЗаполнитьЗначенияСвойств(Подвал.Параметры, ВыборкаПоДокументам);
		
		ТабДокумент.Вывести(Подвал);
		
	    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
	
КонецФункции	

Функция ДанныеДляПечатиДокументаХодатайствоОБронировании(МассивСсылок)

	// Запрос по шапкам документов.
	Запрос = Новый Запрос;
	
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	
	Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
	
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ХодатайствоОБронировании.Дата КАК Дата,
	|	ХодатайствоОБронировании.Организация КАК Организация,
	|	ВЫБОР
	|		КОГДА ПОДСТРОКА(ХодатайствоОБронировании.Организация.НаименованиеПолное, 1, 10) <> """"
	|			ТОГДА ХодатайствоОБронировании.Организация.НаименованиеПолное
	|		ИНАЧЕ ХодатайствоОБронировании.Организация.Наименование
	|	КОНЕЦ КАК ПолноеНаименованиеОрганизации,
	|	ХодатайствоОБронировании.Организация.ИНН КАК ИНН,
	|	ХодатайствоОБронировании.Ссылка КАК Ссылка,
	|	ХодатайствоОБронировании.Руководитель КАК Руководитель,
	|	ХодатайствоОБронировании.ДолжностьРуководителя КАК ДолжностьРуководителя
	|ПОМЕСТИТЬ ВТДанныеДокументов
	|ИЗ
	|	Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе КАК ХодатайствоОБронировании
	|ГДЕ
	|	ХодатайствоОБронировании.Ссылка В(&МассивСсылок)";
	
	Запрос.Выполнить();
	
	ИменаПолейОтветственныхЛиц = Новый Массив;
	ИменаПолейОтветственныхЛиц.Добавить("Руководитель");
	
	ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Истина, ИменаПолейОтветственныхЛиц, "ВТДанныеДокументов");
	
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ДанныеДокументов.Ссылка КАК Ссылка,
	|	ДанныеДокументов.Дата КАК ДатаДок,
	|	ДанныеДокументов.Организация КАК Организация,
	|	ДанныеДокументов.ПолноеНаименованиеОрганизации КАК ПолноеНаименованиеОрганизации,
	|	ДанныеДокументов.ИНН КАК ИНН,
	|	ДанныеДокументов.ДолжностьРуководителя.Наименование КАК ДолжностьРуководителя,
	|	ФИООтветственныхЛиц.РасшифровкаПодписи КАК РуководительРасшифровкаПодписи
	|ИЗ
	|	ВТДанныеДокументов КАК ДанныеДокументов
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
	|		ПО ДанныеДокументов.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
	|			И ДанныеДокументов.Ссылка = ФИООтветственныхЛиц.Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	ДанныеДокументов.Дата";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ДанныеДляПечати = Новый Структура;
	ДанныеДляПечати.Вставить("РезультатПоШапке", РезультатЗапроса);
	
	Запрос.УстановитьПараметр("Приписан", НСтр("ru = 'Приписан'"));
	Запрос.УстановитьПараметр("НеПриписан", НСтр("ru = 'Не приписан'"));
	
	// Запрос по табличным частям
	Запрос.Текст = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ХодатайствоОБронированииСотрудники.Ссылка КАК Ссылка,
	|	ХодатайствоОБронированииСотрудники.НомерСтроки КАК НомерСтроки,
	|	ХодатайствоОБронированииСотрудники.ФизическоеЛицо КАК ФизическоеЛицо,
	|	ХодатайствоОБронированииСотрудники.ФизическоеЛицо.Наименование КАК ФИОПолные,
	|	ХодатайствоОБронированииСотрудники.ФизическоеЛицо.ДатаРождения КАК ДатаРождения,
	|	ХодатайствоОБронированииСотрудники.Подразделение КАК Подразделение,
	|	ХодатайствоОБронированииСотрудники.Должность КАК Должность,
	|	ХодатайствоОБронированииСотрудники.Звание КАК Звание,
	|	ХодатайствоОБронированииСотрудники.Состав КАК Состав,
	|	ХодатайствоОБронированииСотрудники.ВУС КАК ВУС,
	|	ХодатайствоОБронированииСотрудники.Годность КАК Годность,
	|	ВЫБОР
	|		КОГДА ХодатайствоОБронированииСотрудники.НаличиеМобпредписания
	|			ТОГДА &Приписан + ВЫБОР
	|					КОГДА ХодатайствоОБронированииСотрудники.НомерКомандыПартии = """"
	|						ТОГДА """"
	|					ИНАЧЕ "",""
	|				КОНЕЦ
	|		ИНАЧЕ &НеПриписан
	|	КОНЕЦ КАК НаличиеМобпредписания,
	|	ХодатайствоОБронированииСотрудники.НомерКомандыПартии КАК НомерКомандыПартии,
	|	ХодатайствоОБронированииСотрудники.ПунктПеречня КАК ПунктПеречня,
	|	ЕСТЬNULL(ХодатайствоОБронированииСотрудники.ПунктПеречня.КодВЭД, """") КАК КодВЭД,
	|	ЕСТЬNULL(ХодатайствоОБронированииСотрудники.ПунктПеречня.КодДолжности, """") КАК КодДолжности,
	|	ЕСТЬNULL(ХодатайствоОБронированииСотрудники.ПунктПеречня.ОписаниеПункта, """") КАК ОписаниеПунктаПеречня,
	|	ХодатайствоОБронированииСотрудники.МотивХодатайства КАК МотивХодатайства,
	|	ХодатайствоОБронированииСотрудники.Ссылка.Организация.Наименование КАК Организация
	|ИЗ
	|	Документ.ХодатайствоОБронированииГражданПребывающихВЗапасе.Сотрудники КАК ХодатайствоОБронированииСотрудники
	|ГДЕ
	|	ХодатайствоОБронированииСотрудники.Ссылка В(&МассивСсылок)
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	НомерСтроки";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ДанныеДляПечати.Вставить("РезультатПоТабличнойЧасти", РезультатЗапроса);
	
	Возврат ДанныеДляПечати;
	
КонецФункции

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

#Область МеханизмФиксацииИзменений

Функция ПараметрыФиксацииВторичныхДанных() Экспорт
	Возврат ФиксацияВторичныхДанныхВДокументах.ПараметрыФиксации(ФиксацияОписаниеФиксацииРеквизитов(), ФиксацияОписанияТЧ())
КонецФункции

Функция ФиксацияОписаниеФиксацииРеквизитов()
	
	ОписаниеФиксацииРеквизитов = Новый Соответствие;
	
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиПодразделение",			ФиксацияОписаниеФиксацииРеквизита("Подразделение", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиДолжность",				ФиксацияОписаниеФиксацииРеквизита("Должность", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиЗвание",					ФиксацияОписаниеФиксацииРеквизита("Звание", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиСостав",					ФиксацияОписаниеФиксацииРеквизита("Состав", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиВУС",					ФиксацияОписаниеФиксацииРеквизита("ВУС", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиГодность",				ФиксацияОписаниеФиксацииРеквизита("Годность", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиНаличиеМобпредписания",	ФиксацияОписаниеФиксацииРеквизита("НаличиеМобпредписания", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиНомерКомандыПартии",		ФиксацияОписаниеФиксацииРеквизита("НомерКомандыПартии", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиПунктПеречня",			ФиксацияОписаниеФиксацииРеквизита("ПунктПеречня", "ФизическоеЛицо"));
	ОписаниеФиксацииРеквизитов.Вставить("СотрудникиДанныеВоинскогоУчета",	ФиксацияОписаниеФиксацииРеквизита("ДанныеВоинскогоУчета", "ФизическоеЛицо"));
	
	Возврат Новый ФиксированноеСоответствие(ОписаниеФиксацииРеквизитов);  
	
КонецФункции 

Функция ФиксацияОписанияТЧ()
	
	МассивПолей = Новый Массив;
	МассивПолей.Добавить("ФизическоеЛицо");
	
	СтруктураКлючевыхПолей = Новый Структура("Сотрудники", МассивПолей);
	
	Возврат	СтруктураКлючевыхПолей
	
КонецФункции

Функция ФиксацияОписаниеФиксацииРеквизита(ИмяРеквизита, 
	ИмяГруппы, 
	ОснованиеЗаполнения = "ФизическоеЛицо",
	РеквизитСтроки = Истина,
	ФиксацияГруппы = Ложь, 
	Путь = "Сотрудники",
	Используется = Истина, 
	ОтображатьПредупреждение = Истина, 
	СтрокаПредупреждения =  "")
	
	ФиксацияРеквизита = ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксируемогоРеквизита();
	ФиксацияРеквизита.Вставить("Используется", Используется);
	ФиксацияРеквизита.Вставить("ИмяРеквизита", ИмяРеквизита);
	ФиксацияРеквизита.Вставить("ИмяГруппы", ИмяГруппы);
	ФиксацияРеквизита.Вставить("ФиксацияГруппы", ФиксацияГруппы);
	ФиксацияРеквизита.Вставить("ОснованиеЗаполнения", ОснованиеЗаполнения);
	ФиксацияРеквизита.Вставить("Путь", Путь);
	ФиксацияРеквизита.Вставить("ОтображатьПредупреждение", ОтображатьПредупреждение);
	Если СтрокаПредупреждения <> "" Тогда
		ФиксацияРеквизита.Вставить("СтрокаПредупреждения", СтрокаПредупреждения);
	КонецЕсли;
	ФиксацияРеквизита.Вставить("РеквизитСтроки", РеквизитСтроки);
	
	Возврат ФиксацияВторичныхДанныхВДокументах.ОписаниеФиксацииРеквизита(ФиксацияРеквизита);
	
КонецФункции

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

Функция КадровыеДанныеФизическихЛиц(СписокФизическихЛиц, Организация, ДатаСобытия) Экспорт 
	
	ТаблицаСотрудников = КадровыйУчет.ОсновныеСотрудникиФизическихЛиц(СписокФизическихЛиц, Истина, Организация, ДатаСобытия);
	
	СписокСотрудников = ОбщегоНазначения.ВыгрузитьКолонку(ТаблицаСотрудников, "Сотрудник");
	
	КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СписокСотрудников, "Подразделение,Должность", ДатаСобытия);
	КадровыеДанныеФизическихЛиц = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, СписокФизическихЛиц, "ВоинскийУчетЗвание,ВоинскийУчетСостав,ВоинскийУчетВУС,ВоинскийУчетГодность,ВоинскийУчетНаличиеМобпредписания,ВоинскийУчетНомерКомандыПартии,ВоинскийУчетПунктПеречня", ДатаСобытия);
	
	КадровыеДанные = Новый ТаблицаЗначений;
	КадровыеДанные.Колонки.Добавить("ФизическоеЛицо", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
	КадровыеДанные.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.ПодразделенияОрганизаций"));
	КадровыеДанные.Колонки.Добавить("Должность", Новый ОписаниеТипов("СправочникСсылка.Должности"));
	КадровыеДанные.Колонки.Добавить("Звание", Новый ОписаниеТипов("СправочникСсылка.ЗванияГражданскогоВоинскогоУчета"));
	КадровыеДанные.Колонки.Добавить("Состав", Новый ОписаниеТипов("СправочникСсылка.СоставыВоеннослужащих"));
	КадровыеДанные.Колонки.Добавить("ВУС", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(10)));
	КадровыеДанные.Колонки.Добавить("Годность", Новый ОписаниеТипов("ПеречислениеСсылка.ГодностьКВоеннойСлужбе"));
	КадровыеДанные.Колонки.Добавить("НаличиеМобпредписания", Новый ОписаниеТипов("Булево"));
	КадровыеДанные.Колонки.Добавить("НомерКомандыПартии", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(50)));
	КадровыеДанные.Колонки.Добавить("ПунктПеречня", Новый ОписаниеТипов("СправочникСсылка.ПереченьДолжностейДляБронированияГраждан"));
	
	Для Каждого ДанныеФизическогоЛица Из КадровыеДанныеФизическихЛиц Цикл 
		
		НоваяСтрока = КадровыеДанные.Добавить();
		
		Отбор = Новый Структура("ФизическоеЛицо", ДанныеФизическогоЛица.ФизическоеЛицо);
		СтрокиФизическогоЛица = КадровыеДанныеСотрудников.НайтиСтроки(Отбор);
		Если СтрокиФизическогоЛица.Количество() > 0 Тогда 
			ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокиФизическогоЛица[0]);
		КонецЕсли;
		
		НоваяСтрока.ФизическоеЛицо 			= ДанныеФизическогоЛица.ФизическоеЛицо;
		НоваяСтрока.Звание 					= ДанныеФизическогоЛица.ВоинскийУчетЗвание;
		НоваяСтрока.Состав 					= ДанныеФизическогоЛица.ВоинскийУчетСостав;
		НоваяСтрока.ВУС 					= ДанныеФизическогоЛица.ВоинскийУчетВУС;
		НоваяСтрока.Годность 				= ДанныеФизическогоЛица.ВоинскийУчетГодность;
		НоваяСтрока.НаличиеМобпредписания 	= ДанныеФизическогоЛица.ВоинскийУчетНаличиеМобпредписания;
		НоваяСтрока.НомерКомандыПартии 		= ДанныеФизическогоЛица.ВоинскийУчетНомерКомандыПартии;
		НоваяСтрока.ПунктПеречня 			= ДанныеФизическогоЛица.ВоинскийУчетПунктПеречня;
		
	КонецЦикла;
	
	Возврат КадровыеДанные;
	
КонецФункции

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

#КонецЕсли

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