При оформлении документов увольнение, командировка, начисление зп, по сотрудникам возникла ошибка: Деление на 0.
Начали работать в базе с 01.01.2021. Данные по сотрудникам введены через Начальную штатную расстановку.
В базе несколько юрлиц. По каким-то сотрудникам документы увольнение и командировки уже оформлены, ошибок не возникло. По каким-то появились.
Производственный календарь заполнен, графики работы сотрудников заполнены.
Смотрю сейчас на конкретный пример с сотрудником, пытаюсь найти закономерность ошибки.
По Сотруднику начальные данные в штатной расстановке Оплата по окладу (по часам). Кадровых движений не было. Введен документ Табель. Необходимо провести увольнение, но возникает ошибка деления на ноль.
Формула начисления: Оклад * ВремяВЧасах / НормаЧасов
Я думаю, может какие-то первоначальные настройки в организациях не были сделаны, либо в начислении ошибка.
Пожалуйста помогите разобраться.
(1) По данному графику, который я здесь уже привела, был благополучно уволен другой сотрудник, но из другой организации и с другим видом оплаты.
Ребят, может посмотреть в сторону настроек начисления и организации? Что там можно проверить?
(25) Взгляните еще, на всякий случай, Кадры-Сотрудники-Начисления и удержания-История, вдруг кто-то ввел документ Кадрового перевода с датой перед Увольнением, где выбран другой график. Тут вроде, кроме графиков, ничего не должно быть, явно НормаЧасов=0. Вдруг) Дата увольнения ведь Январь 2021?
Простите, вижу, что дата увольнения 12.01.2021....
(25) может стоит просмотреть непосредственно регистры через функции тех специалиста? Тот же РС "График работы сотрудников" с отбором по этому сотруднику.
очевидно что по данному сотруднику НормаЧасов=0 , а на 0 делить нельзя. Это сообщение и выходит.
учет раб.времени для разных подразделений может быть по табелю, а может и по графику. Обратите внимание на дату документа.
а лучше зайдите отладчиком в код где эта формула расчета , там проверьте значения НормаЧасов и других.
(2) Дата документа нормальная, 12.01.2021, увольнение например пытаюсь сделать сейчас, текущая дата.
"учет раб.времени для разных подразделений может быть по табелю, а может и по графику" - где это проверить? в карточке подразделения есть поле График работы, но он везде у нас не заполнен.
(20) ну вообще неполное рабочее время - это если сотрудник норму не вырабатывает. У вас, судя по скринам графика, среднее количество часов 160 в месяц, вполне себе полная рабочая неделя.
(14) в вашем случае можно посмотреть в начальной штатной расстановке, в форме где зарплата устанавливается.
а вообще мы когда переносили данные из зуп 2.5 в 3 приходилось вручную перезаписывать графики, потому что при переносе не все корректно заполнялось....
Попробуйте посмотреть, когда на экран выходит ошибка. Вот где пишется, что деление на 0, там же должна быть выведена формула. Посмотрите, что за формула. И что пишет после "/".
У нас да, тоже сейчас возникают такие ошибки в документе "Начисление зарплаты и взносов". У таких сотрудников не заполнен у нас график на январь 2021 года (заходим в сотрудника, из него в график).
Нет ли каких обменов с другой кадровой базой? Получилось воспроизвести эту ошибку – в справочнике "Показатели расчета зарплаты" создал дубль предопределенного элемента "Норма часов" и подставил его в начисление "Оплата по окладу (по часам)".
(31) Именно в этом и оказалась ошибка. Задвоились предопределенные элементы.
Исправили их и все наладилось.
Всем большое спасибо за участие и помощь. Думаю приведенные варианты решений и проверок данных, пригодятся для решения подобной ошибки деления на 0, без дублирования предопределенных элементов.
(32) Жирный минус программисту, кто писал правила обмена.
В правилах обмена предопределенные элементы ищут по имени и не "заменяют" и не "создают такой же".
Применяют найденный.
(1) В данном случае посмотрите в конфигураторе как осуществляется расчет оклада, расчет оклада должен осуществляться только при изменении нормы часов. В другом случае расчет осуществляться не должен. Тогда ошибка должна исчезнуть. Такие дела.
Да, это усложняет расчет, поскольку в данном случае приходится вновь поттверждать каждый раз норму часов после ввода оклада. Но для того, чтобы этого избежать оклад привязывается к должности, норма же часов, привязывается к месяцу календарного года. Время же в часах привязывается либо к должности, либо к работнику. Создаётся соответствующий документ, регистры свелений непериодические. В общем модуле пишутся соответствующие функции и процедуры, равно как и в модуле формы документа пишутся соответствующие процедуры. Все ошибка должна исчезнуть. Почему такая ошибка возникает, потому что не задана норма часов, возникает вопрос, к чему привязана норма часов, очевидно к месяцу того года, в котором работник работает. Так и осушествите эту привязку, или попросите разработчиков осуществить ее. Детская ошибка. Такие дела
(35) есть ещё приём для ленивых.
В формуле проверять показатель, на который делится, на "ноль" и обходить это, сразу приравнивая результат вычисления к нулю. Тернарным оператором.
Это для тех, кому неинтересно смотреть историю графиков сотрудника, проверять их на заполненность, и вообще пофиг, что результат расчета будет ноль.
Типа "Ну ноль значит ноль, зато документ не ругается"
(37) Объясните, как показатель может делиться на 0. На ноль как известно делить нельзя. Поэтому если какой то показатель делится на 0, значит есть ошибка в формуле расчета. Надо исправлять формулу.
(39) При оформлении увольнения, или командировки ничего не может делиться на 0. Почему, да потому что есть месячный оклад. Количество рабочих дней в месяце никак не может быть равно нулю
Следовательно Строка табличной части. Дневной оклад Работника=СтрокаТабличнойЧасти.ОкладРаботника/СтрокаТабличнойЧасти.НормативноеКоличествоРабочихДней;
СтрокаТабличнойЧасти.ЗаработнаяПлатаРаботника=СтрокаТабличнойЧасти.КоличествоДнейОтработанныхРаботником*Строка табличной части. Дневной оклад Работника;
Поскольку значение выражения СтрокаТабличнойЧасти.НормативноеКоличествоРабочихДней не может быть равно 0. Следовательно ошибка деления на 0 исчезает
(40) Но бывает же равно нулю. Когда график сотрудника, действующий в период фактического действия данного начисления, не заполнен.
Об этом идёт речь весь топик.
(41) А причем здесь график сотрудника. У Вас есть нормативное количество рабочих дней, так называемый производственный календарь, который утверждается постановлением Правительства
Вы не можете принять на работу сотрудника, не установив ему нормативное количество рабочих дней. Ибо СтрокаТабличнойЧасти.НормативноеКоличествоРабочихДней привязывается не к конкретному сотруднику, а к должности данного сотрудника. И все ошибка деления на 0 исчезает
(42) Вы с ЗУПом знакомы хоть немного?
Сотруднику так или иначе устанавливается график работы. Либо из числа общих, либо индивидуальный (на месяц). Там и нормируется его время.
Действующий график можно увидеть в соответствующем регистре, первичном и интервальном.
При расчете зарплаты учитываются все графики, которые действовали у сотрудника в рассчитываемых периодах.
Зайду с другой стороны. Говоря "не можете принять на работу сотрудника, не установив ему нормативное количество дней".
В каком объекте метаданных выражается "установленное сотруднику количество рабочих дней".
Как (чем) непосредственно назначается сотруднику "Это" при приеме на работу.
Какая норма времени (в виде каких единиц измерения) берется в расчет при суммированном учете времени?
Какие нормы есть при суммированном учете?
Как и чем, какими документами, каким объектом метаданных в этих документах может меняться норма времени у сотрудника в течение его трудовой деятельности?
Как принять сотрудника на неполный рабочий день, что для этого надо сделать?
Как и что можно настроить, чтобы сотрудника принять или перевести на неполный рабочий день?
Я еще кучу вопросов могу задать, но есть ощущение, что вы не ответите, ибо не в курсе.
В данном топике трабл был в дублировании предопределенного показателя зарплаты "НормаЧасов".
Опишите, его. Буквально, что он значит, с чем связан ?
У Вас, что на каждого сотрудника устанавливается свой норматив рабочего времени, так что ли. В этом случае ошибки деления на 0 не избежать. Но если норматив рабочего времени привязать не к конкретному сотруднику, а к должности, например кассир должен работать столько и столько то на ставку. В этом случае деления на 0 очень легко избежать, поскольку привязка идёт не к конкретному работнику, а к должности работника. А по поводу неполного рабочего дня то же задача решается очень просто. СтрокаТабличной части. Заработная платаРаботника= СтрокаТабличнойЧасти. Ставка*СтрокаТабличнойЧасти.ОкладПоДолжности. Вам прежде всего надо понять механизм начисления заработной платы работникам Вашей организации. А уже затем конфигурировать 1С под свои потребности. Я принципиальный противник типовых конфигураций. Ибо они навязывают бизнесу свою логику протекания бищнес-процессов, а так быть не должно.
А вообще по поводу учета рабочего времени читайте трудовое право, и исходя из положений Трудового кодекса и локальных правовых актов конфигурируйте 1С под свои нужды. По другому увы никак.
Если же Вы используйте суммированный учёт рабочего времени, то тогда каждому сотруднику на месяц создаётся отдельный документ, в шапке указываются данные сотрудника, а в табличной части указываются операции,и проводимые сотрудником, дата операции, время операции, количество часов, и затем этот документ проводится по регистру накопления приход, где в качестве измерения выступают сотрудник, должность, операции, а в качестве ресурсов,иколичество часов. Затем по этому регистру накопления приход делается отчет. Прежде всего надо понять логику бизнес процессов, принятых в организации, а затем уже конфигурировать 1С исходя из логики бизнес процессов организации, но никак не наоборот.
(41) Посему, надо разобраться, к чему привязана норма часов. Норма часов привязывается к должности, а не к сотруднику. И указывается она в периодическом независимом регистре сведений, у которых есть следующие измерения:должность, норма часов. И в таком случае норма часов проставляется при выборе должности, а не сотрудника. Вот и все решение задачи.
(48) Изучите ЗУП, а не излагайте фантазии.
Связка простая. Норма времени - в графике (регистр сведений), график связан с сотрудником (регистр сведений).
Это - описание с ИТС
Плановое рабочее время (сотрудников) фиксируется в графиках работы организации, которые назначаются сотрудникам документами: Прием на работу, Прием на работу списком, Кадровый перевод, Кадровый перевод списком, Изменение графика работы списком (раздел Кадры – Приемы, переводы, увольнения). Графики работы организации описываются в справочнике Графики работы сотрудников (раздел Настройка – Графики работы сотрудников). В программе есть возможность описывать произвольное количество самых разнообразных графиков работы – для пятидневной или шестидневной рабочей недели, сменного режима работы, для нормального, неполного или сокращенного рабочего времени (подробнее о настройке графиков работы смотрите материалы раздела Настройка графиков работы).
Наряду с общим графиком сотруднику может быть установлен оперативный индивидуальный график работы на месяц. В этом случае плановое время для сотрудника за этот месяц будет определяться не по графику работы организации, присвоенному ему кадровыми документами, а по индивидуальному графику, введенному с помощью документа Индивидуальный график (раздел Зарплата – Индивидуальные графики). Подробнее о настройке индивидуального графика см. статью Оформление индивидуального графика работы.
Это - мой вам ответ как разработчика в ЗУПе.
"Привязанный" к сотруднику график хранится в РС "График работы сотрудников" и "График работы сотрудников интервальный" (второй удобнее для применения в запросах).
В нем хранится привязка графика к сотруднику по периоду.
Норма времени хранится в РС "Графики работы по видам времени". Там по измерению "График" хранятся значения нормы в днях и часах по разным "видам времени" на каждый день календарного периода.
(41) Ну и ради Бога, но тогда не жалуетесь, что у Вас возникает ошибка деления на 0 при незаполненным графике работы сотрудников. И не простите ее исправить. И не спрашивайте ни у кого, как Вам исправить данную ошибку.