Календарные дни ЗиК рел.273

Новая тема
У меня небольшая загвоздка. В документе начисление отпуска, когда расчетчик заполняет таблицу, в октябре месяце 2006г выводятся 30.8 календарных дней. Расчетчик говорит, что больше чем 29.4 не может быть. Причем только у одного сотрудника, у остальных все в порядке. С чем это может быть связано?
Какие виды оплат проходят в октябре, по какому графику работает человек?
График работы у сотрудника не указан. Система оплаты повременно-премиальная по окладу согласно табелю (по часам). Были виды оплаты по табелю, совмещение профессий, ежемесячная премия.
Плиз, подайте хотя бы идею, почему так может быть.
Мне кажется - много отработанных дней в сумме по всем видам оплат, больше чем рабочих дней в месяце. И в то же время месяц не считается как отработанный полностью (29,4).
Если 22 дня умножить на 1,4, получится 30,8. Внимательно изучите все виды начислений с часами.
И потом, можно просто изменить коэффициент в документе на 29,4, если считаем что месяц отработан полностью.
Средний пересчитается.
Я посмотрела журнал расчетов, все дополнительные виды начислений идут без часов, только вид оплата по табелю с часами 176ч. Причем, в июле месяце этого года тоже 22 рабочих дня. В журнале основной вид оплата по табелю также 176ч. плюс доплата за совмещение 80ч. Но таких проблем нет, календарных дней 29.4.
Надо смотреть в отладчике как собираются отработанные дни.
Очень сложно угадать, если не видишь ситуацию своими глазами.
См. обсуждение http://www.buh.ru/forum/thread.jsp?id=401115
Я нашла документ Начисление отпуска. Он был сделан в начале сентября, период отпуска захватил дату 1 октября, поэтому прога при проверке увидела, что месяц рабочий не полный и сделала пересчет на 22 дня, которые отработал человек в этом месяце, (22*1.4) поэтому получилось 30.8 дней. Как можно в дальнейшем избежать этого, чтобы бухгалтер не упустил такую ситуацию.
Еще, т.к. я начала только работать с ЗиК, подскажите, как будет правильно исправить начисление отпуска прошлого периода.
Чтобы бухгалтер не пропустил такую ошибку, надо исправить конфигурацию (напишите на Hotline 1С, если у Вас это сделать некому).

> Еще, т.к. я начала только работать с ЗиК, подскажите, как будет правильно исправить начисление отпуска прошлого периода.

Найдите документ отпуска и нажмите в нем кнопку "Исправить", появится документ-исправление, где Вы можете отредактировать все реквизиты, провести его и рассчитать. В ЖР отсторнируются записи первичного документа и появятся записи документа-исправления. Первичный документ просто закройте.
"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
"
Читают тему
(гостей: 1)

Быстрый переход