Имя: Пароль:
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) ага, сделали. Создается документ "Работа сверхурочно" по переработанным часам, который можно заполнить по данным из базы либо свои часы ввести
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн