По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Настройка - Начисления - Премия
смотрим формулу, если возможно
Далее,
Настройка - Начисления - Создать -
назначение - Прочие начисления и выплаты
формула - РасчетнаяБаза
закладка Расчет базы - Премия (выбрать из списка)
Назначьте это начисление сотруднику и посмотрите цифры. Если нужно изменить цифры - меняйте в новом начислении формулу.
Настройка - Начисления - Премия
смотрим формулу, если возможно
Далее,
Настройка - Начисления - Создать -
назначение - Прочие начисления и выплаты
формула - РасчетнаяБаза
закладка Расчет базы - Премия (выбрать из списка)
Назначьте это начисление сотруднику и посмотрите цифры. Если нужно изменить цифры - меняйте в новом начислении формулу.
Я базу получал используя механизмы расчета. Конфигуратор в руки и разбирайтесь как в зупе происходит расчет. В кратце могу сказать что вызывается обработка "МенеджерРасчетаЗарплаты", подготавливаются данные, и вызывается процедура расчета, возвращаются расчетные данные в том числе и база если она есть в начислении. Все это можно посмотреть в любом документе расчета, премия, разовые, начисление зп и др.
Ниже пример кода
Далее нужная вам таблица
ее анализируете.
Ниже пример кода
УстановитьПривилегированныйРежим(Истина);
НачатьТранзакцию();
МенеджерРасчета=РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(Объект.ПериодРегистрации, Объект.Организация);
МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления=Истина;
МенеджерРасчета.ИсключаемыйРегистратор=Объект.Ссылка;
СотрудникиДляНачислений=МенеджерРасчета.ТаблицаСотрудников();
СотрудникиДляРассчета=Новый Массив;
Пока ВыборкаСотрудник.Следующий() Цикл
СотрудникиДляРассчета.Добавить(ВыборкаСотрудник.Сотрудник);
НоваяСтрока=СотрудникиДляНачислений.Добавить();
НоваяСтрока.Сотрудник=ВыборкаСотрудник.Сотрудник;
НоваяСтрока.ДатаНачала=Объект.ПериодРегистрации;
НоваяСтрока.ДатаОкончания=ВыборкаСотрудник.ДатаОкончания;
КонецЦикла;
МенеджерРасчета.НастройкиРасчета.Сотрудники=СотрудникиДляРассчета;
ОтборМенеджераРасчета=МенеджерРасчета.СоздатьОтборы();
ОтборМенеджераРасчета.Подразделение=Объект.Подразделение;
МенеджерРасчета.ЗаполнитьНачислениеЗарплаты(СотрудникиДляНачислений, ОтборМенеджераРасчета);
МенеджерРасчета.РассчитатьЗарплату();
ОтменитьТранзакцию();
УстановитьПривилегированныйРежим(Ложь);
ПоказатьДалее нужная вам таблица
МенеджерРасчета.Зарплата.Начисления
ее анализируете.
(8)
Вот это что-то интересное, сейчас посмотрю эту обработку
Пока ВыборкаСотрудник.Следующий() Цикл
СотрудникиДляРассчета.Добавить(ВыборкаСотрудник.Сотрудник);
НоваяСтрока=СотрудникиДляНачислений.Добавить();
НоваяСтрока.Сотрудник=ВыборкаСотрудник.Сотрудник;
НоваяСтрока.ДатаНачала=Объект.ПериодРегистрации;
НоваяСтрока.ДатаОкончания=ВыборкаСотрудник.ДатаОкончания;
КонецЦикла;
СотрудникиДляРассчета.Добавить(ВыборкаСотрудник.Сотрудник);
НоваяСтрока=СотрудникиДляНачислений.Добавить();
НоваяСтрока.Сотрудник=ВыборкаСотрудник.Сотрудник;
НоваяСтрока.ДатаНачала=Объект.ПериодРегистрации;
НоваяСтрока.ДатаОкончания=ВыборкаСотрудник.ДатаОкончания;
КонецЦикла;
Вот это что-то интересное, сейчас посмотрю эту обработку
(12)Вряд ли, расчетная база это расчетный параметры, который должен рассчитаться на основании других начислений, которые в свою очередь должны быть рассчитаны. И на сколько мне известно регистры расчета не полностью задействованы, и через них базу не получишь, т.е. в зуп 3 расчет идет кодом, а не механизмом регистров, но тут я могу ошибаться.
(14)МенеджерРасчета это и есть ваша функция. Если вы обратили внимание то в моем примере идет расчет всей зп. Я определял расчетную базу для планового начисления, для не планового начисления нельзя задать расчетную базу в текущем месяце. Поэкспериментируйте, создайте начисление которое разовое и попробуйте указать ему базу.
(15) К сожалению, судя по вашему коду, результат в виде расчетной базы по начислениям получен не будет, т.е.
Есть премия, нужно получить расчетную базу по показателям, в вашем коде можно получить просто итоговое число - расчетная база, а мне необходимо получить расчетную базу прямо в разрезе начислений, из которых она состоит
Есть премия, нужно получить расчетную базу по показателям, в вашем коде можно получить просто итоговое число - расчетная база, а мне необходимо получить расчетную базу прямо в разрезе начислений, из которых она состоит
(17) Еще раз: мне не нужна расчетная база, мне нужно знать из каких сумм она сложилась, в типовом функционале в документах расчета расчетная база хранится просто в виде числа, из этого я делаю вывод, что в результате выполнения вашего кода я получу просто число или это не так ?
(19) Это база на основании которой посчитана премия, мне нужно ее получить не в виде числа, а в виде начислений
Например
Была начислена премия - 50.000
Начисляется она как 100% от сложения двух показателей за прошлый месяц (Оклад + Надбавка)
Т.е. я хочу получить такую таблицу
Оклад за прошлый месяц - 30.000
Надбавка за прошлый месяц - 20.000
Например
Была начислена премия - 50.000
Начисляется она как 100% от сложения двух показателей за прошлый месяц (Оклад + Надбавка)
Т.е. я хочу получить такую таблицу
Оклад за прошлый месяц - 30.000
Надбавка за прошлый месяц - 20.000
(22) Это так же неверный ответ. Расчетная база это сумма начислений входящих в расчетную базу за выбранный период. Нет начисления оклад, если начисление оплата по окладу. И если оклад 20 тыс., а сотрудник отработал 19 дней, вместо 20 по норме, то он получит не 20 тыс., а 20 000 * 19/20 = 19 000. Т.о. расчетная база от начисление оплата по окладу будет 19 000. Чтобы узнать расчетную базу от начисления оплата по окладу программа должна его рассчитать. То же самое касается вашей надбавки.
Если вы не понимаете этих принципов о чем с вами можно говорить.
Если вы не понимаете этих принципов о чем с вами можно говорить.
(25)
Вы придираетесь к словам, оклад и надбавка уже рассчитаны, мне не нужно их считать, мне нужно получить программно какие суммы оклада и надбавки программа использовала при расчете премии, если вы не знаете как решить эту задачу то о чем с вами можно говорить
Это так же неверный ответ. Расчетная база это сумма начислений входящих в расчетную базу за выбранный период. Нет начисления оклад, если начисление оплата по окладу. И если оклад 20 тыс., а сотрудник отработал 19 дней, вместо 20 по норме, то он получит не 20 тыс., а 20 000 * 19/20 = 19 000. Т.о. расчетная база от начисление оплата по окладу будет 19 000. Чтобы узнать расчетную базу от начисления оплата по окладу программа должна его рассчитать. То же самое касается вашей надбавки.
Если вы не понимаете этих принципов о чем с вами можно говорить.
Если вы не понимаете этих принципов о чем с вами можно говорить.
Вы придираетесь к словам, оклад и надбавка уже рассчитаны, мне не нужно их считать, мне нужно получить программно какие суммы оклада и надбавки программа использовала при расчете премии, если вы не знаете как решить эту задачу то о чем с вами можно говорить
(30)
Если в общем (нужные поля отберете) , без учета за какой период базы , то как-то так
Если в общем (нужные поля отберете) , без учета за какой период базы , то как-то так
ВЫБРАТЬ
НачисленияБазовыеВидыРасчета.ВидРасчета КАК расчет
ПОМЕСТИТЬ ВТРасчеты
ИЗ
ПланВидовРасчета.Начисления.БазовыеВидыРасчета КАК НачисленияБазовыеВидыРасчета
ГДЕ
НачисленияБазовыеВидыРасчета.Ссылка = &Ссылка
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Начисления.ПериодДействия КАК ПериодДействия,
Начисления.ПериодДействияНачало КАК ПериодДействияНачало,
Начисления.ПериодДействияКонец КАК ПериодДействияКонец,
Начисления.БазовыйПериодНачало КАК БазовыйПериодНачало,
Начисления.БазовыйПериодКонец КАК БазовыйПериодКонец,
Начисления.Сотрудник КАК Сотрудник,
Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
Начисления.СторноТекущегоПериода КАК СторноТекущегоПериода,
Начисления.Результат КАК Результат,
Начисления.ОтработаноДней КАК ОтработаноДней,
Начисления.ОтработаноЧасов КАК ОтработаноЧасов,
Начисления.РезультатВТомЧислеЗаСчетФБ КАК РезультатВТомЧислеЗаСчетФБ,
Начисления.ГрафикРаботы КАК ГрафикРаботы,
Начисления.ВидУчетаВремени КАК ВидУчетаВремени,
Начисления.ВремяВЧасах КАК ВремяВЧасах,
Начисления.ГрафикРаботыНорма КАК ГрафикРаботыНорма,
Начисления.Организация КАК Организация,
Начисления.ФиксСтрока КАК ФиксСтрока,
Начисления.ФиксЗаполнение КАК ФиксЗаполнение,
Начисления.ФиксРасчетВремени КАК ФиксРасчетВремени,
Начисления.ФиксРасчет КАК ФиксРасчет,
Начисления.ФиксСторно КАК ФиксСторно,
Начисления.РасчетнаяБазаЗаЕдиницуНормыВремени КАК РасчетнаяБазаЗаЕдиницуНормыВремени,
Начисления.ИдентификаторСтроки КАК ИдентификаторСтроки,
Начисления.ПериодРегистрацииВремени КАК ПериодРегистрацииВремени,
Начисления.ПериодРегистрацииНормыВремени КАК ПериодРегистрацииНормыВремени,
Начисления.ДоляРезультата КАК ДоляРезультата,
Начисления.Месяц КАК Месяц,
Начисления.ДокументОснование КАК ДокументОснование,
Начисления.СторнируемыйДокумент КАК СторнируемыйДокумент,
Начисления.ГоловнойСотрудник КАК ГоловнойСотрудник,
Начисления.ОбщийГрафик КАК ОбщийГрафик,
Начисления.Перерасчет КАК Перерасчет
ИЗ
РегистрРасчета.Начисления КАК Начисления
ГДЕ
Начисления.ВидРасчета В
(ВЫБРАТЬ
ВТРасчеты.расчет
ИЗ
ВТРасчеты)
И Начисления.Сотрудник = &Сотрудник
Показать
(33) Интересно , как можно получить базу на момент расчета премии если была корректировка , допустим был у сотрудника оклад 10 000 рассчиталась премия , далее по какой-то причине (например забыли ввести больничный) его оклад уменьшился , в регистрах уже лежат обновленные данные , т.е. при попытке достать базу , вы все равно получите обновленные данные а не те с которых считалась премия
(38) можно получить примерную (но не точную) базу в разрезе начислений - в документе премии есть колонка с базой с которой рассчиталась премия - запросом из (32) собираете базу и сравниваете с ранее рассчитанной если разница 0 то база не менялась если разница не равно 0 то эту разницу раскидываете в процентном соотношении между начислениями сформировавшими эту базу
(43) Это служебная информация , для отслеживания действий пользователей и контроля которая не влияет на расчет и на случай восстановления первоначального состояния документов , а база премии это расчетная величина которая зависит от других начислений на момент расчета и тут важна именно актуальность расчета а не история
(45) Если рассуждать как Вы, то программа должна хранить подробные данные расчета каждого начисления. (Вам премия нужна, а кто-то может быть захочет увидеть какие начисления вошли в расчет среднего за каждый месяц). Нет смысла хранить такой огромный объем причем неактуальных данных.
(50) Вау сколько здесь уже нафлудили ))
А по сути вопроса: простого пути конечно нет или я его не знаю.
Но есть следующие варианты:
Вы знаете формулу расчета, значения показателей хранятся в регистре сведений - ЗначенияПоказателейНачислений. Посчитать я думаю труда не должно составить?
Теперь остается вопрос что делать с корректировками?
Действительно, на текущий момент предыдущие значения не хранятся. Когда платформа сможет делать версионирование (уже есть в последних релизах) можно будет воспользоваться, а пока можно использовать сторонние решения.
Однако если сейчас не используется - вариант тоже есть.
В документах хранится информация о том что такие то строки были скорректированы вручную. Соответственно полный расчет базы будет выполняться по следующим шагам:
1. Получаем значения показателей по формуле с документом расчета.
2. В документе проверяем корректировалась ли сумма.
3.1 Если нет, то просто берем показатель.
3.2 Если да, то скармливаем функции расчета в документе по кому считать и указываем что корректировки учитывать не нужно. Получаем показатель.
4. Выводим показатели.
Здесь нужно покодить конечно ))
Опять же, нужно учитывать нюансы: мы не знаем от какого показателя считалось начисление (от скорректированого или нет). Поэтому придется делать циклически: считаем как есть, сверяем итоговую сумму. Если совпало - профит. Нет - значит были корректировки, делаем расчет с их учетом.
В общем если есть задача и желание, решить ее можно.
А по сути вопроса: простого пути конечно нет или я его не знаю.
Но есть следующие варианты:
Вы знаете формулу расчета, значения показателей хранятся в регистре сведений - ЗначенияПоказателейНачислений. Посчитать я думаю труда не должно составить?
Теперь остается вопрос что делать с корректировками?
Действительно, на текущий момент предыдущие значения не хранятся. Когда платформа сможет делать версионирование (уже есть в последних релизах) можно будет воспользоваться, а пока можно использовать сторонние решения.
Однако если сейчас не используется - вариант тоже есть.
В документах хранится информация о том что такие то строки были скорректированы вручную. Соответственно полный расчет базы будет выполняться по следующим шагам:
1. Получаем значения показателей по формуле с документом расчета.
2. В документе проверяем корректировалась ли сумма.
3.1 Если нет, то просто берем показатель.
3.2 Если да, то скармливаем функции расчета в документе по кому считать и указываем что корректировки учитывать не нужно. Получаем показатель.
4. Выводим показатели.
Здесь нужно покодить конечно ))
Опять же, нужно учитывать нюансы: мы не знаем от какого показателя считалось начисление (от скорректированого или нет). Поэтому придется делать циклически: считаем как есть, сверяем итоговую сумму. Если совпало - профит. Нет - значит были корректировки, делаем расчет с их учетом.
В общем если есть задача и желание, решить ее можно.
(33)
Не думаю, что они где-нибудь хранятся прямо таблицей. Она существует только во время расчета премии.
Если у Вас "корректировались начисления", то по хорошему и рассчитанную от неверной базы премию тоже надо пересчитать.
мне бы как нибудь получить данные именно на момент расчета премии
Не думаю, что они где-нибудь хранятся прямо таблицей. Она существует только во время расчета премии.
Если у Вас "корректировались начисления", то по хорошему и рассчитанную от неверной базы премию тоже надо пересчитать.
(47) У нас премия должна учитываться в среднем заработке не полностью, т.е. например премия начислена на оклад и надбавку, премия по окладу должна учесться полностью на оклад и пропорционально отработанных дням на надбавку, НО только у тех кто был в командировке, у всех остальных должна учитываться полностью.
Для решения этой задачи, при расчете среднего заработка, мне нужно знать базу премии в разрезе начислений. Ну и конечно оклад и надбавка это для понимания, у нас пару десятков начислений входит в базу
Для решения этой задачи, при расчете среднего заработка, мне нужно знать базу премии в разрезе начислений. Ну и конечно оклад и надбавка это для понимания, у нас пару десятков начислений входит в базу
(53) Вариантов может быть несколько. Вот например можно сделать так:
1. Вводим новый показатель - Командировка.
2. Настраиваем формулу премии: Оклад + ?(Командировка = 0, Надбавка, Надбавка - Надбавка*(НормаДней - ОтработаноДней))
3. Настраиваем показатель - Для сотрудника, Числовой, Только в месяце в котором вводится значение, Вводится единовременно документом ввода данных для расчета зарплаты.
Далее можно сделать либо расширение, которое при проведении командировки будет вводить документ с показателем 1 для данного сотрудника. Либо обработка, которая перед проведением премии пробежится по командировкам и сделает то же самое.
Тут уж на ваш вкус. Возможно еще какие то нюансы нужно учитывать, но я их просто не знаю. Но описанная схема вполне рабочая. Делается не дольше чем я это описывал )
1. Вводим новый показатель - Командировка.
2. Настраиваем формулу премии: Оклад + ?(Командировка = 0, Надбавка, Надбавка - Надбавка*(НормаДней - ОтработаноДней))
3. Настраиваем показатель - Для сотрудника, Числовой, Только в месяце в котором вводится значение, Вводится единовременно документом ввода данных для расчета зарплаты.
Далее можно сделать либо расширение, которое при проведении командировки будет вводить документ с показателем 1 для данного сотрудника. Либо обработка, которая перед проведением премии пробежится по командировкам и сделает то же самое.
Тут уж на ваш вкус. Возможно еще какие то нюансы нужно учитывать, но я их просто не знаю. Но описанная схема вполне рабочая. Делается не дольше чем я это описывал )
(55) Разница только в одном - больше показателей в формуле. Я не думаю что перечисление в ней начислений даже 20 займет более 10 минут. Как я понял у вас затык только в том как подставить в формулу был ли сотрудник в командировке. Я предложил вариант. А формулу вы уже корректируете под потребности, хоть проценты считаете, хоть логарифмы. Это все равно делается только один раз, потом все считается автоматически.
(55)
Период действия не будем рассматривать, считаем что премия ежемесячная.
Согласно п. 922 премия учитывается неполностью если она выплачена без учета отработанного времени. В этом случае премия должна быть учтена согласно доле отработанного времени.
Если вы выплачиваете премию на время командировки, то эта премия в принципе не должна входить в средней ( согласно тому же п.922)
Может стоит создать два вида премии . Одну за время командировки,которая не будет входит в средний.
У нас премия должна учитываться в среднем заработке не полностью,
Период действия не будем рассматривать, считаем что премия ежемесячная.
Согласно п. 922 премия учитывается неполностью если она выплачена без учета отработанного времени. В этом случае премия должна быть учтена согласно доле отработанного времени.
Если вы выплачиваете премию на время командировки, то эта премия в принципе не должна входить в средней ( согласно тому же п.922)
Может стоит создать два вида премии . Одну за время командировки,которая не будет входит в средний.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот