Как самостоятельно настроить Вид начисления.

Начисление заработной платы в программе Турбо9 Зарплата происходит при помощи Видов начисления, точнее сказать благодаря им. Очевидно, что количество поставляемых производителем Видов начисления зачастую недостаточно, поэтому в программе предусмотрен механизм самостоятельного добавления и настройки недостающих Видов начислений. В этой статье будет описан краткий курс по настройке собственных видов начисления и алгоритмов расчета, не прибегая к программированию.

Основным механизмом для Вида начисления, позволяющим производить расчеты является Алгоритм расчета, который содержит возможность настройки формул для трех расчетных показателей. Расчетные показатели могут быть любыми, как правило это часы или дни (может быть и количество), ставка и сумма.

Новый вид начисления (как и алгоритм расчета) проще всего получить, сдублировав наиболее подходящий. Таким образом, отпадет необходимость в заполнении данных для расчета налогов и страховых взносов, привязки налоговых признаков и других общих значений, а останется только настроить параметры расчета.

Прежде всего необходимо открыть картотеку Алгоритмы расчета и если нужный алгоритм отсутствует создать и настроить его. Для настройки алгоритма расчета необходимо:

1. Закладка «Общие данные»
  • В поле Тип расчета необходимо указать наиболее подходящий тип, или создать свой при отсутствии подходящего;
  • Поле Класс реализации выбирается только в случае описания алгоритма расчета в студии;
  • Три поля с показателями должны быть заполнены, например показатель № 1 – часы, показатель № 2 тариф и показатель № 3 сумма. Обязательным является показатель №3. Показатели 1 и 2 могут отсутствовать в зависимости от реализации алгоритма.
2. Закладка «Формулы расчета»

предназначена для задания формул для расчета показателей с закладки «Общие данные»:

  • Поле «Условие использования расчета при заполнении» является вспомогательным и используется при заполнении ведомости начисления или карточки расчета при нажатии на кнопку «Заполнение ведомости» или «Заполнение карточки». В случае успешного выполнения данного условия, вид начисления (удержания) связанный с текущим алгоритмом, будет добавлен в ведомость или карточку расчета. В случае отсутствия значения в данном условии, значение всегда принимается «ложь» и вид начисления (удержания) в документ расчета автоматически попадать не будет. Например, при условии «Реквизит.ПостНачисление <> nil and (Реквизит.Тариф <> nil or Реквизит.Показатель2 <> nil)», вид начисления будет автоматически попадать только при его наличии в постоянных начислениях сотрудника и при виде оплаты «Тариф» или при ручном заполнении значения тарифа в расчетном документе.
  • В поле «Условие выполнения расчета» задается условие выполнения расчета. В случае пустого значения расчет будет выполняться всегда. Например, при условии «Реквизит.Оклад <> nil and (if(Реквизит.ПостНачисление <> nil, Реквизит.ПостНачисление.Ставка, 0) <> nil or Реквизит.Показатель2 <> nil)», вид начисления будет рассчитываться только если у сотрудника установлен вид оплаты «Оклад» и ставка из постоянных начислений не нулевая или введена вручную в расчетном документе.
  • В полях «Условие выполнения» и «Формула» задается условие выполнения расчета и формула расчета для каждого показателя (1-3). Например, описана переменная «Ставка» которая принимает значение «if(ПостНачисление <> nil, ПостНачисление.Ставка, 0)». Показатель №2 принимает значение по формуле «Переменная(«Ставка»)».
3. Закладка «Переменные»

Предназначена для задания своих расчетных переменных для избежания одинаковых множественных расчетов. Например, здесь можно сделать вычисление «оборота», значение которого будет использоваться при расчете каждого из показателей.

Для заполнения условий и формул следует использовать следующие функции:
  1. Значения вида оплаты по перемещению
    • Реквизит. ВидОплаты_Оклад
    • Реквизит. ВидОплаты_Тариф
  2. Значения ставок оклада/тарифа по перемещению
    • Реквизит.Оклад, Реквизит.СтавкаОклада
    • Реквизит.Тариф, Реквизит.СтавкаТарифа
  3. Норма дней (часов) за месяц по графику
    • Реквизит.НормаДнейЗаМесяц
    • Реквизит.НормаЧасовЗаМесяц -
  4. Норма дней (часов) за текущий квартал по графику
    • Реквизит.НормаДнейЗаКвартал
    • Реквизит.НормаЧасовЗаКвартал
  5. Количество дней (часов) по табелю (по кодам УО из начисления)
    • Реквизит.КоличествоДней
    • Реквизит.КоличествоЧасов
  6. Количество дней (часов) по табелю (кроме праздничных, по кодам УО из начисления)
    • Реквизит.КоличествоВыходныхДней
    • Реквизит.КоличествоВыходныхЧасов
  7. Количество праздничных дней (часов) по табелю (по кодам УО из начисления)
    • Реквизит.КоличествоПраздничныхДней
    • Реквизит.КоличествоПраздничныхЧасов
  8. Норма рабочих дней (часов) по табелю
    • Реквизит.НормаДнейПоТабелю
    • Реквизит.НормаЧасовПоТабелю
  9. Количество отработанных дней (часов) по табелю
    • Реквизит.ОтработаноДней
    • Реквизит.ОтработаноЧасов
  10. Ссылки на подтаблицу постоянного начисления или удержания
    • Реквизит.ПостНачисление
    • Реквизит.ПостУдержание
  11. Массив ссылок на постоянные вычеты
    • Реквизит.ПостВычеты
  12. Ссылка на документ списочного расчета
    • Реквизит.СписочныйРасчет
  13. Ссылка на расчетную позицию документа списочного расчета
    • Реквизит.ПозицияСписка
  14. Определение части расчетного периода
    • Реквизит.РасчетЗаПоловину
    • Реквизит.РасчетЗаМесяц
    • Реквизит.РасчетНаДату
  15. Значения записей подразделения, сотрудника, счетов учета и т.д.
    • Интерфейс - Базовые.интБазовыйРасчет
    • Месяц - Справочники.ПериодыРасчета
    • Подразделение - Базовый.Данные.Субъект
    • Перемещение - Субъекты.Сотр_Перемещения
    • Сотрудник - Базовый.Данные.Субъект
    • ФизЛицо - Базовый.Данные.Субъект
    • СтатусПриема - ТипСтатусаПриема
    • Резидент - Logical
    • СтавкаФизЛица - Справочники.СтавкиНДФЛ
    • счетДебета - String
    • счетКредита - String
    • счетОтбора - String
    • ВидРасчета - Базовые.интЗапись
    • ВидДохода - Классификаторы.ВидыДоходов
    • СтавкаНДФЛ - Справочники.СтавкиНДФЛ
    • Алгоритм - Справочники.интАлгоритмРасчета
    • КлассРеализации - Class Алгоритмы.Базовый
  16. Значения справочников подразделения, сотрудника и т.д.
    • спрПодразделение - спрПодразделения
    • спрПеремещение - спрПеремещения
    • спрСотрудник - спрСотрудники
    • спрФизик - спрФизЛицо
    • ТипРасчета - спрТипРасчета
  17. Значения расчетных показателей
    • Показатель1 - Numeric
    • Показатель2 - Numeric
    • Показатель3 - Numeric
  18. Функция получения расчетных показателей с расчетом при необходимости
    • Реквизит. Показатель([1, 2 или 3])
  19. Дополнительные расчетные функции
    • Реквизит.ЗависимыеНачисления - получение суммы зависимых начислений по списку, заданному в виде начисления.
    • Реквизит.НачисленияПоДоходу(…) - получение суммы начислений по коду дохода. Код дохода задается в виде числа, строки или прямой ссылки, например «2000» или «2012».
    • Реквизит.НачисленияПоНДФЛ(…) - получение суммы начислений по ставке НДФЛ. Ставка задается в виде числа, строки или прямой ссылки, например «13» или «35».
    • Реквизит.НачисленияПоФлагу(…) - получение суммы начислений по логическому полю вида начисления. Имя поля задается в строковом виде.
  20. Так же при написании условий и формул расчета можно использовать разыменованные значения полей записей и справоников описанных выше. Аналогично допускается использование любых доступных свойств и методов произвольных классов. Для доступа к произвольным классам необходимо использовать полное иерархическое описание его имени.

Например, настроим формулы для алгоритма расчета ночных в качестве 30% надбавки к окладу в часах:

Показатель № 1, часы, формула: Реквизит.КоличествоЧасов

Показатель № 2, 30% надбавка за ночные, формула: 30%(Реквизит.Оклад/Реквизит.НормаЧасовПоТабелю)

Показатель № 3, сумма, формула: Round(Реквизит.Показатель1*Реквизит.Показатель2, Точность)

Следующий пример покажет как в формулах можно использовать переменные, например создадим алгоритм расчета позволяющий для ночных использовать отличную от основного тарифа ставку, которую зададим у сотрудника за закладке Заработная плата/Постоянные начисления в колонке Ставка:

Показатель № 1, часы, формула: Реквизит.КоличествоЧасов

Показатель № 2, тарифная ставка, формула: Переменная(«локСтавка»)

Показатель № 3, сумма, формула: Round(Реквизит.Показатель1*Реквизит.Показатель2, Точность)

На закладке Переменные описываем переменную локСтавка и задаем формулу: if(ПостНачисление <> nil, ПостНачисление.Ставка, 0)

Используя реквизиты для расчета показателей можно настроить практически любой алгоритм расчета.

После создания нужных алгоритмом расчета можно приступить к созданию видов начисления для Ночных от тарифа и Ночных как 30% надбавки от тарифа. Так будет выглядеть Вид начисления Ночных от тарифа задаваемого в колонке Ставка. Для каждого сотрудника этот тариф может быть индивидуальный, т.к. указывается у сотрудника за закладке Заработная плата/Постоянные начисления в колонке Ставка.

А так Вид начисления Ночных как 30% надбавки от тарифа указанного у сотрудника на закладке Назначения и перемещения.

 
doc/kak_samostojatelno_nastroit_vid_nachislenija.txt · Последние изменения: 2016/04/15 15:26 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki