Расчет оклада сотрудника по тарифу (помогите новичку)

1. tof 04.08.20 20:58 Сейчас в теме
Вечер добрый!

Начал обучение по программированию и пройдя некоторое количество дней курса, наткнулся на небольшую проблему, а именно:

"Обеспечьте расчет оклада сотрудника по дневном тарифу, расчет выполняется по формуле:
Оклад по тарифу = Дневная оплата * Количество отработанных дней в месяце"

Состряпал код в "своём стиле" и сейчас зашел в тупик по нескольким параметрам:

1. в созданном мною регистре расчета "начисления" не получается подтянуть сумму крайнего сотрудника, хотя через точки останова её видно. - Здесь в документе "НачислениеОкладаПоТарифу" я создаю 2х сотрудников и начисляю им оклад в определенном размере, в регистре же отображает начисление по первому сотруднику, но не отображает начисление по второму.

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

	
КонецПроцедуры
Показать


2. Не знаю как связать в документе "начисление оклада по тарифу" начало/конец периода для рассчета по регистру сведений "ГрафикРабочегоВремени"
По задумке:
Есть дневной тариф - 1500р.
Есть график работ - пятидневка

Я хотел что бы в документе "начисление оклада по тарифу" я устанавливал стоимость за день, а в дальнейшем мне отчет выдавал сколько получит сотрудник за весь период работ согласно графику работ
Найденные решения
6. tof 06.08.20 23:58 Сейчас в теме
закрываю тему, не верное расположение записи движений
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. C0mmander_Alex 40 04.08.20 23:46 Сейчас в теме
Подозреваю, что в этом участке
 Движение.Сумма = Множитель * ВыборкаДетальныеЗаписи.СуммаНачисления; 

Сумма у последнего сформированного движения обнуляется.
3. tof 06.08.20 21:01 Сейчас в теме
(2) как перестать обнулять ? Мне нужно по сути получившийся результат запроса закинуть в таблицу регистра расчета (сумму)
4. C0mmander_Alex 40 06.08.20 21:56 Сейчас в теме
(3) Получите запросом из регистра графика количество рабочих дней. Потом при формировании движений умножайте сумму начислений на количество рабочих дней.
5. tof 06.08.20 22:40 Сейчас в теме
(4) да, спасибо, с этим понял.
Теперь остается ещё одна проблема.
Когда в табличной части документа начисления 1 сотрудник в регистре всё отлично - сумма рассчитывается и заполняется правильно, но как только 2 и более заполнение колонки сумма сбивается и в колонке сумма отображается одна правильная строка, а остальные строки не рассчитываются и заполняются разовым начислением без учета количества отработанных дней.

наткнулся на подсказку "Имейте ввиду, что если в результате запроса возвращается несколько строк, то вы получите результат последней строки." - так вот возможно ли как то вернуть все строки ?
6. tof 06.08.20 23:58 Сейчас в теме
закрываю тему, не верное расположение записи движений
Оставьте свое сообщение
Вопросы с вознаграждением