Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:59

Отпуск по уходу за ребёнком и одновременная работа неполную рабочую неделю

Автор Андрей Федотов, 24 мая 2012, 16:35

0 Пользователей и 1 гость просматривают эту тему.

Андрей Федотов

Подскажите пожалуйста, каким образом решить следующую проблему:
1) Есть сотрудник, который ушёл в отпуск по уходу за ребёнком без оплаты на период с 01.05.2012 по 27.08.2014
Это оформлено документом "Отпуск по уходу за ребёнком" в котором установлено действие "Прекратить" для видов расчета "Оклад по часам" и "Надбавка"
2) Затем сотрудник вышел на работу 02.05.2012 в связи с чем были оформлены следующие документы:
Изменение условий отпуска по уходу за ребёнком (пособие по уходу за ребёнком до 1,5 лет) в котором установлено действие "Не изменять" для видов расчета "Оклад по часам" и "Надбавка"
Изменение условий отпуска по уходу за ребёнком (пособие по уходу за ребёнком до 3 лет) в котором установлено действие "Не изменять" для видов расчета "Оклад по часам" и "Надбавка"
Кадровое перемещение в котором установлено действие "Начать" для видов расчета "Оклад по часам" и "Надбавка"

Однако при расчёте ЗП (Начисление заработной платы) по этому сотруднику за месяц май оклад по часам и надбавка не попадают (похоже, что происходит вытеснение).
Уточните пожалуйста, как решить данную проблему?

Dethmontt

Изменить период в документе отпуск по уходу за ребёнком без оплаты - с "01.05.2012 по 27.08.2014" на "01.05.2012 по 02.05.2012"
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Андрей Федотов

      ТЗНачисления = СформироватьТаблицуНачислений(НачисленияВыборка, ОкончаниеПериодаЗаполнения, РезультатЗапроса.Выгрузить(), МассивВалютСНезаданнымКурсом);
      
      Если МассивВалютСНезаданнымКурсом.Количество() > 0 Тогда
         ТЗНачисления.Очистить();
      КонецЕсли;

      // для заполнения табличной части НДФЛ
      
      РаботникиДляРасчетаНДФЛ = Новый Соответствие;
      
      ТипОсновныхНачислений = Тип("ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций");
      
      НаборЗаписейДляПроверки = РегистрыРасчета.ОсновныеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей();
      
      НаборЗаписейДляПроверки.Отбор.Регистратор.Значение = СcылкаОбъекта;
      
      СтрокаПолейОсновныхНачислений = "Сотрудник,Физлицо,ВидРасчета,Показатель1,Показатель2,Показатель3,Показатель4,Показатель5,Показатель6,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации";
      СтрокаПолейДополнительныхНачислений = "Сотрудник,Физлицо,ВидРасчета,Показатель1,Показатель2,Показатель3,Показатель4,Показатель5,Показатель6,,КодВычета,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации";
      Для Каждого НачислениеИзТаблицыЗначений Из ТЗНачисления Цикл
         
         РаботникиДляРасчетаНДФЛ.Вставить(НачислениеИзТаблицыЗначений.Физлицо, 0);
         
         Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда
            
            Если ТипЗнч(НачислениеИзТаблицыЗначений.ВидРасчета)   = ТипОсновныхНачислений Тогда
               
               НоваяСтрока   =   Начисления.Добавить();
               ЗаполнитьЗначенияСвойств(НоваяСтрока,НачислениеИзТаблицыЗначений,СтрокаПолейОсновныхНачислений); //Сотрудник,ВидРасчета,Размер,Показатель2,Показатель3,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации
               НоваяСтрока.Авторасчет         = Истина;
               НоваяСтрока.ДатаНачалаСобытия   = ?(ЗначениеЗаполнено(НачислениеИзТаблицыЗначений.ДатаНачалаСобытия),НачислениеИзТаблицыЗначений.ДатаНачалаСобытия,НачислениеИзТаблицыЗначений.ДатаНачала);
               Если НоваяСтрока.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ПособиеПоУходуЗаРебенкомДо1_5Лет Тогда
                  НоваяСтрока.ПериодРасчетаСреднегоЗаработкаНачало = ДобавитьМесяц(НачалоМесяца(НоваяСтрока.ДатаНачалаСобытия), -12);   
                  НоваяСтрока.ПериодРасчетаСреднегоЗаработкаОкончание = НачалоМесяца(НоваяСтрока.ДатаНачалаСобытия) - 1;   
               КонецЕсли;
               
               Движение = НаборЗаписейДляПроверки.Добавить();
               
               // свойства
               Движение.ПериодРегистрации      = ПериодРегистрации;
               Движение.ВидРасчета            = НачислениеИзТаблицыЗначений.ВидРасчета;
               Движение.ПериодДействияНачало   = НачислениеИзТаблицыЗначений.ДатаНачала;
               Движение.ПериодДействияКонец   = НачислениеИзТаблицыЗначений.ДатаОкончания;
               
               // измерения
               Движение.Сотрудник            = НачислениеИзТаблицыЗначений.Сотрудник;
               Движение.Физлицо            = НачислениеИзТаблицыЗначений.Физлицо;
               Движение.Организация         = ГоловнаяОрганизация;
               
               // реквизиты поддержки графика
               Движение.ГрафикРаботы         = НачислениеИзТаблицыЗначений.ГрафикРаботы;
               Движение.ВидУчетаВремени      = ПроведениеРасчетов.ПолучитьВидУчетаВремени(НачислениеИзТаблицыЗначений.СпособРасчета, НачислениеИзТаблицыЗначений.ВидВремени, НачислениеИзТаблицыЗначений.СуммированныйУчетРабочегоВремени);
               Движение.ДатаНачалаСобытия      = НачислениеИзТаблицыЗначений.ДатаНачала;
               Движение.Авторасчет            = Истина;
               
            Иначе
               
               НоваяСтрока   =   ДополнительныеНачисления.Добавить();
               НоваяСтрока.Авторасчет      = Истина;
               ЗаполнитьЗначенияСвойств(НоваяСтрока,НачислениеИзТаблицыЗначений,СтрокаПолейДополнительныхНачислений); //Сотрудник,ВидРасчета,Размер,КодВычета,ДатаНачала,ДатаОкончания,ПодразделениеОрганизации
               
            КонецЕсли;
            
         КонецЕсли;
         
      КонецЦикла;
      
      // выполним удаление строк табличной части, которые соответствуют полностью вытесняемым видам расчета
      // проверку выполним через фактический период действия
      Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда
         
         НачатьТранзакцию();
         
         НаборЗаписейДляПроверки.ОбменДанными.Загрузка = Истина;
         НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);
         
         ЗапросПроверки = Новый Запрос(
         "ВЫБРАТЬ
         |   Начисления.Сотрудник,
         |   Начисления.ВидРасчета,
         |   Начисления.ДатаНачала,
         |   Начисления.ДатаОкончания,
         |   Начисления.НомерСтроки
         |ПОМЕСТИТЬ ВТНачисления
         |ИЗ &парамНачисления КАК Начисления
         |ИНДЕКСИРОВАТЬ ПО Сотрудник, ВидРасчета;
         |
         |ВЫБРАТЬ РАЗЛИЧНЫЕ
         |   Начисления.НомерСтроки КАК НомерСтроки
         |ИЗ
         |   РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизации
         |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия(Регистратор = &парамСсылка) КАК ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия
         |      ПО ОсновныеНачисленияРаботниковОрганизации.НомерСтроки = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.НомерСтроки
         |         И ОсновныеНачисленияРаботниковОрганизации.Регистратор = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор
         |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления
         |      ПО    (Начисления.Сотрудник = ОсновныеНачисленияРаботниковОрганизации.Сотрудник)
         |         И (Начисления.ВидРасчета = ОсновныеНачисленияРаботниковОрганизации.ВидРасчета)
         |         И (Начисления.ДатаНачала = ОсновныеНачисленияРаботниковОрганизации.ПериодДействияНачало)
         |         И (КОНЕЦПЕРИОДА(Начисления.ДатаОкончания, День) = КОНЕЦПЕРИОДА(ОсновныеНачисленияРаботниковОрганизации.ПериодДействияКонец, День))
         |ГДЕ
         |   ОсновныеНачисленияРаботниковОрганизации.Регистратор = &парамСсылка
         |   И ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор ЕСТЬ NULL
         |
         |УПОРЯДОЧИТЬ ПО
         |   НомерСтроки УБЫВ");
         ЗапросПроверки.УстановитьПараметр("парамСсылка", СcылкаОбъекта);
         ЗапросПроверки.УстановитьПараметр("парамНачисления", Начисления.Выгрузить());
         СтрокиКУдалению = ЗапросПроверки.Выполнить().Выгрузить();
         //Возврат Ложь;
         // удалим проверочный набор записей
         НаборЗаписейДляПроверки.Очистить();
         НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);
         
         ЗафиксироватьТранзакцию();
         
         Для Каждого СтрокаТЗ Из СтрокиКУдалению Цикл
            Начисления.Удалить(СтрокаТЗ.НомерСтроки - 1);
         КонецЦикла;


Вот этот запрос мне удаляет мои начисления оклада и надбавки

Андрей Федотов

даже если я изменяю дату документа "Отпуск по уходу за ребёнком без оплаты"

Андрей Федотов

Это происходит в 12 релизе УПП.
Пробовал изменять как дату документа "Отпуск", так и его период. Также делал документ "Возврат сотрудника на работу", а далее в кадровом перемещении указывал действующие суммы.
При формировании документа в ТЗНачисления (ТаблицаЗначений) данные попадают, но потом очищаются при помощи вышеопределённого запроса. Похоже что происходит вытеснение ЗП и оклада.Но почему?
Помогите пожалуйста

Zavs

12 релиза УПП у меня нет, но в 22 релизе УПП в журнале документов "Отпуска по уходу за ребенком" по кнопке "Добавить" выпадает список, в котором можно выбрать документ "Изменение условий оплаты отпуска по уходу за ребенком".

"Документом «Изменение условий оплаты отпуска по уходу за ребенком» регистрируется изменение условий выплаты пособий в период отпуска по уходу за ребенком до достижения им 1,5 или 3-х лет или досрочное прекращение отпуска."

Может этот документ поможет?

Андрей Федотов

Это делали. Регистрировали этим документом начало выплаты оклада и надбавки.
Всё равно происходит вытеснение

Zavs

Воспроизвел описанную ситуацию в УПП 1.3.22.1.

Оформил отпуск по уходу за ребенком до 3-х лет с 01.05.2012 по 27.08.2014. Прекратил оклад.

Ввел документ «Изменение условий оплаты отпуска по уходу за ребенком» с 02.05.2012 прекратить отпуск и начать оклад.

В документ "Начисление зарплаты..." попадает строка "Отпуск по уходу за ребенком без оплаты" за 01.05.2012 и оклад с 02.05.2012 по 31.05.2012.

Похоже дело в Вашем релизе. Попробуйте сравнить алгоритмы в вашем и, например, 22-м или последнем релизе УПП. Лучше всего произвести обновление до последнего релиза, но раз сейчас 12-й, то похоже эта рекомендация неосуществима.

Андрей Федотов

Вы не так поняли.
При вводе документа "Отпуск по уходу за ребёнком без оплаты" начисляются пособия на ребёнка до 1,5 лет и до 3 лет.
Задача в следующем: чтобы за 01.05.2012 ей был выплачен отпуск по уходу за ребёнком, а с 02.05.2012 началась выплата не только зп и оклада, но и остались пособия на ребёнка до 1,5 лет и до 3 лет.
Как данную ситуацию реализовать

Zavs

Теперь понятно. :)

Это совсем просто. Нужно ввести документ "Ввод сведений о плановых начислениях сотрудников организации" от 02.05.2012.

В списке сотрудников добавляете вашу сотрудницу. В таблице плановых начислений появляются декретные начисления, их мы не трогаем, а добавляем две строки с окладом и надбавкой, с действием начать и датой 02.05.2012. Всё, можно формировать документ "Начисление зарплаты..."

Успехов.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск