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

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 49 04.08.20 23:46 Сейчас в теме
Подозреваю, что в этом участке
 Движение.Сумма = Множитель * ВыборкаДетальныеЗаписи.СуммаНачисления; 

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

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

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