Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Прочее]

1С ЗиК 7.7 -- неиспользованные дни отпуска

Leja
читатель
офлайн
Дата регистрации: 29.07.2009
Сообщений: 3
Пост №1
 
29.07.2009 10:10

Добрый день!<br>Подскажите, пожалуйста, ведется ли в программе автоматический учет количества неиспользованных дней отпуска у сотрудника? Если нет, то как можно эти дни посчитать?

Denvik
читатель
офлайн
Дата регистрации: 16.03.2005
Сообщений: 69
Пост №2
 
29.07.2009 13:27

"Расчет дней компенсации за неиспользованный отпуск<br>в приказе об увольнении (ЗиК)<br><br>Процедура для автоматического заполнения поля<br>"дни компенсации" в документе "Приказ об увольнении"<br>типовой конфигурации "Зарплата и Кадры. Редакция 2.3"<br>(проверено в релизе 283) .<br><br>В новой версии:<br>- учитываются исправления, сторнирования и<br> пересечения документов-отклонений;<br>- учитываются все периоды, исключаемые из стажа для<br> подсчета отпуска по статье 121 ТК (прогулы, отпуска<br> по уходу за ребенком, отпуска за свой счет).<br><br>Инструкция:<br>1. Вставить текст процедуры СчитатьДниКомпенсации()<br> в модуль формы документа ПриказОбУвольнении.<br>2. Вставить вызов процедуры СчитатьДниКомпенсации() в:<br> - текст процедуры ВводНового() модуля формы;<br> - реквизит диалога Сотрудник;<br> - реквизит диалога ДатаУвольнения.<br><br>Antia<br><br><br><br>//            <br>// Нормативная база.<br>// Трудовой Кодекс РФ (от 30.12.2001 № 197-ФЗ) (далее - ТК)<br>// Правила об очередных и дополнительных отпусках (утв. Народным Комиссариатом Труда СССР<br>// 30.04.1930 № 169) (далее - Правила)<br>Процедура СчитатьДниКомпенсации()<br><br> ПриказОПриеме = глПриказПоСотруднику(Сотрудник, ДатаУвольнения, "ПриказОПриемеНаРаботу");<br> Если ПустоеЗначение(ПриказОПриеме) = 0 Тогда<br> ДатаПриема = ПриказОПриеме.ДатаПриема;<br> Иначе       <br> Компенсация = 1;<br> ДнейКомпенсацииОтпускавФорме = 0; <br> Возврат;<br> КонецЕсли;<br>                        <br> ДнейПрогулов = 0;<br> ДнейОтпускаПоУходу = 0;<br> ДнейОтпускаЗаСвойСчет = 0;<br> ДнейОтпуска7 = 0;<br> ДнейОтпуска6 = 0;<br> Календарь7 = СоздатьОбъект("Календарь.ДляРасчетаОтпускаПоКалендДням");<br> Календарь6 = СоздатьОбъект("Календарь.Шестидневка");       <br> ОтпускЗаСвойСчет = СоздатьОбъект("ТаблицаЗначений"); <br> ОтпускЗаСвойСчет.НоваяКолонка("Год","Число");<br> ОтпускЗаСвойСчет.НоваяКолонка("Дни","Число");<br>                                            <br> // Все нужные для расчета дни собираем по данным ЖЗ с учетом реквизита Сторно. Это<br> // позволит учесть исправления, сторнирования и пересечения документов-отклонений.<br> ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");<br> ЖЗ.ВыбратьЗаписиПоОбъекту(Сотрудник, ЖЗ.НачалоПериодаПоДате(ДатаПриема), ЖЗ.КонецПериодаПоДате(ДатаУвольнения));<br> Пока ЖЗ.ПолучитьЗапись() = 1 Цикл            <br> <br> Если ЖЗ.ВидРасч = ВидРасчета.ОтпускОчередной Тогда<br> Если ЖЗ.Документ.ТипРасчетаОтпуска = Перечисление.ТипРасчетаОтпуска.ПоКалендарнымДням Тогда<br> ДнейОтпуска7 = ДнейОтпуска7 + Календарь7.Дней(ЖЗ.ДатаНачала, ЖЗ.ДатаОкончания) * ?(ЖЗ.Сторно = 1, -1, 1);<br> ИначеЕсли ЖЗ.Документ.ТипРасчетаОтпуска = Перечисление.ТипРасчетаОтпуска.ПоШестидневке Тогда<br> ДнейОтпуска6 = ДнейОтпуска6 + Календарь6.Дней(ЖЗ.ДатаНачала, ЖЗ.ДатаОкончания) * ?(ЖЗ.Сторно = 1, -1, 1);<br> КонецЕсли;<br> <br> ИначеЕсли ЖЗ.ВидРасч = ВидРасчета.Невыход Тогда<br> Если ЖЗ.Документ.ПричинаОтсутствия = Перечисление.ПричинаОтсутствия.Прогул Тогда<br> ДнейПрогулов = ДнейПрогулов + (ЖЗ.ДатаОкончания - ЖЗ.ДатаНачала + 1) * ?(ЖЗ.Сторно = 1, -1, 1);<br> КонецЕсли;<br> <br> // По старой редакции ТК из отпускного стажа исключались отпуска за свой счет<br> // продолжительностью более 7 дней (в терминологии ЗиК - "долгосрочные"). Теперь это<br> // правило не действует и остается его только закомментировать...<br> //ИначеЕсли ЖЗ.ВидРасч = ВидРасчета.ОтпускЗаСвойСчетДолгосрочный Тогда<br> // ДнейОтпускаЗаСвойСчет = ДнейОтпускаЗаСвойСчет + (ЖЗ.ДатаОкончания - ЖЗ.ДатаНачала + 1) * ?(ЖЗ.Сторно = 1, -1, 1);<br> <br> // Для каждого отпуска за свой счет определяем рабочий год, к которому он относятся,<br> // и сохраняем в ТЗ для дальнейшей обработки<br> ИначеЕсли (ЖЗ.ВидРасч = ВидРасчета.ОтпускЗаСвойСчетДолгосрочный) или<br> (ЖЗ.ВидРасч = ВидРасчета.ОтпускЗаСвойСчетКраткосрочный) Тогда<br> <br> РабочийГод = 0;<br> Пока ДобавитьМесяц(ДатаПриема, РабочийГод * 12) - 1 < ЖЗ.ДатаНачала Цикл <br> РабочийГод = РабочийГод + 1; <br> КонецЦикла;       <br> ДатаНачалаРабочегоГода = ДобавитьМесяц(ДатаПриема, РабочийГод * 12) - 1;<br><br> ОтпускЗаСвойСчет.НоваяСтрока(); <br> ОтпускЗаСвойСчет.Год = РабочийГод;<br> ОтпускЗаСвойСчет.Дни = (Мин(ДатаНачалаРабочегоГода, ЖЗ.ДатаОкончания) - ЖЗ.ДатаНачала + 1) * ?(ЖЗ.Сторно = 1, -1, 1);<br> Если ЖЗ.ДатаОкончания > ДатаНачалаРабочегоГода Тогда<br> ОтпускЗаСвойСчет.НоваяСтрока(); <br> ОтпускЗаСвойСчет.Год = РабочийГод + 1;<br> ОтпускЗаСвойСчет.Дни = (ЖЗ.ДатаОкончания - ДатаНачалаРабочегоГода) * ?(ЖЗ.Сторно = 1, -1, 1);<br> КонецЕсли; <br><br> КонецЕсли; <br> <br> КонецЦикла; <br> <br> // Определяем за каждый рабочий год число дней отпуска за свой счет. Из отпускного стажа<br> // будут исключены дни свыше 14 за рабочий год<br> // (ТК, ст.121 в ред. от 22.07.2008)<br> ОтпускЗаСвойСчет.Свернуть("Год","Дни");<br> ОтпускЗаСвойСчет.ВыбратьСтроки();<br> Пока ОтпускЗаСвойСчет.ПолучитьСтроку() = 1 Цикл <br> Если ОтпускЗаСвойСчет.Дни > 14 Тогда             <br> // В редакции ТК от 30.06.2006 отпуск за свой счет, превышающий 14 дней,<br> // полностью исключался из отпускного стажа. Устарело, закомментируем.<br> //ДнейОтпускаЗаСвойСчет = ДнейОтпускаЗаСвойСчет + ОтпускЗаСвойСчет.Дни;<br> ДнейОтпускаЗаСвойСчет = ДнейОтпускаЗаСвойСчет + ОтпускЗаСвойСчет.Дни - 14;<br> КонецЕсли; <br> КонецЦикла;       <br>        <br> // Отпуска по уходу за ребенком определяем по СостояниюФизлица<br> СостояниеФизлица = СоздатьОбъект("Периодический");<br> СостояниеФизлица.ИспользоватьОбъект("СостояниеФизлица", Сотрудник);<br> СостояниеФизлица.ВыбратьЗначения(ДатаПриема, ДатаУвольнения + 1);<br> ПредыдущаяДата = ПолучитьПустоеЗначение("Дата");<br> Пока СостояниеФизлица.ПолучитьЗначение() = 1 Цикл <br> Если ПустоеЗначение(ПредыдущаяДата) = 0 Тогда <br> ДнейОтпускаПоУходу = ДнейОтпускаПоУходу + СостояниеФизлица.ДатаЗнач - ПредыдущаяДата;<br> КонецЕсли; <br> Если (СостояниеФизлица.Значение = Перечисление.СостояниеФизлица.ВременноНеРаботает) и<br> (СостояниеФизлица.ТекущийДокумент().Вид() = "ОтпускПоУходуЗаРебенком") Тогда <br> ПредыдущаяДата = СостояниеФизлица.ДатаЗнач;<br> Иначе<br> ПредыдущаяДата = ПолучитьПустоеЗначение("Дата");<br> КонецЕсли; <br> КонецЦикла; <br><br> // Исключаем из стажа для подсчета отпуска прогулы, отпуска по уходу за ребенком,<br> // отпуска за свой счет (ТК, ст.121)<br> ДатаПриема = ДатаПриема + ДнейПрогулов + ДнейОтпускаПоУходу + ДнейОтпускаЗаСвойСчет;<br>                   <br> // Определяем количество полностью отработанных месяцев<br> Месяцев = 0;<br> Пока ДобавитьМесяц(ДатаПриема, Месяцев) <= ДатаУвольнения + 1 Цикл <br> Месяцев = Месяцев + 1; <br> КонецЦикла;<br> Месяцев = Месяцев - 1; <br> <br> // Если работник отработал 11 месяцев, то отпуск предоставляется за полный год <br> // (Правила, п.28)<br> Если Месяцев % 12 = 11 Тогда <br> Месяцев = Месяцев + 1; <br> КонецЕсли;       <br> <br> // Если оставшиеся сверх полных месяцев дни составляют не менее половины месяца,<br> // то округляем их до полного месяца (Правила, п.35). Половиной месяца считаем 15 дней. <br> Если ДатаУвольнения - ДобавитьМесяц(ДатаПриема,Месяцев) + 1 >= 15 Тогда <br> Месяцев = Месяцев + 1; <br> КонецЕсли;                   <br>              <br> // Вычитаем использованные ранее дни отпуска<br> ДнейКомпенсацииОтпуска = Месяцев*28/12 - ДнейОтпуска7 - ДнейОтпуска6*28/24;       <br> <br> Если ДнейКомпенсацииОтпуска < 0 тогда<br> Компенсация = 2;<br> Иначе <br> Компенсация = 1;<br> КонецЕсли;<br> ДнейКомпенсацииОтпускавФорме = ДнейКомпенсацииОтпуска * ?(Компенсация > 1, -1, 1); <br> <br>КонецПроцедуры // СчитатьДниКомпенсации<br>//<br><br>"

BelAS
читатель
офлайн
Дата регистрации: 11.12.2002
Сообщений: 542
Пост №3
 
23.09.2009 00:18

Спасибо.<br>Помог найти несколько ошибок в "ручных" расчетах.

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Учет, налогообложение, автоматизация
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация