ЗУП 3.1: Квартальная премия

1. user1029657 06.11.18 14:24 Сейчас в теме
Народ подскажите хочу сделать квартальную премию в зуп 3.1 вопрос????как сделать оклад:90*отработанных календарных дней в квартале???????? есть обработка с зуп 2.5
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. solodovnikov.84 11 07.11.18 16:15 Сейчас в теме
(1)ВремяВДнях / НормаДней
+
6. solodovnikov.84 11 07.11.18 17:53 Сейчас в теме
(1)(Оклад / Процент) * ВремяВДнях / НормаДней

В принципе все показателями настраивается.

Формула у вас конечно странная.Оклад делить на процент.И результат брать пропорционально отработанному времени?
+
2. user633533_encantado 11 06.11.18 14:38 Сейчас в теме
Ну так в чем проблема: заводим новое начисление, задаем формулу типа "(Оклад /90) * ВремяВДнях", указываем , что ее будем платить только в конце квартала и все.
user705522_constantin_h; +1
3. user1029657 07.11.18 14:21 Сейчас в теме
проблема в том как указать чтоб не учитывались отпуска больничные дата приема дата увольнения и тд
solodovnikov.84; +1
5. user1029657 07.11.18 17:03 Сейчас в теме
Так же есть обработка с зуп 2.5 / функция получитьКоэф(график,конКв)
запрос = новый запрос;
	запрос.Текст = 
	"ВЫБРАТЬ
	|	СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение) КАК ДополнительноеЗначение,
	|	СУММА(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначениеНорма) КАК ДополнительноеЗначениеНорма
	|ИЗ
	|	РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
	|ГДЕ
	|	ГрафикиРаботыПоВидамВремени.ГрафикРаботы = &ГрафикРаботы
	|	И ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ &НачПериода И &КонПериода
	|	И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ВидУчетаВремени"
	;
	запрос.УстановитьПараметр("ГрафикРаботы", график);
	запрос.УстановитьПараметр("НачПериода", началоКвартала(конКв));
	запрос.УстановитьПараметр("КонПериода",конКв);
	запрос.УстановитьПараметр("ВидУчетаВремени", перечисления.ВидыУчетаВремени.ПоДням);
	
	рез = запрос.Выполнить().Выбрать();
	если рез.Следующий() тогда
		возврат ?(рез.ДополнительноеЗначениеНорма = 0,1, Окр(рез.ДополнительноеЗначение/рез.ДополнительноеЗначениеНорма,1) );
	конецЕсли;
	
конецФункции	


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

	"ВЫБРАТЬ
	|	ПлановыеНачисленияСрезПоследних.Показатель1
	|ИЗ
	|	РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(
	|			&ДатаСреза,
	|				 Сотрудник = &Ссылка) КАК ПлановыеНачисленияСрезПоследних
	|ГДЕ
	|	ВЫБОР
	|			КОГДА ПлановыеНачисленияСрезПоследних.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
	|					И ПлановыеНачисленияСрезПоследних.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.ПустаяСсылка)
	|				ТОГДА ЛОЖЬ
	|			КОГДА ПлановыеНачисленияСрезПоследних.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
	|					И ПлановыеНачисленияСрезПоследних.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.ПустаяСсылка)
	|					И &ДатаСреза < ПлановыеНачисленияСрезПоследних.ПериодЗавершения
	|				ТОГДА ЛОЖЬ
	|			КОГДА ПлановыеНачисленияСрезПоследних.ДействиеЗавершения = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
	|					И &ДатаСреза >= ПлановыеНачисленияСрезПоследних.ПериодЗавершения
	|				ТОГДА ЛОЖЬ
	|			ИНАЧЕ ИСТИНА
	|		КОНЕЦ
	|	И ПлановыеНачисленияСрезПоследних.ВидРасчета В(&ВидыРасчета)";
	
	Запрос.УстановитьПараметр("ДатаСреза", ?( значениеЗаполнено(сотрудник.датаУвольнения),сотрудник.датаУвольнения - 1,конКв));
	Запрос.УстановитьПараметр("Ссылка", сотрудник);
	список = новый списокЗначений;
	список.Добавить(планыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням);
	список.Добавить(планыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам);
	запрос.УстановитьПараметр("ВидыРасчета", список);
	
	рез =  Запрос.Выполнить().Выбрать();

	стрРег = регистрыСведений.РаботникиОрганизаций.ПолучитьПоследнее(?( значениеЗаполнено(сотрудник.датаУвольнения),сотрудник.датаУвольнения - 1,конКв), новый структура("Сотрудник",сотрудник));
	
	коэфГрафика  = 1;
	если не стрРег.Количество() = 0 тогда
		график = стрРег.ГрафикРаботы;
		ставка = 1;
		если график.наименование = "Суммированный учет" или стрРег.ЗанимаемыхСтавок<>1 и график.наименование = "Основной график" тогда  /// у них оклад стоит полный, оплата регулируется отработанными часами по табелю
			ставка = стрРег.ЗанимаемыхСтавок;
		конецЕсли;	
		коэфГрафика = получитьКоэф(график, конКв) * ставка;
	конецЕсли;	
	
	если рез.Следующий() тогда
		//сообщить(""+сотрудник+"  "+рез.показатель1+ "  "+ коэфГрафика );
		возврат рез.показатель1*коэфГрафика;
	иначе
	конецЕсли;	
	
	
	
КонецФункции


процедура Инициализировать(Объект,ИмяТабличнойЧасти,ТабличноеПолеОбъекта) экспорт
	для каждого стр из объект.ДополнительныеНачисления цикл
		если не стр.Авторасчет тогда
			продолжить;
		конецЕсли;	
		
		начКв = началоКвартала(стр.ДатаНачала) ;
		конКв = конецКвартала(стр.ДатаОкончания) ;
		днейКв = Цел((конКв-начКв) /(60*60*24))+1;
		
		стр.показатель1 = получитьОклад(стр.сотрудник, конКв);
	
		если стр.датаНачала <> начКв или конецДня(стр.ДатаОкончания) <> конКв или стр.результат = 0 тогда
			дней =Цел((конецДня(стр.ДатаОкончания) - стр.ДатаНачала) /(60*60*24))+1;
		Иначе
			дней=днейКв;
		КонецЕсли;
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	ВЫБОР
		|		КОГДА СостояниеРаботниковОрганизаций.Период < &НачалоКвартала
		|			ТОГДА &НачалоКвартала
		|		ИНАЧЕ СостояниеРаботниковОрганизаций.Период
		|	КОНЕЦ КАК НачалоНеявки,
		|	СостояниеРаботниковОрганизаций.Сотрудник КАК Сотрудник,
		|	ВЫБОР
		|		КОГДА СостояниеРаботниковОрганизаций.ПериодЗавершения > &КонецКвартала
		|			ТОГДА &КонецКвартала
		|		ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.ПериодЗавершения, ДЕНЬ, -1)
		|	КОНЕЦ КАК КонецНеявки,
		|	СостояниеРаботниковОрганизаций.Состояние
		|ПОМЕСТИТЬ Неявки
		|ИЗ
		|	РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
		|ГДЕ
		|	(СостояниеРаботниковОрганизаций.ПериодЗавершения >= &НачалоКвартала
		|				И СостояниеРаботниковОрганизаций.ПериодЗавершения <= &КонецКвартала
		|			ИЛИ СостояниеРаботниковОрганизаций.Период >= &НачалоКвартала
		|				И СостояниеРаботниковОрганизаций.Период <= &КонецКвартала
		|			ИЛИ СостояниеРаботниковОрганизаций.Период <= &НачалоКвартала
		|				И СостояниеРаботниковОрганизаций.ПериодЗавершения >= &КонецКвартала)
		|	И СостояниеРаботниковОрганизаций.Сотрудник = &Сотрудник
		|	И СостояниеРаботниковОрганизаций.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Заболевание)
		|	И СостояниеРаботниковОрганизаций.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
		|	И СостояниеРаботниковОрганизаций.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Командировка)
		|	И СостояниеРаботниковОрганизаций.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтсутствуетПоНевыясненнойПричине)
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ВЫБОР
		|		КОГДА СостояниеРаботниковОрганизацийБолеет.Период < &НачалоКвартала
		|			ТОГДА &НачалоКвартала
		|		ИНАЧЕ СостояниеРаботниковОрганизацийБолеет.Период
		|	КОНЕЦ,
		|	СостояниеРаботниковОрганизацийБолеет.Сотрудник,
		|	МИНИМУМ(ВЫБОР
		|			КОГДА ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.Период, ДЕНЬ, -1) > &КонецКвартала
		|					ИЛИ ЕСТЬNULL(СостояниеРаботниковОрганизаций.Период, 0) = 0
		|				ТОГДА &КонецКвартала
		|			ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.Период, ДЕНЬ, -1)
		|		КОНЕЦ),
		|	СостояниеРаботниковОрганизацийБолеет.Состояние
		|ИЗ
		|	РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизацийБолеет
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
		|		ПО СостояниеРаботниковОрганизацийБолеет.Сотрудник = СостояниеРаботниковОрганизаций.Сотрудник
		|			И (ВЫБОР
		|				КОГДА СостояниеРаботниковОрганизацийБолеет.Период < &НачалоКвартала
		|					ТОГДА &НачалоКвартала
		|				ИНАЧЕ СостояниеРаботниковОрганизацийБолеет.Период
		|			КОНЕЦ < ВЫБОР
		|				КОГДА ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.Период, ДЕНЬ, -1) > &КонецКвартала
		|					ТОГДА &КонецКвартала
		|				ИНАЧЕ ДОБАВИТЬКДАТЕ(СостояниеРаботниковОрганизаций.Период, ДЕНЬ, -1)
		|			КОНЕЦ)
		|			И (СостояниеРаботниковОрганизаций.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает))
		|			И (СостояниеРаботниковОрганизаций.Период >= &НачалоКвартала
		|					И СостояниеРаботниковОрганизаций.Период <= &КонецКвартала
		|				ИЛИ СостояниеРаботниковОрганизацийБолеет.Период >= &НачалоКвартала
		|					И СостояниеРаботниковОрганизацийБолеет.Период <= &КонецКвартала
		|				ИЛИ СостояниеРаботниковОрганизацийБолеет.Период <= &НачалоКвартала
		|					И СостояниеРаботниковОрганизаций.Период >= &КонецКвартала)
		|ГДЕ
		|	СостояниеРаботниковОрганизацийБолеет.Сотрудник = &Сотрудник
		|	И СостояниеРаботниковОрганизацийБолеет.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Заболевание)
		|	И СостояниеРаботниковОрганизацийБолеет.Период <= &КонецКвартала
		|	И СостояниеРаботниковОрганизацийБолеет.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		|	И НЕ(ЕСТЬNULL(СостояниеРаботниковОрганизаций.Период, 0) = 0
		|				И СостояниеРаботниковОрганизацийБолеет.Период < &НачалоКвартала)
		|
		|СГРУППИРОВАТЬ ПО
		|	ВЫБОР
		|		КОГДА СостояниеРаботниковОрганизацийБолеет.Период < &НачалоКвартала
		|			ТОГДА &НачалоКвартала
		|		ИНАЧЕ СостояниеРаботниковОрганизацийБолеет.Период
		|	КОНЕЦ,
		|	СостояниеРаботниковОрганизацийБолеет.Сотрудник,
		|	СостояниеРаботниковОрганизацийБолеет.Состояние
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ВЫБОР
		|		КОГДА СостояниеРаботниковОрганизаций.Период < &НачалоКвартала
		|			ТОГДА &НачалоКвартала
		|		ИНАЧЕ СостояниеРаботниковОрганизаций.Период
		|	КОНЕЦ,
		|	СостояниеРаботниковОрганизаций.Сотрудник,
		|	&КонецКвартала,
		|	СостояниеРаботниковОрганизаций.Состояние
		|ИЗ
		|	РегистрСведений.СостояниеРаботниковОрганизаций КАК СостояниеРаботниковОрганизаций
		|ГДЕ
		|	СостояниеРаботниковОрганизаций.Период <= &КонецКвартала
		|	И СостояниеРаботниковОрганизаций.Сотрудник = &Сотрудник
		|	И СостояниеРаботниковОрганизаций.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтсутствуетПоНевыясненнойПричине)
		|	И СостояниеРаботниковОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	Неявки.Сотрудник,
		|	Неявки.НачалоНеявки,
		|	Неявки.КонецНеявки,
		|	Неявки.Состояние,
		|	РАЗНОСТЬДАТ(Неявки.НачалоНеявки, Неявки.КонецНеявки, ДЕНЬ) + 1 КАК КоличествоДнейНеявок
		|ПОМЕСТИТЬ ТаблКолНеявок
		|ИЗ
		|	Неявки КАК Неявки
		|ГДЕ
		|	ЕСТЬNULL(Неявки.Сотрудник, 0) <> 0
		|	И Неявки.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
		|	И Неявки.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебный)
		|	И Неявки.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебныйНеоплачиваемый)
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	Неявки.Сотрудник,
		|	Неявки.НачалоНеявки,
		|	Неявки.КонецНеявки,
		|	Неявки.Состояние,
		|	СУММА(ВЫБОР
		|			КОГДА РегламентированныйПроизводственныйКалендарь.ВидДня <> ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Праздник)
		|				ТОГДА 1
		|			ИНАЧЕ 0
		|		КОНЕЦ)
		|ИЗ
		|	РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Неявки КАК Неявки
		|		ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= Неявки.НачалоНеявки
		|			И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= Неявки.КонецНеявки
		|ГДЕ
		|	ЕСТЬNULL(Неявки.Сотрудник, 0) <> 0
		|	И (Неявки.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускЕжегодный)
		|			ИЛИ Неявки.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебный)
		|			ИЛИ Неявки.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускУчебныйНеоплачиваемый))
		|
		|СГРУППИРОВАТЬ ПО
		|	Неявки.Сотрудник,
		|	Неявки.НачалоНеявки,
		|	Неявки.КонецНеявки,
		|	Неявки.Состояние
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ТаблКолНеявок.Сотрудник,
		|	СУММА(ТаблКолНеявок.КоличествоДнейНеявок) КАК КоличествоНеявок
		|ИЗ
		|	ТаблКолНеявок КАК ТаблКолНеявок
		|
		|СГРУППИРОВАТЬ ПО
		|	ТаблКолНеявок.Сотрудник";
		
		Запрос.УстановитьПараметр("НачалоКвартала", стр.ДатаНачала);
		Запрос.УстановитьПараметр("КонецКвартала", стр.ДатаОкончания);
		Запрос.УстановитьПараметр("Сотрудник", стр.Сотрудник);
		
		Результат = Запрос.Выполнить();
		
		ВыборкаДетальныеЗаписи = Результат.Выбрать();
		
		ВыборкаДетальныеЗаписи.Следующий();
		КоличествоНеявок=ВыборкаДетальныеЗаписи.КоличествоНеявок;
		Если НЕ ЗначениеЗаполнено(КоличествоНеявок) Тогда
			КоличествоНеявок=0;
		КонецЕсли;
		
		стр.результат = стр.показатель1 / днейКв * ?( дней<КоличествоНеявок,0,(дней-КоличествоНеявок));
		
	конецЦикла;
	
конецПроцедуры
Показать
+
7. user1029657 08.11.18 09:06 Сейчас в теме
теперь нужно чтоб учитывались ( минусовались) отпуска больничные дата приема дата увольнения и тд и
+
8. solodovnikov.84 11 08.11.18 09:09 Сейчас в теме
(7)Если я не ошибаюсь.Документ премия не учитывает прием и увольнение.Так придется дописывать расчет.А вытеснения больничным,отпуском и прочие настраиваются в самом виде расчета.
+
9. user1029657 08.11.18 09:14 Сейчас в теме
без увольнения и приема,просто настройка,можете подсказать как сделать настройку?
+
10. solodovnikov.84 11 08.11.18 10:27 Сейчас в теме
(9) https://its.1c.ru/db/staff1c#content:33653:zup30 вот тут про премии написано.Учесть в принципе думаю можно приемы и увольнение.
Вопрос оклад который берем,это оклад который посчитали?Или который полагается?Если первый варинта тут проще.Приемы и увольнения не нужны.Если второй вариант,как быть если он менялся в этом промежутке времени.
+
11. user1029657 08.11.18 10:43 Сейчас в теме
который полагается
+
12. user1029657 08.11.18 10:51 Сейчас в теме
суть в том что у нас не стандартный расчет премии из за чего и проблемы,полная премия начисляется в размере оклада если сотрудник отработал квартал без отпусков больничных и тд.
+
13. Nadushka74 5 08.11.18 11:06 Сейчас в теме
(12) ?(норма времени = отработанному, оклад, 0)
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот