При расчете зарплаты в конфигурациях 1С:УПП 1.3 и ЗУП 2.5 пользователи часто сталкиваются с ситуацией, когда показатель «Отработано времени в днях» принимает нелогичные значения, превышающие месячную норму. Давайте разберемся, как проанализировать эту ошибку и привести расчеты в соответствие с реальностью.
Первым делом необходимо выяснить, откуда система берет данные. Основным источником информации о фактически отработанном времени является регистр накопления РабочееВремяРаботниковОрганизаций. Именно здесь хранятся движения, которые потом подтягиваются в документ Начисление зарплаты.
Для диагностики выполним следующие действия:
Универсальный отчет (или консоль запросов).РабочееВремяРаботниковОрганизаций.Одной из наиболее частых причин некорректного расчета является отсутствие или неверная настройка вида времени в самом начислении. Если поле Вид времени не заполнено, 1С может по умолчанию интерпретировать «Отработано времени» как совокупность всех явок, включая пересекающиеся записи.
Рассмотрим порядок действий:
Учет времени.Явка.Хотя документ Табель учета рабочего времени кажется очевидным решением, важно понимать, что его заполнение лишь уточняет данные. Если после проведения табеля показатель «Отработано времени» не меняется, значит, формула начисления игнорирует данные табеля и обращается напрямую к графикам или регистрам.
Проверьте, не введены ли у сотрудника Индивидуальные графики работы или ручные правки, которые могли «зациклить» расчет. В таких случаях рекомендуем перепровести все документы, влияющие на расчет времени в хронологическом порядке.
Если настройки интерфейса не дали результата, необходимо обратиться к коду конфигурации. Функция, отвечающая за получение данных для показателя, обычно располагается в модуле ПроведениеРасчетовПереопределяемый.
Посмотрим на пример структуры функции, которая извлекает данные для расчета:
Функция ПолучитьТекстПоказателя(НеобходимыеДанные, ВидПВР, Предопределенный = Ложь, КомментироватьРасчет)
// Здесь происходит запрос к данным для формирования базы расчета
// Важно проверить, накладываются ли условия по периоду и виду времени
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ... ИЗ РегистрНакопления.РабочееВремяРаботниковОрганизаций ...";
// ... логика обработки
КонецФункции
Проанализируйте этот код в конфигураторе. Проблема часто кроется в том, что в запросе отсутствует жесткий фильтр по Периоду, из-за чего в выборку попадают записи за прошлые месяцы или некорректно сформированные интервалы.
Если вышеперечисленные шаги не привели к успеху, попробуйте следующее:
Тестирование и исправление (ТИИ) информационной базы, чтобы исключить логические ошибки в регистрах.Дополнительных начислений).Вида расчета на вкладке Прочее не стоит галочка, заставляющая систему «накапливать» время сверх установленной нормы.Работая над этой задачей, вы обязательно обнаружите «дублирующую» запись, которая портит отчетность, и сможете оперативно ее нейтрализовать!