Штатное расписание начисления / Модуль менеджера

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

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

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

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

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

	НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "НачисленияПозицийШтатногоРасписания");
	НастройкиВарианта.Описание =
		НСтр("ru = 'Плановые начисления и ФОТ по штатному расписанию с точностью до видов начислений.'");
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "НачисленияПозицийШтатногоРасписанияИспользуетсяВилкаСтавок");
	НастройкиВарианта.Описание =
		НСтр("ru = 'Плановые начисления и ФОТ по штатному расписанию с точностью до видов начислений.'");
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "Т3");
	НастройкиВарианта.Описание = НСтр("ru = 'Штатное расписание (Унифицированная форма Т-3).'");
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ШтатноеРасписаниеКроссТаблица");
	НастройкиВарианта.Описание = НСтр("ru = 'Оклады, надбавки и ФОТ по штатному расписанию.'");
	
	НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ШтатноеРасписаниеКроссТаблицаИспользуетсяВилкаСтавок");
	НастройкиВарианта.Описание = НСтр("ru = 'Оклады, надбавки и ФОТ по штатному расписанию.'");
	
КонецПроцедуры

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

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

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

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Т3") Тогда
		// Строка не локализуется т.к. является частью регламентированной формы, применяемой в РФ.
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
						КоллекцияПечатныхФорм,
						"Т3",
						НСтр("ru='ШтатноеРасписание (Т-3)'"),
						ПечатьШтатногоРасписанияТ3(МассивОбъектов, ОбъектыПечати), ,);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

#КонецЕсли

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