Имя: Пароль:
1C
1С v8
Ошибка деления на ноль в типовой ЗУП при расчете среднего дневного заработка
,
0 happysan
 
15.12.15
08:40
Зарплата и Управление Персоналом, редакция 2.5 (2.5.97.1). Создаём начисление по больничному листу: (05) Отпуск по беременности и родам,  Для пособия ФСС: Отпуск по беременности и родам, Для доплаты: Доплата по больничным листам. Расчетные годы 2013 - 21014 гг. Нажимаем "рассчитать":
{ОбщийМодуль.ПроведениеРасчетов.Модуль(3872)}: Деление на 0
            ЗаработокЗаЕдиницуВремени = Окр(ИсходныеДанные.СреднийЗаработокПособий2011БезОграничений / УчитываемыхДнейВКалендарныхГодах,2);

Как быстро победить то?
1 ObjectRelation Model
 
15.12.15
08:42
отладчик
2 Масянька
 
15.12.15
08:43
(0) За 13-14 нет данных.
3 шаэс
 
15.12.15
08:43
(0) а ограничение пособия какое выбрано?
4 happysan
 
15.12.15
08:46
(3)Общее, в соответствии с Законом о бюджете ФСС
(2) Каких именно данных, я понимаю, что чего-то не хватает))
(1) "Курю" уже, но богатый стек вызовов.
5 Масянька
 
15.12.15
08:48
(4) Деление на ноль... Думай, Чапай, думай (С)
Смотри - что есть УчитываемыхДнейВКалендарныхГодах.
6 happysan
 
15.12.15
08:48
(3) Ограничение любое выбираешь, а результат - деление на ноль.
7 happysan
 
15.12.15
08:49
(5) Смотрел ранее ещё, но пока это не о чём: УчитываемыхДнейВКалендарныхГодах = ИсходныеДанные.ОтработаноДнейДляПособийПоМатеринству
8 Масянька
 
15.12.15
08:50
(7) А ОтработаноДнейДляПособийПоМатеринству чему равно?
9 шаэс
 
15.12.15
08:51
(7) доплату пока уберите - рассчитает же?
10 Feunoir
 
15.12.15
08:51
(8) Неужели 0?
11 Масянька
 
15.12.15
08:52
(10) А чего ты у меня спрашиваешь?
12 happysan
 
15.12.15
08:54
(8) Интересует концептуальный подход: по каким обычно причинам такое происходит?
13 Масянька
 
15.12.15
08:56
(12) Не знаю - концептуальный подход это или нет, но если правильно и четко все считать (в ЗУП) - проблем не возникает.
А что правильно и четко - нужно (зверям) просить не кнопочку "Сделать фсё!"? а учиться, учиться и еще раз учиться.
14 happysan
 
15.12.15
08:57
(13)Согласен)) Обычно всё правильно считается)
15 Масянька
 
15.12.15
08:58
Кстати, почему умножать на 0 можно, а делить нет? Это так, риторический, философский, детский, взрослый, математический. бухгалтерский вопрос.
16 happysan
 
15.12.15
08:59
(15) Если бы отрабатывало исключение, которое бы формулировало возможные причины, то это было бы грамотнее, а риторически-математические вопросы-это сейчас философия.
17 шаэс
 
15.12.15
09:00
(13) вообще не факт... то, что сейчас сделали с НДФЛ - за гранью понимания всех. а тут доплата не считается. Она вроде зашита, и ты никак на ее расчет повлиять не можешь. Только понять где расчет уходит не туда и изменить его
18 Масянька
 
15.12.15
09:02
(16) Это ты замахнулся... А новые релизы с исправлениями ошибок зачем будут нужны?
(17) Не зря народ пословицы придумывает :) "Хотели, как лучше, а вышло, как всегда" (С)
19 aleks_default
 
15.12.15
09:14
(15) Потому что вселенная расширяется(множится), а не делится :)
20 Масянька
 
15.12.15
09:16
(19) Бог един.
21 happysan
 
15.12.15
09:16
Что-то всех на философию потянуло)
22 Масянька
 
15.12.15
09:19
(21) Не отвлекайся. Ищи ошибку. :)
ОтработаноДнейДляПособийПоМатеринству равно 0 или нет?
23 happysan
 
15.12.15
09:23
(22) Конечно ноль, см (7). Пока не разобрался почему.
24 Масянька
 
15.12.15
09:24
(23) Смотри, как и из чего собирается ОтработаноДнейДляПособийПоМатеринству.
Судя по всему (не уверена), каких-то настроек/"галочек" не хватает.
25 happysan
 
15.12.15
09:28
(24) я только этим и занимаюсь((
26 happysan
 
15.12.15
10:03
судя по всему если ОтработаноДнейДляПособийПоМатеринству = 0, то должно быть по умолчанию 730.
27 Мимохожий Однако
 
15.12.15
10:06
(18)©Черномырдин ))
28 happysan
 
15.12.15
10:16
(27) ахахах точно, вчера как раз читал его "крылатые" фразы)))
29 Масянька
 
15.12.15
10:24
(26) А почему не срабатывает?
(27) Пословицы и поговорки тоже кто-то сначала сказал, а уж потом народ подхватил.
30 happysan
 
15.12.15
10:29
я думаю, что предохранитель не установили, я установил "заплатку" типа:
            Если УчитываемыхДнейВКалендарныхГодах = 0 Тогда  
                УчитываемыхДнейВКалендарныхГодах = 730;
            
                ЗаработокЗаЕдиницуВремени = Окр(ИсходныеДанные.СреднийЗаработокПособий2011БезОграничений / УчитываемыхДнейВКалендарныхГодах,2);
            КонецЕсли;
31 Масянька
 
15.12.15
10:34
(30) Напиши в тех. поддержку, а то и не исправят.
32 IvaneS
 
15.12.15
10:45
А календарь на 2016 и 2017 есть?
33 IvaneS
 
15.12.15
10:48
(30) А если високосный, то одного дня не хватает, а если возьмут 2012 и 2016 для расчета, то 2 дня недобора...)))
34 IvaneS
 
15.12.15
10:52
(30) Если УчитываемыхДнейВКалендарныхГодах <> 0
тогда вообще не будешь считать? может за условие расчет выставишь.
35 happysan
 
15.12.15
10:57
Я велосипед не изобретаю, там до меня везде по умолчанию 730, открой типовую конфу: ОМ "ПроведениеРасчетов" со строк3859:
        Если ИсходныеДанные.ВариантАлгоритмаРасчета = Перечисления.ВариантыАлгоритмовРасчета.БольничныйПоБеременностиВ2013годуБезОграничений
            Или ИсходныеДанные.ВариантАлгоритмаРасчета = Перечисления.ВариантыАлгоритмовРасчета.БольничныйПоБеременностиВ2013годуСОбщимОграничением
            Или ИсходныеДанные.ВариантАлгоритмаРасчета = Перечисления.ВариантыАлгоритмовРасчета.БольничныйПоБеременностиВ2013годуСОбщимОграничениемИВРазмереММОТ
            Или ИсходныеДанные.ВариантАлгоритмаРасчета = Перечисления.ВариантыАлгоритмовРасчета.БольничныйПоБеременностиВ2013годуСОграничениемВРазмереММОТ Тогда
            УчитываемыхДнейВКалендарныхГодах = ИсходныеДанные.ОтработаноДнейДляПособийПоМатеринству
        Иначе
            УчитываемыхДнейВКалендарныхГодах = 730
        КонецЕсли;
        
        // Рассчитаем заработок за день
        // для строк сторно заработок возьмем из реквизита "ДополнительныеДанные" записи начислений
        Если НЕ СтрокаДвижений.Сторно Тогда
            
            Если УчитываемыхДнейВКалендарныхГодах = 0 Тогда  
                УчитываемыхДнейВКалендарныхГодах = 730;
            
                ЗаработокЗаЕдиницуВремени = Окр(ИсходныеДанные.СреднийЗаработокПособий2011БезОграничений / УчитываемыхДнейВКалендарныхГодах,2);
            КонецЕсли;
36 Масянька
 
15.12.15
11:01
(35) Обновление было?
37 happysan
 
15.12.15
11:02
Это касается только 2013 года) в 2016 году при расчете среднего этот участок кода потеряет вообще актуальность, осталось ждать немного) ведь скоро НГ)) У меня последний релиз!
38 happysan
 
15.12.15
11:03
(36) абсолютно верно.
39 Масянька
 
15.12.15
11:03
(37) Ну, подумаешь, забыли разработчики... :(
40 IvaneS
 
15.12.15
11:16
(39) разработчики такие же люди, хотят упростить и быстрее...)))
41 Масянька
 
15.12.15
12:09
(40) Спешка нужна при ловле блох (С)
42 happysan
 
15.12.15
23:13
(33) Не успел ответить, а ты видел где-нибудь чтобы за базу для расчета среднего принималось больше двух лет? Ты же привёл пример 2012-2016 гг)))
43 happysan
 
23.12.15
10:02
откорректировал:

            Если УчитываемыхДнейВКалендарныхГодах = 0 Тогда  
                УчитываемыхДнейВКалендарныхГодах = 730;
            КонецЕсли;
            
            ЗаработокЗаЕдиницуВремени = Окр(ИсходныеДанные.СреднийЗаработокПособий2011БезОграничений / УчитываемыхДнейВКалендарныхГодах,2);
Программист всегда исправляет последнюю ошибку.