Имя: Пароль:
1C
1С v8
ЗУП 3.1 Начисление премии за выслугу лет с поквартальной оплатой
0 Zlaya-Ferio
 
24.01.19
13:50
Друзья, очень прошу помощи!
Формула по колдоговору должна быть такой
Оклад*ПроцентНадбавкиЗаВыслугуЛет/КоличествоРабочихЧасовЗаГод*КоличествоОтработанныхЧасовЗаКвартал
КоличествоОтработанныхЧасовЗаКвартал = КоличествоРабочихЧасовЗаКвартал (по производственному календарю) - ВсеОтсутствияПоНеуважительнойПричине (б/с, прогулы и прочее)

Дано: сотрудник, оклад 25000руб. Пусть ПроцентНадбавкиЗаВыслугуЛет=1, оклад не менялся, но в марте был б/с.
Тогда:
в январе отработано 136 часов (25000*136/1970=1725,89)
в феврале отработано 159 часов (25000*159/1970=2017,77)
в марте отработано 127 (вместо 159) часов (25000*127/1970=1611,68) если здесь брать Расчетную базу (20000), а не Оклад, то сумма примерно одинаковая (5357,33), НО это не устраивает бух...
Итого выслуга должна быть 5355,33

Считая по формулам
ПроцентНадбавкиЗаВыслугуЛет*РасчетнаяБаза/3/ЧасовВГоду*(ЧасовВКвартале-(НормаЧасов-ОтработаноЧасов)) получаем 5 357,33 (разница 2 руб)
ПроцентНадбавкиЗаВыслугуЛет*РасчетнаяБаза/НормаДней *ВремяВДнях - получаем 70000, т.е делитель = 1, т.е не верно.
ПроцентНадбавкиЗаВыслугуЛет*РасчетнаяБаза/ КалендарныеДниМесяца * КалендарныеДни получаем 70000, опять неверно.

т.е первая формула максимально приближена к истине, но неверна. ДРУЗЬЯ, ПОМОГИТЕ!!!
1 El_Duke
 
гуру
24.01.19
14:51
(0) Формула для расчета должна быть:
ПроцентНадбавкиЗаВыслугуЛет*РасчетнаяБаза

В РасчетнаяБаза входят Оплата по окладу и Оплата по окладу по часам (основные ВР устанавливаемые сотруднику при приеме).
Назначение начисления - Премия, по отд. документу Премия. Расчет базы установить за предыдущий квартал или за Неск. предыд. месяцев.
Никаких Окладов в формуле быть не должно т.к. при смене оклада в течение месяца это не отследится. РасчетнаяБаза же позволит собрать все правильно и избавит от головняка с адскими конструкциями вида КоличествоОтработанныхЧасовЗаКвартал/КоличествоРабочихЧасовЗаГод

Премию рассчитывать доком Премия, в нем Период работы за который начисляется премия задавать вручную.
Все прекрасно работает, проверено неоднократно
2 Zlaya-Ferio
 
24.01.19
15:39
Ок. По вашей формуле при исходных данных Премия получается 75000р (при условии, что оклад 25000р не менялся в течении квартала, коэф = 1)
Я может что не так делаю?

Дело в том, что на предприятии по коллдоговору формула:
Оклад(пусть будет РасчетнаяБаза) * ПроцентНадбавкиЗаВыслугуЛет / КоличествоРабочихЧасовЗаГод * КоличествоОтработанныхЧасовЗаКвартал

Причем Оклад в этом случае
- или суммируется за 3 месяца, а затем делится на 3 (при этом считается неверно),
- или считается сумма премии помесячно и складывается за 3 месяца (что правильно, но я никак не могу формулу составить)
3 El_Duke
 
гуру
24.01.19
15:48
(2) Давайте скрины настроек ВР Премия и дока Премия, попробуем разобраться
4 Zlaya-Ferio
 
24.01.19
16:14
5 Zlaya-Ferio
 
24.01.19
16:18
<a href="https://savepice.ru"; target="_blank" title="хостинг картинок"><img src="https://cdn1.savepice.ru/uploads/2019/1/24/0501d7ee4de694068ba706673cffa2a7-full.png"; border="0"/></a>
6 Zlaya-Ferio
 
24.01.19
16:18
Как картинку-то вставить..
7 El_Duke
 
гуру
24.01.19
16:21
8 El_Duke
 
гуру
24.01.19
16:22
9 El_Duke
 
гуру
24.01.19
16:23
(6) За какой период начисляется премия ?
10 El_Duke
 
гуру
24.01.19
16:24
ВыслугаЧерез5Лет чему равна ? Как задается ?
11 Zlaya-Ferio
 
24.01.19
16:28
https://cdn1.savepice.ru/uploads/2019/1/24/126588494fc65fdd118001ead6491997-full.png

Показатель, зависящий от стажа. Конкретно по этому сотруднику показатель = 1
Премия начисляется за квартал, предыдущий месяцу начисления, т.е в апреле начисляем премию за 01.01.-31.03
12 El_Duke
 
гуру
24.01.19
16:36
(11) Тогда формулу чуть изменим: 0,01*ВыслугаЧерез5Лет*РасчетнаяБаза

В вашем примере премия дается за период 01.01.19-31.03.19 в котором еще не введены и рассчитаны доки Начисление зарплаты, а значит не пойми что с показателем РасчетнаяБаза

Исправьте формулу, выберите в доке Премия период 01.07.18-30.09.18 и давайте посмотрим на результат
13 Zlaya-Ferio
 
24.01.19
16:40
Документы начисление зарплаты и взносов рассчитаны с января по март с окладом по этому Сотруднику. Расчетную базу берет правильно. Там кроме оклада = 25000 руб/мес ничего больше нет. Чистый эксперимент. Если я добавлю 0,01 получится 750 руб, а должно быть 5357,87
14 Zlaya-Ferio
 
24.01.19
16:41
У нас в колдоговоре прописана формула Оклад*ПроцентНадбавкиЗаВыслугуЛет/КоличествоРабочихЧасовЗаГод * КоличествоОтработанныхЧасовЗаКвартал
если по ней проверить обычным калькулятором, сумма явно другая
15 Натуральный Йог
 
24.01.19
16:44
(14) делим на часы в году, а умножаем на часы за квартал?
16 El_Duke
 
гуру
24.01.19
16:46
(14) Показатель Оклад в формуле расчета за период использовать нельзя. Если он поменяется в середине или в конце периода - расчет проведется по последнему значению
17 El_Duke
 
гуру
24.01.19
17:09
(14) Такую схему типовыми средствами не реализовать мне кажется

Да и вообще надо сказать наркоманская конструкция ... Рабочее время за год, отработанное за квартал, а оклад один. Даже если типовыми способами удастся получить КоличествоРабочихЧасовЗаГод и КоличествоОтработанныхЧасовЗаКвартал - ошибка будет у тех, кому в течение квартала меняли оклад.
18 El_Duke
 
гуру
24.01.19
21:05
Вообще видно что колдоговор составлял тот, кому категорически нельзя было за это дело браться. До тех пор пока не получит хотя бы неполное среднее образование - никакого "творчества" быть не может

В данном виде расчет премии применен быть не может ибо совершенно абсурден. Надо все переделывать от начала и до конца.
19 Фрэнки
 
24.01.19
21:15
наркоманские способы расчетов были доступны в 7.7 и видимо укоренились.
20 Zlaya-Ferio
 
25.01.19
08:32
(15) Верно
(16) Абсолютно согласна. Это формула по колдоговору. Целесообразнее использовать расчетную базу и делить на 3, но тогда разница в несколько рублей, а сотрудников около 100 с выслугой. И про наркоманов согласна.
Думаю решить так: РасчетнаяБаза/3 - это средний показатель оклада в случае, если он менялся, эдакая МесячнаяТарифнаяСтавка. Умножаем на ПроцентВыслуги и умножаем на частное от деления КоличествоЧасовВГоду/КоличествоЧасовВКвартале, которые будут вноситься вручную в начале года документом Данные для расчета зп.
Иного выхода не вижу. Более того, практически уверена, что бухгалтерия неверно считает)) и мы сравниваем с заведомо неверными значениями)))
21 Zlaya-Ferio
 
25.01.19
08:33
(19) Да, бухгалтерия этим и оперирует. сейчас активные переход с 7.7 на 8.3. Вот в 8.3 хотят видеть ту же 7.7 :-D
22 El_Duke
 
гуру
25.01.19
08:51
(20) Помимо того что в формуле премии заложена логическая ошибка в виде привязки к окладу, так автор сего чуда еще и не смог по ней правильно посчитать, допущена просто детская арифметическая ошибка. В примере что видим:
25000*(136+159+127)/1970 = 5355,33
При этом ПроцентНадбавкиЗаВыслугуЛет=1 полагая что 1=1%. Однако это конечно не так, 1%=0,01, поэтому правильный размер премии по этому методу 53,55 руб. Пятьдесят три целковых за квартал ! Кушай не обляпайся, ни в чем себе не отказывая !!!

(21) Переход - время сложностей, но и время возможностей. При переходе выполняются не только технические мероприятия по переносу данных, но и ревизия локальных документов. В данном случае совершенно очевидно что в таком виде премия за выслугу совершенно не годится к применению и ваш колдоговор в этой части должен быть изменен. Иначе есть все шансы что работяги получив такую "фантастическую" премию засунут её автору методики в ... неприличное место. Вместе с колдоговором
23 Фрэнки
 
25.01.19
09:22
Но такое впечатление, что вся путаница в логике этого расчета только из-за того, что Надбавка за выслугу лет _начисляется_ раз в квартал и _за_ квартал. Т.е. при ежемесячном расчете это было бы обычная надбавка с процентом за выслугу от расчетной базы и все.

Я бы просто оттестировал несколько вариантов типовых с квартальным премированием, где расчетная база используется за квартал.

Фактически в расчет заложено ограничение, что максимум суммы всей надбавки за выслугу лет за весь год будет равна одному месячному окладу и это при условии, что оклад не изменялся, а если он изменился, то какой применить расчет? Средний? А может скользящий?
При расчете один раз в году будет 1/12 от годовой Расчетной базы. Когда период уменьшен, то Расчетная база автоматически снижается и также остается 1/12 ее часть, умноженная на ПроцентНадбавкиЗаВыслугуЛет.
Остается только прописать шкалу этих процентов и способ определения значения из шкалы по дате. Это тоже надо протестить на базе, т.к. не уверен, как именно работает определение текущей даты в этом расчете со шкалой.
24 Zlaya-Ferio
 
25.01.19
09:34
(22) полагая что 1=1%
1 не равно 1%. 1 это коэффициент. мы не используем проценты, видимо наименование Показателя ввело в заблуждение... Дико извиняюсь...
(23) по средней выдает разницу. Бухгалтерия, в случае, если меняется оклад, считает выслугу помесячно и складывает за 3 месяца, получается скользящий расчет.
Но суть в том, как реализовать? Никак... Пойду сдавать среднюю...
25 El_Duke
 
гуру
25.01.19
09:38
(24) Вообще класс !
Что еще в вашей формуле следует понимать не так как оно написано ?
26 Фрэнки
 
25.01.19
09:39
(24) очень часто надбавку от выслуги и считают всегда помесячно от простой расчетной базы за месяц. Ее просто складывать нужно раз в квартал за три месяца.
27 Zlaya-Ferio
 
25.01.19
09:49
(26) Вот это можно программно реализовать?
28 Zlaya-Ferio
 
25.01.19
09:50
(25) В условии это было описано ПроцентНадбавкиЗаВыслугуЛет=1. Иначе в формуле было бы выражение ПроцентНадбавкиЗаВыслугуЛет/100
29 El_Duke
 
гуру
25.01.19
09:52
(27) Дык в (1) это расписано, ответ уже дан
Надо только правильно задать шкалу процентов или ваших коэффициентов. Ну или десятичный множитель в формулу добавлять
30 Фрэнки
 
25.01.19
09:56
(27) на своей тестовой начните с того, что определите-разрешите использование квартальных премий в начальных настройках программы. И дальше по ситуации. Сама ситуация типовая, как уже повторил El_Duke
31 Zlaya-Ferio
 
25.01.19
10:09
(30) Разрешено, как же без этого... А вот ситуация не совсем типовая..
В любом случае огромная благодарность Фрэнки и El_Duke за помощь!
32 El_Duke
 
гуру
25.01.19
10:11
(31) Абсолютно типовая, вся "уникальность" идет от дурацкого способа расчета
33 Zlaya-Ferio
 
29.01.19
14:28
В общем, не найдя ответов описываю алгоритм действий:
1. Делаем начисление, например, ПремияМесяц формула Оклад*ПроцентЗаВыслугуЛет*НормаЧасов/ЧасовВГоду (доход в натуральной форме,начисление ежемесячно, учет времени - нужное, налоги и взносы не учитываются, остальное по необходимости).
2. Делаем начисление Выслуга (квартальная) с формулой РасчетнаяБаза (Назначение начисления - Премия или Повременная оплата труда, Начисляется в перечисленных месяцах - январь, апрель, июль, октябрь, Расчет Базы - ПремияМесяц, расчет предыдущий квартал, далее по необходимости)
В итоге начисление ПремияМесяц будет начисляться ежемесячно, но в двидении денег никак учавствовать не будет, а при наступлении месяца начисления квартальной премии все отлично считает. Причем с учетом изменения оклада.
Недостатки пока есть. во-первых, начисление попадает в расчетный листок. Скорее всего будут вопросы, нужно будет убрать. И, во-вторых, нужно проверить работу с учетом б/с и отгулов. Но тестированием пока бухгалтерия занимается...
К здоровой критике и обоснованным улучшениям формулы готова
34 El_Duke
 
гуру
29.01.19
14:54
(33) Пока вижу один явный косяк: никакие отсутствия учитываться не будут т.к. в расчете нигде не фигурирует отработанное время
Начисление ПремияМесяц я так понимаю ежемесячно выплачиваться не будет, все будет идти в квартал ?
В таком случае в Своде, Анализах зарплаты за период, Расчетном листке появятся остатки невыплаченных сумм. И выплата ПремияМесяц за январь, сделанная в апреле не может быть сделана "просто так". Понадобится док Компенсация за задержку зарплаты ...
Одно это мне уже не нравится. И не уверен что это все негативные последствия, это просто самые очевидные
35 Фрэнки
 
29.01.19
14:59
(34) вроде они для этого в натуральную форму суют, чтоб не считалось... Если не говорить о том, что это всего лишь некорректно составленная квартальная премия, то сам по себе способ формирования под расчетную базу я бы попробовал выкинуть в так называемые управленческие. Но на обычной версии ЗУП это будет заблокировано, скорей всего.

Нужно бы заменить Оклад на Расчетная база. Когда база подобрана верно, то она будет соответствовать начисленному Окладу за месяц или будет меньше с учетом возможных отклонений.
36 Akela has missed
 
29.01.19
15:04
(35) Нужно исключать только отклонения по неуважительной причине. Так что расчетная база оклада тоже не подойдет. Нужна повторная формула расчета оклада =))

Но и т.к. создавать фиктивное начисление чтобы посчитать другое начисление считаю плохой практикой, то решал бы задачу через РасчетЗарплатыРасширенныйПереопределяемый.
37 El_Duke
 
гуру
29.01.19
15:07
(35) В натуральную форму ? Что то из текста это не видится
Но даже если так, то как они собираются выплачивать то что в нат. форме ?
38 Zlaya-Ferio
 
30.01.19
09:30
(36) Согласна про повторную формулу расчета Оклада. А что за РасчетЗарплатыРасширенныйПереопределяемый?
(37) "как они собираются выплачивать то что в нат. форме ?" - никак. Так же никак не будем выплачивать питание сотрудников...
Косяк в том, что начисление ПремияМесяц попадает в расчетный листок, в область Справочно. Наверняка, возникнет много вопросов у сотрудников. Эту проблему нужно будет как-то решить..
39 Фрэнки
 
30.01.19
09:49
(38) // А что за РасчетЗарплатыРасширенныйПереопределяемый?

Открываем конфигуратором общий программный модуль
РасчетЗарплатыРасширенныйПереопределяемый
и программируем все мыслимое и немыслимое всеми доступными средствами программирования в 1С
40 El_Duke
 
гуру
30.01.19
10:13
(38) А вы упорная, жаль только эта большая энергия направлена не в нужное русло.
Пора уже понять что создать начисление на основе Оклада с приемлемыми издержками не получится никак. Если надо повторить, повторяю: НИКАК !

Ваш единственный путь - использовать РасчетнуюБазу, к ней подобрать вменяемую сетку коэффициентов/процентов чтобы результатом были нужные суммы.
Да, придется выкинуть в топку нынешний колдоговор в части расчета этой премии. Но что же поделать, его автору надо было раньше думать прежде чем состряпать подобную бабуйню.
Программист всегда исправляет последнюю ошибку.