Каждый бухгалтер, работающий в программе 1С:Зарплата и Управление Персоналом 3.1, рано или поздно сталкивается с загадочным поведением программы при формировании расчетных листков. Одна из наиболее частых проблем — неверное количество рабочих дней в строке начисления по больничному листу. Например, сотрудник болел в период с 12 по 23 число, на этот период приходится 8 рабочих и 4 выходных дня по графику пятидневки. Однако программа упорно выводит в расчетный листок 10 рабочих дней (как будто расчет идет по шестидневке) или вовсе дублирует строки с невыходами.
В этой статье мы подробно разберем, почему возникает эта путаница, какие внутренние механизмы программы за это отвечают и как по шагам исправить расчетный листок, чтобы отчетность выглядела безупречно.
Описанная ситуация чаще всего связана с зарегистрированной ошибкой платформы (код ошибки 10189207) или с нарушением методологии ведения учета рабочего времени в программе. Давайте проанализируем, что происходит «под капотом» 1С:ЗУП.
Когда вы проводите документ Больничный лист, программа должна зафиксировать два показателя времени в регистре накопления Отработанное время по сотрудникам:
Однако если в информационной базе уже создан и проведен документ Табель или документ Начисление за первую половину месяца (аванс) **до того**, как был рассчитан больничный, алгоритм программы дает сбой. Вместо рабочих дней в колонку отработанного времени по ошибке записываются календарные дни болезни или некорректное количество дней из других расчетов. В итоге расчетный листок начинает показывать «пургу».
Для того чтобы технически проверить, какие движения сделал документ, программист или аналитик может воспользоваться консолью запросов и проанализировать движения по регистру накопления:
ВЫБРАТЬ
ОтработанноеВремя.Сотрудник КАК Сотрудник,
ОтработанноеВремя.Регистратор КАК ДокументРегистратор,
ОтработанноеВремя.ВидИспользованияВремени КАК ВидВремени,
ОтработанноеВремя.Дни КАК РабочиеДни,
ОтработанноеВремя.ОплаченоДней КАК КалендарныеДни
ИЗ
РегистрНакопления.ОтработанноеВремяПоСотрудникам КАК ОтработанноеВремя
ГДЕ
ОтработанноеВремя.Сотрудник = &Сотрудник
Если в результате запроса в поле РабочиеДни для строки больничного вы увидите числа, совпадающие с календарными днями или не соответствующие графику сотрудника, значит, вы столкнулись именно с этой проблемой.
Другой частый сценарий — когда сотрудник заболевает неожиданно. Сначала в системе фиксируется документ Отсутствие (болезнь, прогул, неявка) с кодом НН (отсутствие по невыясненной причине). В конце первой половины месяца или в конце периода закрывается Табель. Позже сотрудник приносит листок нетрудоспособности, и бухгалтер вводит Больничный лист.
В этот момент возникает логический конфликт документов:
Табель в 1С имеет приоритет жесткого ввода времени. Он «намертво» фиксирует код НН в регистре учета времени.Больничного листа программа пытается вытеснить невыход, но из уже проведенного документа Табель строка «НН» автоматически не удаляется.В результате в расчетном листке выводятся обе строки одновременно. В одном периоде у вас могут сосуществовать и невыход по невыясненной причине, и оплата больничного листа, что искажает итоговое количество дней отсутствия.
Чтобы восстановить порядок в учете рабочего времени и вернуть правильные показатели рабочих дней в расчетном листке, воспользуемся проверенным алгоритмом перепроведения документов в правильной последовательности.
Прежде всего необходимо снять проведение с документов, которые зафиксировали время до ввода больничного. Найдите в журнале документов за отчетный месяц документ Табель по данному сотруднику (или по всему подразделению) и отмените его проведение. Аналогично поступите с документом Начисление за первую половину месяца, если он был рассчитан в период болезни сотрудника.
Откройте проблемный документ Больничный лист. Чтобы заставить программу пересчитать время с чистого листа (без учета зафиксированных ранее табелем данных):
Больничный лист.После того как больничный лист успешно проведен и сделал правильные движения в регистрах накопления, нам нужно вернуть на место данные табеля:
Табель.Табель.Если за этот месяц уже производилось начисление зарплаты, откройте документ Начисление зарплаты и взносов, перейдите на вкладку «Доначисления, перерасчеты» или просто полностью перезаполните начисления по данному сотруднику, чтобы вытеснение невыходов сработало корректно.
Теперь сформируйте Расчетный листок. Вы увидите, что лишняя строка с невыходом исчезла (или сторнировалась правильным образом), а в строке больничного листа отображается корректное количество рабочих дней согласно пятидневному графику сотрудника.
Для того чтобы минимизировать возникновение подобных ошибок в будущем, методисты фирмы «1С» рекомендуют по возможности избегать постоянного ручного ввода документа «Табель».
Программа 1С:ЗУП 3.1 построена на «методе отклонений». Это значит, что для сотрудников со стандартными графиками работы (пятидневка, сменные графики) программа сама рассчитывает норму и фактически отработанное время на основании планового графика и введенных документов отклонений (Отпуск, Больничный лист, Командировка, Отсутствие). Ручной ввод Табеля требуется только в исключительных случаях (например, при сложной сдельной оплате или нестандартных изменениях смен «на лету»). Если не вводить документ Табель без крайней необходимости, то любые документы отклонений будут автоматически и без ошибок вставать на свои места в расчетных листках.