Регистрация переработок / Модуль менеджера

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

#Область ПрограммныйИнтерфейс
	
// СтандартныеПодсистемы.ВерсионированиеОбъектов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Печать

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

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

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

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

Функция ДобавитьКомандыСозданияДокументов(КомандыСозданияДокументов, ДополнительныеПараметры) Экспорт
	
	ЗарплатаКадрыРасширенный.ДобавитьВКоллекциюКомандуСозданияДокументаПоМетаданнымДокумента(
		КомандыСозданияДокументов, Метаданные.Документы.РегистрацияПереработок);
	
КонецФункции

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

#КонецЕсли

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