18-12-2013
1) добавлена функция при изменении Сотрудника автоматически заполняются поля периодов на форме обработки, если например у сотрудника уже заполнен стаж
2) также исправлен метод вычисления ДатаОтсчета
похожая проблема с задвоением стажа произошла:
1)Сначала я корректно заполнил обе табличные части: "Трудовая деятельность" и "Стажи общего характера".
Получилось: стаж равен 12 лет и дата начала стажа 01.09.2001.
2) Оформляю "Начисление больничного" при выборе сотрудника в докумнте стаж заполняется не 12 лет, а 24 года.
Теперь выяснилось в чем проблема:
В типовом коде фирмы 1С общего модулея(УПП релиз 1.3.46) ПроведениеРасчетов.ПолучитьНачалоСтажаДляБольничногоЛиста
вычисляется дата начала стажа ДатаСтажа
Код типовой 1С УПП релиз 1.3.46 |
---|
ДатаСтажа = ДобавитьМесяц(ВыборкаПоСтажу.ДатаОтсчета, - ВыборкаПоСтажу.РазмерМесяцев) - ВыборкаПоСтажу.РазмерДней*86400; ОбщегоНазначенияЗК.РазобратьРазностьДат(ДатаНачалаСобытия, ДатаСтажа, Лет, Месяцев); НачислениеБольничного.СтажЛет = Лет; НачислениеБольничного.СтажМесяцев = Месяцев; |
Т.е. мы видим, что от ДатаОтсчета отнимается размер стажа РазмерМесяцев и в итоге получается дата начала стажа не 01.09.2001, а дата начала стажа 01.09.1989. И уже далее рассчитывается разница ДатаНачалаСобытия(это дата начала болезни в больничном) - 01.09.1989 = удвоенный стаж!!!
Проблема оказывается решается просто:
в данной обработке "Расчет стажа"
заменил строку в процедуре Процедура ЗаписатьНажатие(Элемент)
НовСтр.ДатаОтсчета = Дата(ДобавитьМесяц(НачалоДня(ТекущаяДата()),-ГГ*12-ММ)-ДД*86400); //данная формула вычисляет в моем примере 17.12.2001
на строку
НовСтр.ДатаОтсчета = Дата(ДобавитьМесяц(НачалоДня(ДатаНач1),ГГ*12+ММ)+ДД*86400);//в моем примере вычисляет 17.12.2013
Т.е. ДатаОтсчета - это не дата, равная разности ТекущаяДата() и размера стажа.
ДатаОтсчета - это и есть так скажем ТекущаяДата(), если в таблице стажей заполнены периоды по текущую дату, или правильнее ДатаОтсчета это момент, когда делался расчет стажа , либо это последняя заполнненая дата окончания стажа
(ДатаНач1 - это первая дата стажа в форме обработки "Расчет стажа" и к ней добавляется размера стажа).
После такого изменения кода в данной обработке "Расчет стажа" в документах "Начисление больничного" теперь стаж считаеся корректно
3) При нажатии на конпку Записать в список выбора видов стажа берутся только не помеченные на удаление