Показаны сообщения с ярлыком Зарплата и управление персоналом. Показать все сообщения
Показаны сообщения с ярлыком Зарплата и управление персоналом. Показать все сообщения

1С 8.3 ЗУП: Тариф платежного агента меняется при записи?


Проблема: 
Тариф платежного агента сохраняется некорректно, округляется, значения после записи другие.

Решение: 
Открываем конфигуратор 1С Предприятия 8.3 для нашей базы ЗУП. Открываем конфигурацию для редактирования.
Открываем форму ФормаЭлемента в справочнике ТарифыПлатежныхАгентов
Открываем модуль.
Смотрим две последние функции СуммаПриПроцентеСПревышенияПоСумме и СуммаПоСуммеПриПроцентеСПревышения
В ней мы видим что функция возвращает результат исправленный в соответствии с предыдущим порогом, комметируем Возвраты функций.
Вместо комментированного пишем:
Возврат ТекущаяСтрока.Сумма;   - в первой функции.
Возврат ТекущаяСтрока.СуммаПриПроцентеСПревышения;  - во второй функции.

Теперь при записи тарифов суммы они не будут меняться.

1С 8.3 ЗУП: Перерасчет северной надбавки на основе уже имеющегося стажа

Северный стаж и надбавка в Зарплате и управлением персоналом - больная тема.
Проблема №1: При трудоустройстве человек имеет стаж северный 7 месяца (допустим 2 группа льготная), имеет уже надбавку 20 процентов, в итоге при принятии на работу месяц наработанный сверху 6 месяцев пропадает.
Поля ввода стажа работы на севере - не работают, для чего указываются не понятно.
Поэтому приходиться самому высчитывать правильный стаж, в данном случае 1С заполняет будущие значения очень механически, не думая об исключениях, а они есть.
Поэтому придумано такое решение:
  1. Открываем конфигурацию для редактирования с сохранением поддержки.
  2. Справочник - ФизическиеЛица - ФормаРедактированияПроцентаСевернойНадбавки 
  3. Редактируем собственно эту форму, и добавляем желанную кнопку
Верное использование алгоритма неминуемо приведет к верному результату :) 
  1. Добавляем на форму кнопку, назовем ее ПодсчетСтажа.
  2. На вкладке команды создаем Команду с названием ПодсчетСтажаНаОснове.
  3. В параметрах команды, в свойстве Действие пишем: ПодсчетСтажаНаОснове
  4. Далее переходим на вкладку Модуль, двигаемся  в самый низ редактора исполняемого кода, и добавляем процедуру ПодсчетСтажаНаОснове выполняться она будет на клиенте.
  5. Исходный код
&НаКлиенте
Процедура ПодсчетСтажаНаОснове(Команда)
   ДатаПриема = ЭтотОбъект.ДатаСтажа;
   ДатаПриема = ДобавитьМесяц(ДатаПриема, -ЭтотОбъект.МесяцевСтажа);
   ДатаПриема = ДобавитьМесяц(ДатаПриема, -ЭтотОбъект.ЛетСтажа*12);
   ДатаПриема = ДатаПриема - ЭтотОбъект.ДнейСтажа*60*60*24;
   ЭтотОбъект.ПроцентыСевернойНадбавкиФизическихЛицНаборЗаписей.Очистить();
   ПерерасчетСтажаЛич = Новый Структура;  
   ПерерасчетСтажаЛич.Вставить("Период",ДатаПриема);
   ПерерасчетСтажаЛич.Вставить("ПроцентСевернойНадбавки","0");
   ЗаполнениеТЧ = ЭтотОбъект.ПроцентыСевернойНадбавкиФизическихЛицНаборЗаписей.Добавить();
   ЗаполнитьЗначенияСвойств(ЗаполнениеТЧ,ПерерасчетСтажаЛич);
   ЗаполнитьБудущиеИзмененияСДаты(Истина);
КонецПроцедуры

Очень краткое руководство:
  1. В поле вид стажа выбираем стаж работы на севере.
  2. В поле на дату пишем дату приема. 
  3. Указываем количество лет, месяцев, и дней.
  4. Нажимаем на кнопку Подсчитать стаж исходя из общего стажа.
Осознал что как-то не грамотно названы кнопки, и процедура, т.к. мы считаем северную надбавку в прошлом и будущем, а не стаж, оставлю свою ошибку на обозрение, и впредь постараюсь не допускать таких логических и лексических ошибок.