Содержание:
В некоторых документах «Простои, отстранение от работы» с установленным флагом «Приостановка часов в течении части смены» наблюдалось расхождение часов в шапке документа и его табличной части.
Данная ошибка проявилась на ЗУП КОРП 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. Ошибка в расчете результата
Как показала практика такое решение оказалось не полным и до конца проблему не снимает, если например проведен документ «Простой» по дневным часам т.е. появились проводки в регистре «Данные оперативного учета рабочего времени сотрудников», то второй документ «Простой» по ночным часам уже рассчитает не верный результат, не смотря на верные часы в документе.
В моем случаи проблема была решена, программной фиксацией расчета времени (ФиксРасчетВремени = Истина), таблицы МенеджерРасчета.Зарплата.Начисления в процедуре «РассчитатьСотрудниковНаСервере», но осталось ощущение, что есть более простое и правильное решение, поэтому описание не выкладываю.
Если у вас была аналогичная проблема и вы решили ее другим способом, пожалуйста делитесь в комментариях.
