Округление доплат за вечерние и ночные часы

Бухгалтерии не понравилось как ЗУП округляет доплаты за вечерние и ночные часы. Пришлось нарисовать простенькую "округлялку" (обработку заполнения табличных частей). Вдруг кому пригодится.

Например, сотруднику установлена Тарифная часовая ставка = 233.49, он отработал 80 часов, в т.ч. 20 ночных и 8 вечерних.

ЗУП считатает:

  1. Оплата по часовому тарифу = 233.49 * 80 = 18679.20 (претензий нет).
  2. Доплата за ночные часы (20%) = 233.49 * 20% * 20 = 933.36 (при этом в документе начисления з/п по этому виду расчета показывает Тарифная ставка = 46.70; бухгалтерия хочет чтобы было 46.70 * 20 = 934).
  3. Доплата за вечерние часы (10%) = 233.49 * 10% * 8 = 186.79 (при этом в документе начисления з/п по этому виду расчета показывает Тарифная ставка = 23.35; бухгалтерия хочет чтобы было 23.35 * 8 = 186.80).

Создаём новую внешнюю обработку и в модуль обработки вставляем код:

Процедура Инициализировать (Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт

ТабЧасть = Объект[ИмяТабличнойЧасти];

ОбрабатываемыеВидыРасчетов = Новый Массив;
ОбрабатываемыеВидыРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаВечерниеЧасы);
ОбрабатываемыеВидыРасчетов.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаНочныеЧасы);

Для Каждого СтрокаТЧ Из ТабЧасть Цикл

Если ОбрабатываемыеВидыРасчетов.Найти(СтрокаТЧ.ВидРасчета) = Неопределено Тогда
Продолжить;
КонецЕсли;

СтарыйПоказатель1  = СтрокаТЧ.Показатель1;
СтарыйРезультат   = СтрокаТЧ.Результат;
НовыйПоказатель1  = Окр(СтарыйПоказатель1, 2);
НовыйРезультат   = Окр(НовыйПоказатель1 * СтрокаТЧ.ОплаченоДнейЧасов, 2);

ТекстСообщения = "В строке " + СтрокаТЧ.НомерСтроки
+ " (Сотрудник = " + СтрокаТЧ.Сотрудник
+ ", Вид расчета = " + СтрокаТЧ.ВидРасчета + "): ";
Сообщить(ТекстСообщения, СтатусСообщения.Информация);

БылиИзменения = Ложь;

Если СтарыйПоказатель1 <> НовыйПоказатель1 Тогда
СтрокаТЧ.Показатель1 = НовыйПоказатель1;
ТекстСообщения = " - Показатель1 (" + СтарыйПоказатель1 + ") округлен до " + НовыйПоказатель1;
Сообщить(ТекстСообщения, СтатусСообщения.БезСтатуса);
БылиИзменения = Истина;
КонецЕсли;

Если СтарыйРезультат <> НовыйРезультат Тогда
СтрокаТЧ.Результат = НовыйРезультат;
ТекстСообщения = " - Результат (" + СтарыйРезультат + ") пересчитан как " + НовыйРезультат;
Сообщить(ТекстСообщения, СтатусСообщения.БезСтатуса);
БылиИзменения = Истина;
КонецЕсли;

Если НЕ БылиИзменения Тогда
Сообщить(" - Всё ОК", СтатусСообщения.БезСтатуса);
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Обработка готова.

 

Для ленивых прилагается готовый файл.

Подключение

Заходим в Сервис / Дополнительные отчеты и обработки / Дополнительные внешние обработки табличных частей, добавляем новый элемент, жмём кнопку с изображением папки, выбираем прилагаемый файл ЗТЧ_ОкруглДоплатыЗаВечернНочнЧасы.epf (предварительно его нужно куда-нибудь сохранить к себе на диск), соглашаемся с использованием параметров авторегистрации, записываем созданный элемент:

 

 

Использование

Как обычно заполняем и рассчитываем документ «Начисление заработной платы сотрудникам организаций». Затем запускаем обработку через Заполнить / Округл. доплаты за вечерн./ночн. часы:

В окне сообщений будет выведен протокол работы.

1 Comment

  1. PatriziaRossi

    Интересная штука, а как сделать, чтоб подобным образом обработать другое начисление, Оплату по часовому тарифу? вот допустим есть тариф 82,240 и часы 115, ЗУП считает 9457,60. все верно, но мне надо, чтоб ЗУП округлили эту выплату до 6458.

    Все! дошла своим ходом, все получилось так, как мне и надо было, огромное спасибо

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *