С недавнего времени (релиз ЗУП 3.0.23) при формировании ведомостей на выплату зарплаты в них учитываются и указываются в расшифровке прошлые месяцы, за которые есть несовпадения начислений и выплат. Если заполнение выплат производится без округления, проблем нет, но если выплаты необходимо округлять, то округляются по правилам округления для формирования выплаты не только начисления текущего месяца, но и остатки прошлых месяцев. В результате конечная сумма к выплате не округляется по правилу округления, а искажается, остатки предыдущих месяцев не "списываются" полностью, как если бы они не округлялись, а продолжают в последующем участвовать (в отдельных случаях в других суммах) в формировании выплат следующих месяцев, а в расшифровке появляется всё больше месяцев, которые участвуют в формировании выплаты, к тому же в расшифровке указываются месяцы с нулевыми (после округления) выплатами, что сильно затрудняет анализ реальных невыплат за прошлые расчетные периоды. В 1С сейчас большой напряг с количеством писем по ЗУП 3.0 и рассмотрение этого вопроса идёт уже больше месяца без конкретного результата.
Для тех, у кого данный вопрос актуален (выплаты через кассу) привожу временную заплатку в общем модуле ВзаиморасчетыССотрудникамиБазовый для устранения этого явления. Изменения касаются процедуры "ВедомостьЗарплатаКВыплатеРассчитатьСуммы", текст процедуры следует заменить на приведённый далее.
Код |
---|
Процедура ВедомостьЗарплатаКВыплатеРассчитатьСуммы(Ведомость, ЗарплатаКВыплате) Экспорт Перем Сотрудник, СтрокаСальдо; // Округление результатов Если ЗначениеЗаполнено(Ведомость.Округление) Тогда СпособОкругленияСсылка = Ведомость.Округление; Иначе СпособОкругленияСсылка = Справочники.СпособыОкругленияПриРасчетеЗарплаты.ПоУмолчанию(); КонецЕсли; Если СпособОкругленияСсылка<>Справочники.СпособыОкругленияПриРасчетеЗарплаты.ПоУмолчанию() Тогда СпособОкругления = СпособОкругленияСсылка.ПолучитьОбъект(); СальдоПрошлыхВыплат = Новый ТаблицаЗначений; СальдоПрошлыхВыплат.Колонки.Добавить("СтрокаЗарплатыСсылка"); СальдоПрошлыхВыплат.Колонки.Добавить("Сальдо"); ЗарплатаКВыплате.Сортировать("ФизическоеЛицо"); Для Каждого СтрокаЗарплаты Из ЗарплатаКВыплате Цикл // СтрокаЗарплаты.КВыплате = СпособОкругления.Округлить(СтрокаЗарплаты.КВыплате); //соберём попутно сальдо невыплат прошлых периодов и уберём копейки Если Сотрудник = Неопределено Тогда Сотрудник=СтрокаЗарплаты.ФизическоеЛицо; СтрокаСальдо = СальдоПрошлыхВыплат.Добавить(); СтрокаСальдо.Сальдо = 0; ИначеЕсли Сотрудник<>СтрокаЗарплаты.ФизическоеЛицо Тогда Сотрудник=СтрокаЗарплаты.ФизическоеЛицо; Если СтрокаСальдо.СтрокаЗарплатыСсылка <> Неопределено Тогда СтрокаСальдо = СальдоПрошлыхВыплат.Добавить(); КонецЕсли; СтрокаСальдо.Сальдо = 0; КонецЕсли; Если СтрокаЗарплаты.ПериодВзаиморасчетов <> Ведомость.ПериодРегистрации Тогда СтрокаСальдо.Сальдо = СтрокаСальдо.Сальдо + СтрокаЗарплаты.КВыплате; Иначе Если СтрокаСальдо.СтрокаЗарплатыСсылка <> Неопределено Тогда СтрокаСальдо.Сальдо = СтрокаСальдо.Сальдо + СтрокаЗарплаты.КВыплате; Иначе СтрокаСальдо.СтрокаЗарплатыСсылка = СтрокаЗарплаты; КонецЕсли; КонецЕсли; КонецЦикла; Для Индекс=0 По СальдоПрошлыхВыплат.Количество()-1 Цикл СтрокаСальдо = СальдоПрошлыхВыплат.Получить(Индекс); Если СтрокаСальдо.СтрокаЗарплатыСсылка <> Неопределено Тогда СтрокаЗарплаты = СтрокаСальдо.СтрокаЗарплатыСсылка; СтрокаЗарплаты.КВыплате = СпособОкругления.Округлить(СтрокаЗарплаты.КВыплате + СтрокаСальдо.Сальдо) - СтрокаСальдо.Сальдо; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |