Совмещение должностей / Модуль объекта

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

#Область ОбработчикиСобытий

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

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

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

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

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

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

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

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

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

	Организация = РеквизитыДокументаОснования.Организация;
	ОтсутствующийСотрудник = РеквизитыДокументаОснования.Сотрудник;
	ДатаНачала = РеквизитыДокументаОснования[ДатаНачалаИзОснования];
	ДатаОкончания = РеквизитыДокументаОснования[ДатаОкончанияИзОснования];
	ПричинаСовмещения = Перечисления.ПричиныСовмещения.ИсполнениеОбязанностей;

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

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

Процедура ПроверитьЗаполнениеПоказателейДоплаты(Отказ)
	
	Если Показатели.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	ДопускаетсяНулевоеЗначение = ОбщегоНазначения.ЗначениеРеквизитаОбъектов(Показатели.ВыгрузитьКолонку("Показатель"), "ДопускаетсяНулевоеЗначение");
	
	Для Каждого СтрокаПоказателей Из Показатели Цикл
		Если Не ДопускаетсяНулевоеЗначение[СтрокаПоказателей.Показатель]
			И СтрокаПоказателей.Значение = 0 Тогда
			
			ОбщегоНазначения.СообщитьПользователю(
				НСтр("ru='Значение не заполнено'"),
				Ссылка,
				"Показатели[" + Формат(СтрокаПоказателей.НомерСтроки - 1, "ЧГ=") + "].Значение",
				"Объект",
				Отказ);
		КонецЕсли;
	КонецЦикла;
		
КонецПроцедуры


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

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли

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