Например, сотруднику установлена Тарифная часовая ставка = 233.49, он отработал 80 часов, в т.ч. 20 ночных и 8 вечерних.
ЗУП считатает:
- Оплата по часовому тарифу = 233.49 * 80 = 18679.20 (претензий нет).
- Доплата за ночные часы (20%) = 233.49 * 20% * 20 = 933.36 (при этом в документе начисления з/п по этому виду расчета показывает Тарифная ставка = 46.70; бухгалтерия хочет чтобы было 46.70 * 20 = 934).
- Доплата за вечерние часы (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 (предварительно его нужно куда-нибудь сохранить к себе на диск), соглашаемся с использованием параметров авторегистрации, записываем созданный элемент:
Использование
Как обычно заполняем и рассчитываем документ «Начисление заработной платы сотрудникам организаций». Затем запускаем обработку через Заполнить / Округл. доплаты за вечерн./ночн. часы:
В окне сообщений будет выведен протокол работы.
Интересная штука, а как сделать, чтоб подобным образом обработать другое начисление, Оплату по часовому тарифу? вот допустим есть тариф 82,240 и часы 115, ЗУП считает 9457,60. все верно, но мне надо, чтоб ЗУП округлили эту выплату до 6458.
Все! дошла своим ходом, все получилось так, как мне и надо было, огромное спасибо