Вход | Регистрация

1С:Предприятие ::

Метки: 

ЗУП3.1 Показатель ОтработаноДней считается неправильно - что посоветуете?

Я
   Провинциальный 1сник
 
04.07.18 - 18:39
Есть вид расчета "компенсация молока за вредность", там формула ЕжедневнаяОплатаМолока*ОтработаноДней. И почему-то у некоторых сотрудников, которые часть месяца не работали (отпуск), показатель ОтработаноДней - полное время по графику, а не фактические рабочие дни. В печатной форме табеля при этом всё нормально, оклад тоже считается исходя из реальных рабочих дней. Пробовал заменить ОтработаноДней в формуле на ВремяВДнях с указанием вида времени Явка - всё то же самое, выдает полное количество рабочих дней по графику. При этом у некоторых сотрудников всё считается нормально. Пытался определить, в чем разница - не смог. Всё одинаково, график один и тот же, но у одного считает рабочие дни по факту, а у другого - по графику.

Где копать, что может быть не так?
 
  Рекламное место пустует
   Alexandr_U1982
 
1 - 04.07.18 - 18:50
Копать отладчиком. Модуль объекта обработки МенеджерРасчетаЗарплаты, Процедура ЗаполнитьЗначенияПоказателейНачисленийСлужебный().
Нужно смотреть содержимое таблиц в переменной МенеджерРасчетаЗарплаты.
   Alexandr_U1982
 
2 - 04.07.18 - 18:54
+(1) Пардон, Процедура РассчитатьЗначенияПоказателейНачислений().
   Alexandr_U1982
 
3 - 04.07.18 - 18:57
У вас отпуск вытесняет компенсацию молока за вредность?
   Alexandr_U1982
 
4 - 04.07.18 - 19:05
Судя по процедуре РассчитатьЗначенияПоказателейОтработаноВсего(), отработано дней собирается по таблице фактического периода действия регистра расчета "Начисления". Полное время в этой таблице может рассчитывается в случае, если нет вытесняющей записи.
Ну а более точно причину проблемы можно определить по содержимому таблиц.
   Провинциальный 1сник
 
5 - 04.07.18 - 19:18
(3) Нет конечно. Это компенсационная выплата, дополнительно за уже оплаченное время.
   Провинциальный 1сник
 
6 - 04.07.18 - 19:20
(4) Смотрю уже. Этот неверный показатель (20 дней вместо 1 дня) появляется при выполнении процедуры РассчитатьЗначенияПоказателейОтработаноВсего(), а там идет обращение в запросе через менеджер временных таблиц к другим ранее созданным временным таблицам. Как их посмотреть, не ковыряя код?
   Провинциальный 1сник
 
7 - 04.07.18 - 19:21
(5) Как вообще доплата может что-то вытеснять?
   Радим1987
 
8 - 04.07.18 - 19:26
Необходимо вставить код вместо  // МесяцНачисления = МесяцыРасчета[0]; 

 
Обработка.МенеджерРасчетаЗарплаты
 
Процедура РассчитатьЗарплатуСлужебный()

    
    // Причина такого действия:

    // При увольнения сотрудника программа 1С пытается делать расчет зарплаты с последнего начисления

    // Допустим сотрудник увольняется в июне а последнее начисление было в апреле т.е май пропущен

    // в итоге для расчета ЗП у нас 2 месяца апрель и май

    // МесяцыРасчета это массив там 2 даты 01.05.2018 и 01.06.2018

    // типовой отбирает только первый элемент т.е 01.05.2018 и отклонения (отсутствия, неявки ...) которые введены в июне 

    // не будет действовать        

 
    Если НЕ РасчетОдногоМесяца и ТипЗнч(ИсключаемыйРегистратор) = Тип("ДокументСсылка.Увольнение") Тогда
        МесяцНачисления = МесяцыРасчета[1];
    Иначе
        МесяцНачисления = МесяцыРасчета[0];
    КонецЕсли;
 
Посмотри здесь
   RomanYS
 
9 - 04.07.18 - 19:28
Подпишусь
   Провинциальный 1сник
 
10 - 04.07.18 - 19:29
Задал вытеснения - стало считаться правильно. Но блин это какой-то маразм. Теперь во все надбавках, зависящих от рабочего времени, придется вытеснения настраивать? Раньше ведь работало всё..
 
  Рекламное место пустует
   Фрэнки
 
11 - 04.07.18 - 19:58
(10) раньше? это где? В 2.5 без вытеснения аналогичные расчеты точно также работали криво
   Провинциальный 1сник
 
12 - 04.07.18 - 20:04
(11) В 3.1 работаем с начала года, проблема вылезла только в июне. Предыдущие месяца рассчитались нормально. Такое ощущение, что что-то там наоптимизировали и поменялся способ вычисления отработанного времени для "начисления-доплаты", теперь он приравнен к "начислению-оплате".
   Фрэнки
 
13 - 04.07.18 - 21:04
(12) ну этого тоже нельзя исключать. Ну не будешь же нарочно сидеть-сравнивать результаты и ломать голову - было или не было изменения в коде... там даже просто список изменений большой и выискивать вы нем долго. Я просто допускаю, что в данном конкретном моменте решились сделать одинаковый алгоритм с использованием вытеснения, чтоб он был хоть как-то наглядный и привычный
   Alexandr_U1982
 
14 - 04.07.18 - 23:47
(10) Никакого маразма тут нет. В Формуле расчета начисления вы использовали предопределеный показатель, к которому жестко привязан алгоритм расчета значения по фактическому периоду действия. Соответственно, если вы хотите, чтобы из расчета выбрасывались какие-либо периоды, то нужно настроить вытеснения. Все логично, системе абсолютно по барабану как вы для себя классифицируете это начисление. Есть четко прописанный алгоритм - получите результат.
   Alexandr_U1982
 
15 - 04.07.18 - 23:48
(7) В данном случае не доплата должна что-то вытеснять, а отпуск должен вытеснять доплату.
   Alexandr_U1982
 
16 - 04.07.18 - 23:55
(6) Есть один прием для просмотра содержимого временных таблиц.
В платформе 8.3 во время отладки можно изменять значения пременных.Соответственно можно изменить и текст запроса.
Находите в коде строчку «Запрос.Выполнить()» и ставите после нее точку останова.
С помощью окна просмотра значений переменных смотрите какие временные таблицы содержатся в Запрос.МенеджерВременныхТаблиц.
Затем меняете текст запроса на «ВЫБРАТЬ * ИЗ ИмяВременнойТаблицы» и выполняете команду «Запрос.Выполнить().Выгрузить()». В итоге получаете содержимое временной таблицы.
   Провинциальный 1сник
 
17 - 05.07.18 - 01:43
(14) Я предполагал, что механизм вытеснения относится лишь к начислениям, изменяющим рабочее время, чтобы при пересечении нескольких начислений на одном периоде подсистема знала, какое из них применится. Теперь буду знать, что вытеснение применяется в том числе и для определения периода действия начислений, напрямую на рабочее время не влияющих. Ок.


Список тем форума
Рекламное место пустует   Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует