Акт приемки выполненных работ / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Сторнирует документ по учетам. Используется подсистемой исправления документов.
//
// Параметры:
//  Движения				 - КоллекцияДвижений, Структура	 - Коллекция движений исправляющего документа в которую будут добавлены сторно стоки.
//  Регистратор				 - ДокументСсылка				 - Документ регистратор исправления (документ исправление).
//  ИсправленныйДокумент	 - ДокументСсылка				 - Исправленный документ движения которого будут сторнированы.
//  СтруктураВидовУчета		 - Структура					 - Виды учета, по которым будет выполнено сторнирование исправленного документа.
//  					Состав полей см. в ПроведениеСервер.СтруктураВидовУчета().
//  ДополнительныеПараметры	 - Структура					 - Структура со свойствами:
//  					* ИсправлениеВТекущемПериоде - Булево - Истина когда исправление выполняется в периоде регистрации исправленного документа.
//						* ОтменаДокумента - Булево - Истина когда исправление вызвано документом СторнированиеНачислений.
//  					* ПериодРегистрации	- Дата - Период регистрации документа регистратора исправления.
// 
// Возвращаемое значение:
//  Булево - "Истина" если сторнирование выполнено этой функцией, "Ложь" если специальной процедуры не предусмотрено.
//
Функция СторнироватьПоУчетам(Движения, Регистратор, ИсправленныйДокумент, СтруктураВидовУчета, ДополнительныеПараметры) Экспорт
	
КонецФункции

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

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

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

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

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

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

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

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

Функция СвойстваИсправляемогоДокумента(ДокументСсылка) Экспорт
	
	Реквизиты = ИсправлениеДокументовЗарплатаКадры.РеквизитыИсправляемогоДокумента();
	Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, Реквизиты);
	
КонецФункции

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

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

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

Функция РеквизитыДляПроведения(ДокументОбъект) Экспорт
	
	ДокументСсылка = ДокументОбъект.Ссылка;
	
	РеквизитыДляПроведения = РеквизитыДляПроведенияПустаяСтруктура();
	
	РеквизитыДляПроведения.МесяцНачисления = ДокументОбъект.МесяцНачисления;
	РеквизитыДляПроведения.Ссылка = ДокументСсылка;
	РеквизитыДляПроведения.ИсправленныйДокумент = ДокументОбъект.ИсправленныйДокумент;
	
	Возврат РеквизитыДляПроведения;
	
КонецФункции

Функция РеквизитыДляПроведенияПустаяСтруктура()
	
	РеквизитыДляПроведенияПустаяСтруктура = Новый Структура("Ссылка, ИсправленныйДокумент, МесяцНачисления");
	
	Возврат РеквизитыДляПроведенияПустаяСтруктура;
	
КонецФункции

Функция ДоговорыСотрудника(Организация, Сотрудник) Экспорт

	Запрос = Новый Запрос;
	
	Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
	Запрос.УстановитьПараметр("Организация", Организация);
	Запрос.УстановитьПараметр("ДоговорАвторскогоЗаказа", Строка(ТипЗнч(Документы.ДоговорАвторскогоЗаказа.ПустаяСсылка())));
	Запрос.УстановитьПараметр("ДоговорРаботыУслуги", Строка(ТипЗнч(Документы.ДоговорРаботыУслуги.ПустаяСсылка())));
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ДоговорАвторскогоЗаказа.Ссылка КАК Договор,
	|	ДоговорАвторскогоЗаказа.Номер КАК Номер,
	|	ДоговорАвторскогоЗаказа.Дата КАК Дата,
	|	ДоговорАвторскогоЗаказа.ДатаНачала КАК ДатаНачала,
	|	ДоговорАвторскогоЗаказа.ДатаОкончания КАК ДатаОкончания,
	|	ДоговорАвторскогоЗаказа.Сумма КАК Сумма,
	|	ДоговорАвторскогоЗаказа.Подразделение КАК Подразделение,
	|	ДоговорАвторскогоЗаказа.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
	|	&ДоговорАвторскогоЗаказа КАК ТипДокумента,
	|	ДоговорАвторскогоЗаказа.СтатьяФинансирования,
	|	ДоговорАвторскогоЗаказа.СтатьяРасходов
	|ИЗ
	|	Документ.ДоговорАвторскогоЗаказа КАК ДоговорАвторскогоЗаказа
	|ГДЕ
	|	ДоговорАвторскогоЗаказа.Проведен
	|	И ДоговорАвторскогоЗаказа.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыПоДоговоруГПХ.ПоАктамВыполненныхРабот)
	|	И ДоговорАвторскогоЗаказа.Сотрудник = &Сотрудник
	|	И ДоговорАвторскогоЗаказа.Организация = &Организация
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДоговорРаботыУслуги.Ссылка,
	|	ДоговорРаботыУслуги.Номер,
	|	ДоговорРаботыУслуги.Дата,
	|	ДоговорРаботыУслуги.ДатаНачала,
	|	ДоговорРаботыУслуги.ДатаОкончания,
	|	ДоговорРаботыУслуги.Сумма,
	|	ДоговорРаботыУслуги.Подразделение,
	|	ДоговорРаботыУслуги.СпособОтраженияЗарплатыВБухучете,
	|	&ДоговорРаботыУслуги,
	|	ДоговорРаботыУслуги.СтатьяФинансирования,
	|	ДоговорРаботыУслуги.СтатьяРасходов
	|ИЗ
	|	Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги
	|ГДЕ
	|	ДоговорРаботыУслуги.Проведен
	|	И ДоговорРаботыУслуги.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыПоДоговоруГПХ.ПоАктамВыполненныхРабот)
	|	И ДоговорРаботыУслуги.Сотрудник = &Сотрудник
	|	И ДоговорРаботыУслуги.Организация = &Организация
	|
	|УПОРЯДОЧИТЬ ПО
	|	Дата УБЫВ";
	
	Возврат Запрос.Выполнить().Выгрузить();
	
КонецФункции

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

#Область СозданиеНовогоДокумента

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

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

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

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

#КонецЕсли

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