Календарные дни ЗиК рел.273
21.08.2007
14:59
#1
У меня небольшая загвоздка. В документе начисление отпуска, когда расчетчик заполняет таблицу, в октябре месяце 2006г выводятся 30.8 календарных дней. Расчетчик говорит, что больше чем 29.4 не может быть. Причем только у одного сотрудника, у остальных все в порядке. С чем это может быть связано?
21.08.2007
17:44
#3
График работы у сотрудника не указан. Система оплаты повременно-премиальная по окладу согласно табелю (по часам). Были виды оплаты по табелю, совмещение профессий, ежемесячная премия.
Плиз, подайте хотя бы идею, почему так может быть.
Плиз, подайте хотя бы идею, почему так может быть.
22.08.2007
09:11
#4
Мне кажется - много отработанных дней в сумме по всем видам оплат, больше чем рабочих дней в месяце. И в то же время месяц не считается как отработанный полностью (29,4).
Если 22 дня умножить на 1,4, получится 30,8. Внимательно изучите все виды начислений с часами.
И потом, можно просто изменить коэффициент в документе на 29,4, если считаем что месяц отработан полностью.
Средний пересчитается.
Если 22 дня умножить на 1,4, получится 30,8. Внимательно изучите все виды начислений с часами.
И потом, можно просто изменить коэффициент в документе на 29,4, если считаем что месяц отработан полностью.
Средний пересчитается.
22.08.2007
09:18
#5
Я посмотрела журнал расчетов, все дополнительные виды начислений идут без часов, только вид оплата по табелю с часами 176ч. Причем, в июле месяце этого года тоже 22 рабочих дня. В журнале основной вид оплата по табелю также 176ч. плюс доплата за совмещение 80ч. Но таких проблем нет, календарных дней 29.4.
22.08.2007
09:48
#6
Надо смотреть в отладчике как собираются отработанные дни.
Очень сложно угадать, если не видишь ситуацию своими глазами.
Очень сложно угадать, если не видишь ситуацию своими глазами.
22.08.2007
17:08
#8
Я нашла документ Начисление отпуска. Он был сделан в начале сентября, период отпуска захватил дату 1 октября, поэтому прога при проверке увидела, что месяц рабочий не полный и сделала пересчет на 22 дня, которые отработал человек в этом месяце, (22*1.4) поэтому получилось 30.8 дней. Как можно в дальнейшем избежать этого, чтобы бухгалтер не упустил такую ситуацию.
Еще, т.к. я начала только работать с ЗиК, подскажите, как будет правильно исправить начисление отпуска прошлого периода.
Еще, т.к. я начала только работать с ЗиК, подскажите, как будет правильно исправить начисление отпуска прошлого периода.
23.08.2007
10:18
#9
Чтобы бухгалтер не пропустил такую ошибку, надо исправить конфигурацию (напишите на Hotline 1С, если у Вас это сделать некому).
> Еще, т.к. я начала только работать с ЗиК, подскажите, как будет правильно исправить начисление отпуска прошлого периода.
Найдите документ отпуска и нажмите в нем кнопку "Исправить", появится документ-исправление, где Вы можете отредактировать все реквизиты, провести его и рассчитать. В ЖР отсторнируются записи первичного документа и появятся записи документа-исправления. Первичный документ просто закройте.
> Еще, т.к. я начала только работать с ЗиК, подскажите, как будет правильно исправить начисление отпуска прошлого периода.
Найдите документ отпуска и нажмите в нем кнопку "Исправить", появится документ-исправление, где Вы можете отредактировать все реквизиты, провести его и рассчитать. В ЖР отсторнируются записи первичного документа и появятся записи документа-исправления. Первичный документ просто закройте.
05.09.2007
16:11
#10
"Hotline 1С на вопрос об ошибке ответила:
>Не все положения законодательства можно автоматизировать.
Данное поведение менять не планируется.
Предлагаю такое решение.
В глобальнике 7.70.275 в функции глЗаполнитьДанныеСреднегоЗаработкаОтпуска найти строки
Иначе //ПорядокРасчетаСреднегоЗаработка = 2
ДнейПоШестидневке = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, Шестидневка, ГрафикРаботы);
ДнейКалендарных = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, КалендарныеДни, ГрафикРаботы);
и заменить на
Иначе //ПорядокРасчетаСреднегоЗаработка = 2
Если ДнейОтработано <> глНормаДнейЧасовЗаПериод(Сотрудник,НачалоОчередногоПериода, ОчереднаяДата,"Дней") Тогда
ДнейПоШестидневке = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, Шестидневка, );
ДнейКалендарных = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, КалендарныеДни, );
Иначе
ДнейПоШестидневке = Шестидневка.Дней(НачалоОчередногоПериода, ОчереднаяДата);
ДнейКалендарных = 29.4;
КонецЕсли;
А также изменить функцию:
Функция ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней[], ДатаНачала, ДатаОкончания, КалендарьОтпуска, ГрафикРаботы)
День = 0;
ДнейДляОтп = 0;
Пятидневка = СоздатьОбъект("Календарь.Пятидневка");
ИндНачала = НомерДняГода(ДатаНачала);
ИндОкончания = НомерДняГода(ДатаОкончания);
инд = ИндНачала - 1;
Пока инд < ИндОкончания Цикл
инд = инд + 1;
День = МассивДней[инд];
Если День = "Х" тогда
Продолжить;
КонецЕсли;
ДатаДня = ДатаНачала + (инд - ИндНачала);
ДатаНачалаОтрезка = ДатаДня;
Пока (День <> 0) и (инд + 1 <= ИндОкончания) Цикл
инд = инд + 1;
День = МассивДней[инд];
ДатаДня = ДатаНачала + (инд - ИндНачала);
КонецЦикла;
ДатаОкончанияОтрезка = ?(День <> 0, ДатаДня, ДатаДня-1);
Если ДатаНачалаОтрезка <= ДатаОкончанияОтрезка Тогда
ДнейДляОтп = ДнейДляОтп + Пятидневка.Дней(ДатаНачалаОтрезка, ДатаОкончанияОтрезка);
КонецЕсли;
КонецЦикла;
Если КалендарьОтпуска = Календари.Шестидневка тогда
ДнейДляОтп = ДнейДляОтп * 1.2;
Иначе // иначе по календарным дням
ДнейДляОтп = ДнейДляОтп * 1.4;
КонецЕсли;
Возврат ДнейДляОтп;
КонецФункции // ПолучитьКоличествоДнейОтпускаПосле102006
"
>Не все положения законодательства можно автоматизировать.
Данное поведение менять не планируется.
Предлагаю такое решение.
В глобальнике 7.70.275 в функции глЗаполнитьДанныеСреднегоЗаработкаОтпуска найти строки
Иначе //ПорядокРасчетаСреднегоЗаработка = 2
ДнейПоШестидневке = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, Шестидневка, ГрафикРаботы);
ДнейКалендарных = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, КалендарныеДни, ГрафикРаботы);
и заменить на
Иначе //ПорядокРасчетаСреднегоЗаработка = 2
Если ДнейОтработано <> глНормаДнейЧасовЗаПериод(Сотрудник,НачалоОчередногоПериода, ОчереднаяДата,"Дней") Тогда
ДнейПоШестидневке = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, Шестидневка, );
ДнейКалендарных = ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней, НачалоОчередногоПериода, ОчереднаяДата, КалендарныеДни, );
Иначе
ДнейПоШестидневке = Шестидневка.Дней(НачалоОчередногоПериода, ОчереднаяДата);
ДнейКалендарных = 29.4;
КонецЕсли;
А также изменить функцию:
Функция ПолучитьКоличествоДнейОтпускаПосле102006(МассивДней[], ДатаНачала, ДатаОкончания, КалендарьОтпуска, ГрафикРаботы)
День = 0;
ДнейДляОтп = 0;
Пятидневка = СоздатьОбъект("Календарь.Пятидневка");
ИндНачала = НомерДняГода(ДатаНачала);
ИндОкончания = НомерДняГода(ДатаОкончания);
инд = ИндНачала - 1;
Пока инд < ИндОкончания Цикл
инд = инд + 1;
День = МассивДней[инд];
Если День = "Х" тогда
Продолжить;
КонецЕсли;
ДатаДня = ДатаНачала + (инд - ИндНачала);
ДатаНачалаОтрезка = ДатаДня;
Пока (День <> 0) и (инд + 1 <= ИндОкончания) Цикл
инд = инд + 1;
День = МассивДней[инд];
ДатаДня = ДатаНачала + (инд - ИндНачала);
КонецЦикла;
ДатаОкончанияОтрезка = ?(День <> 0, ДатаДня, ДатаДня-1);
Если ДатаНачалаОтрезка <= ДатаОкончанияОтрезка Тогда
ДнейДляОтп = ДнейДляОтп + Пятидневка.Дней(ДатаНачалаОтрезка, ДатаОкончанияОтрезка);
КонецЕсли;
КонецЦикла;
Если КалендарьОтпуска = Календари.Шестидневка тогда
ДнейДляОтп = ДнейДляОтп * 1.2;
Иначе // иначе по календарным дням
ДнейДляОтп = ДнейДляОтп * 1.4;
КонецЕсли;
Возврат ДнейДляОтп;
КонецФункции // ПолучитьКоличествоДнейОтпускаПосле102006
"
Читают тему
(гостей: 1)