Имя: Пароль:
1C
1С v8
ЗУП Кз, оплата сверхурочных вторым видом расчета
0 nola
 
10.09.15
13:51
Добрый вечер. ЗУП для Казахстана, 2.0.10.7. Для сотрудников необходимо создать начисления для сверхурочных, рассчитываемое от обратного. При этом обычное предопределенное Оплата сверхурочных, заданное в РС КоэффициентыОплатыСверхнормативныхРабот, трогать нельзя - по нему начисляются обычные "прямые" сверхурочные.
Я сделала новый вид времени, к нему - новый ВР. Сотрудникам установили его плановым начислением. Теперь если в табеле есть часы по новому виду - сверхурочные рассчитаются корректно, если нет - рассчитаются по часам явки, что, конечно, неверно.
В коде ПроведениеРасчетов функция ОплачиваемоеВремя:
Функция ОплачиваемоеВремя(ИсходныеДанные) Экспорт
    
    ОтработаноВремениОсновное = ?(ИсходныеДанные.ОтработаноВремениОсновное = NULL, 0, ИсходныеДанные.ОтработаноВремениОсновное);

    Если ИсходныеДанные.ОшибкаВводаОтработанногоВремени Тогда
        Возврат 0;
    ИначеЕсли ИсходныеДанные.ЕстьОтработаноДнейПоТабелю = 0 Тогда
        Если ИсходныеДанные.ВидУчетаВремени = Перечисления.ВидыУчетаВремени.ПоДням Тогда
            Возврат ОтработаноВремениОсновное;
        Иначе
            Возврат ОтработаноВремениОсновное - ?(ИсходныеДанные.ЕстьОтработаноЧасовПоТабелюОтклонение <> 0, ИсходныеДанные.ОтработаноЧасовПоТабелюОтклонение, 0);
        КонецЕсли;
    Иначе
        Если ИсходныеДанные.ВидУчетаВремени = Перечисления.ВидыУчетаВремени.ПоДням Тогда
            Возврат ИсходныеДанные.ОтработаноДнейПоТабелю;
            //Если ИсходныеДанные.ОтработаноДнейПоТабелю = 0 Тогда
            //    Возврат ОтработаноВремениОсновное;
            //Иначе
            //    Возврат ИсходныеДанные.ОтработаноДнейПоТабелю;
            //КонецЕсли;
        Иначе
            Возврат ИсходныеДанные.ОтработаноЧасовПоТабелю;
            //Если ИсходныеДанные.ОтработаноЧасовПоТабелю = 0 Тогда
            //    Возврат ОтработаноВремениОсновное - ИсходныеДанные.ОтработаноЧасовПоТабелюОтклонение;
            //Иначе
            //    Возврат ИсходныеДанные.ОтработаноЧасовПоТабелю;
            //КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецФункции // ОплачиваемоеВремя()

Запрос по табелю возвращает ЕстьОтработаноДнейПоТабелю = 0 по новой сверхурочке (ну не было переработок), и эта функция возвращает число часов явки - 176.
Понимаю, что настраивать надо было как-то по-другому, но как??? я в тупике.
1 nola
 
10.09.15
13:55
насколько я понимаю, проблема уже поднималась (v8: основные начисления организации ЗУП 8,2), но как ее решить/обойти?
2 nola
 
10.09.15
14:04
и вот еще какое условие в РассчитатьЗаписьРегистраРасчета():
            Если ТипЗнч(СтрокаДвижений.Регистратор) = Тип("ДокументСсылка.НачислениеЗарплатыРаботникамОрганизаций") Тогда
                КоличествоЧасов = ОплачиваемоеВремя(ИсходныеДанные);
                ОшибкаВводаОтработанногоВремени = ИсходныеДанные.ОшибкаВводаОтработанногоВремени;
            Иначе
                Если СтрокаДвижений.ВидРасчета.ЗачетОтработанногоВремени Тогда
                    КоличествоЧасов    = ?(СтрокаДвижений.ОтработаноЧасов < 0, СтрокаДвижений.ОтработаноЧасов * - 1, СтрокаДвижений.ОтработаноЧасов);
                ИначеЕсли СтрокаДвижений.ВидРасчета.УчетОтработанногоВремени Тогда
                    КоличествоЧасов    = ?(СтрокаДвижений.УчитываемыеЧасы < 0, СтрокаДвижений.УчитываемыеЧасы * - 1, СтрокаДвижений.УчитываемыеЧасы);
                Иначе
                    КоличествоЧасов = 0;
                КонецЕсли;
                ОшибкаВводаОтработанногоВремени = Ложь;
            КонецЕсли;
3 aka_kumena
 
10.09.15
14:05
>> Теперь если в табеле есть часы по новому виду - >> сверхурочные рассчитаются корректно, если нет - рассчитаются по часам явки, что, конечно, неверно.

это верно, для аналогов зуп 2.5 России показателей ВремяВДнях и ВремяВЧасах
4 aka_kumena
 
10.09.15
14:06
можно попробовать сделать формулу так
ОтработаноВремяВЧасах - ВремяВЧасах, будут часы переработки
5 nola
 
10.09.15
14:09
т.е. это ошибка в коде?
6 nola
 
10.09.15
14:09
не то чтобы я верю в непогрешимость типовых, но ведь эта функция в зупе - одна из первых по числу вызовов при расчете...
7 aka_kumena
 
10.09.15
14:10
да нет никакой ошибки.
это задуманное поведение, когда часы по графику возвращаются, если нет в табеле. работа по приоритетам.
8 aka_kumena
 
10.09.15
14:10
+7 хотите иначе - надо программировать
9 nola
 
10.09.15
14:13
(4) - вы имеете в виду формулу самого ВР?
10 aka_kumena
 
10.09.15
14:13
(9) ну да
11 aka_kumena
 
10.09.15
14:14
я правда до конца не вдумывался в вашу особенность второй оплаты, может и не подойдет.
12 nola
 
10.09.15
14:15
для Казахстана, видимо, не предусмотрен показатель ОтработаноВремяВЧасах. У нас есть только ВремяВЧасах и НормаВремениВЧасах((
13 aka_kumena
 
10.09.15
14:19
пардон, он называется чуть не так - "ОтработаноВремениВЧасах".
ну если нет - то придется самим программировать тогда свой.
14 nola
 
10.09.15
14:20
хотела я не мараться...
15 nola
 
10.09.15
14:20
ну просто странно, неужели прям настолько не типовая ситуация
16 aka_kumena
 
10.09.15
14:28
(15) да не, вы далеко не первая на моей памяти, кто возмущается нормой по графику, когда часов в табеле нет.

в нашей ЗУП 3.0 уже кажется сделали иначе.
17 Пеппи
 
10.09.15
15:12
(16) ага, сделали. Создается документ "Работа сверхурочно" по переработанным часам, который можно заполнить по данным из базы либо свои часы ввести