Содержание:
В некоторых документах “Простои, отстранение от работы” с установленным флагом “Приостановка часов в течении части смены” наблюдалось расхождение часов в шапке документа и его табличной части.
Данная ошибка проявилась на ЗУП КОРП 3.1.28.64.
Причина
После анализа выяснилось, что такие расхождения появляются, когда пользователь меняет сначала “Количество часов” в шапке документа, а затем “Планируемую дату выплаты” на уже записанных документах. В таком случаи программа отрабатывает не корректно – при смене часов в шапке (с 6,16ч. на 7ч. в данном примере), вся табличная часть перезаполняется новым значением (что логично), затем при измении “Даты выплаты”, документ пересчитывается и в шапке остаются новые часы (7ч), а в табличную часть восстанавливаются данные по старому значению “Количество часов” (6,16ч). Если пользователь не заметит этого и проведет документ, то получим ошибку.
Решение
Обращение в тех. поддержку результата не принесло.
Решено было исправить с помощью расширения. Для этого заимствована процедура “ПланируемаяДатаВыплатыПриИзмененииНаСервере” из модуля формы документа “Простой сотрудников” с аннотацией “&ИзменениеИКонтроль”. Суть изменений в том, что 4-й аргумент (ПерезаполнитьНачисления) у процедуры “РассчитатьСотрудниковНаСервере” установлен в значение “Истина” при почасовых простоях.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
&НаСервере &ИзменениеИКонтроль("ПланируемаяДатаВыплатыПриИзмененииНаСервере") Процедура АВ_ПланируемаяДатаВыплатыПриИзмененииНаСервере() ОбязательныйРасчетНДФЛ = ТребуетсяРасчетНалога(Объект.Начисление, Объект.ПланируемаяДатаВыплаты); УстановитьВидимостьСвойстваИсчислятьНалог(); УстановитьВидимостьСвойстваПеречислитьНалог(); УстановитьВидимостьРеквизитовМежрасчетнойВыплаты(); Если ЭтоМежрасчетнаяВыплата(Объект.ПорядокВыплаты) Или ОбязательныйРасчетНДФЛ Тогда #Удаление РассчитатьСотрудниковНаСервере(ОбщегоНазначения.ВыгрузитьКолонку(Объект.Начисления, "Сотрудник"), Новый Структура("ИмяТаблицы", "НДФЛ"), , Ложь); #КонецУдаления #Вставка РассчитатьСотрудниковНаСервере(ОбщегоНазначения.ВыгрузитьКолонку(Объект.Начисления, "Сотрудник"), Новый Структура("ИмяТаблицы", "НДФЛ"), , Объект.ВнутрисменныйПростой); #КонецВставки КонецЕсли; КонецПроцедуры |
P.S. Ошибка в расчете результата
Как показала практика такое решение оказалось не полным и до конца проблему не снимает, если например проведен документ “Простой” по дневным часам т.е. появились проводки в регистре “Данные оперативного учета рабочего времени сотрудников”, то второй документ “Простой” по ночным часам уже рассчитает не верный результат, не смотря на верные часы в документе.
В моем случаи проблема была решена, программной фиксацией расчета времени (ФиксРасчетВремени = Истина), таблицы МенеджерРасчета.Зарплата.Начисления в процедуре “РассчитатьСотрудниковНаСервере”, но осталось ощущение, что есть более простое и правильное решение, поэтому описание не выкладываю.
Если у вас была аналогичная проблема и вы решили ее другим способом, пожалуйста делитесь в комментариях.