Почему в расчетном листке 1С:ЗУП удваиваются отработанные часы и как исправить расчет?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При переходе на программу «1С:Зарплата и управление персоналом» пользователи нередко сталкиваются с ситуацией, когда по табелю сотруднику введено одно количество часов (например, 16 часов), а в расчетном листке или документе начисления отображается в два раза больше (32 часа). Дополнительно сложность диагностики увеличивается тем, что расчет зарплаты в современных версиях выполняется в фоновом режиме, из-за чего стандартная точка останова в Конфигураторе не срабатывает. Разберем по шагам, почему возникает эта ошибка, как включить отладку и как исправить дубли видов начислений.

Причины удвоения часов в расчетном листке

Проанализируем механику формирования строк начисления и расчета времени. Удвоение отработанных часов чаще всего вызвано следующими факторами:

  1. Дублирование планового начисления сотрудника. Если в базе создано два одинаковых вида начисления (например, два элемента с кодом ОКЛЧС), то при кадровом оформлении («Прием на работу» или «Изменение оплаты сотрудников») сотруднику могли быть ошибочно назначены оба вида расчета одновременно. При проведении документа «Начисление зарплаты и взносов» программа формирует две отдельные строки, каждая из которых берет время по табелю (по 16 часов). В печатной форме «Расчетный листок» начисления часто объединяются или выводятся последовательно, суммируя часы до 32.
  2. Некорректная настройка учета времени в виде расчета. В карточке начисления на вкладке «Учет времени» должно быть выбрано: начисление выполняется За работу в полную смену в пределах нормы времени, а вид времени — Явка. Если ошибочно указан агрегированный вид времени (например, «Рабочее время»), программа может некорректно учитывать пересекающиеся периоды.
  3. Пересечение документов учета времени. Ошибка возникает, если в информационной базе на один и тот же месяц одновременно введены взаимоисключающие документы: например, индивидуальный график и документ «Табель», либо присутствуют два проведенных документа «Табель», в которых дублируются данные по сотруднику.

Как настроить отладку фоновых заданий расчета зарплаты

В типовых конфигурациях на платформе «1С:Предприятие 8.3» перерасчет документов зарплаты вынесен в фоновые потоки, чтобы интерфейс пользователя не зависал при обработке больших списков. По умолчанию Конфигуратор к таким заданиям не подключается. Выполним подключение отладки по шагам:

  1. В главном меню Конфигуратора откроем пункт Отладка → Подключение...
  2. Нажмем кнопку Настройка автоматического подключения.
  3. В открывшемся окне установим флажок напротив пункта Фоновые задания и нажмем ОК.
  4. Если используется клиент-серверный вариант информационной базы, убедимся, что агент сервера 1С (служба ragent) запущен с параметром -debug. Без этого параметра подключение к фоновым потокам на сервере будет невозможно.

После включения автоматического подключения точки останова в модулях расчета начнут штатно срабатывать при нажатии кнопки пересчета в пользовательском режиме.

Почему начисление не рассчитывает зарплату без табеля

Рассмотрим ситуацию, когда документ «Начисление зарплаты и взносов» вовсе не заполняет оплату по окладу без предварительно проведенного документа «Табель». В нормальном режиме 1С:ЗУП способна выполнять расчет на основе графиков работы методом отклонений без обязательного ввода табелей.

Если этого не происходит, причина кроется в отсутствии данных в регистре сведений ГрафикиРаботыПоВидамВремени:

  1. Не заполнен производственный календарь. Проверим общегосударственный производственный календарь на текущий год (раздел Настройка → Производственные календари). Если календарь не обновлен и не записан, графики не могут определить праздничные и предпраздничные дни.
  2. График работы сотрудника не сформирован на текущий год. В карточке графика работы (раздел Настройка → Графики работы сотрудников) необходимо обязательно нажать кнопку Заполнить на текущий расчетный год и нажать Записать и закрыть. Только после этого формируются фактические рабочие часы по графику. Если график пуст, норма и явка равны нулю, поэтому программа ожидает ручного ввода табеля.

Устранение дублей видов расчета в конфигурации

Начисления в конфигурации 1С:ЗУП хранятся в объекте метаданных ПланВидовРасчета.Начисления. При появлении дублирующихся начислений просто пометить один из элементов на удаление не удается, так как на него ссылаются другие объекты — например, начисление «Доплата до среднего заработка» использует его в качестве базового.

Разберем способы очистки и устранения дублей:

  1. Использование типовой обработки слияния. Перейдем в раздел Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей. Выберем область поиска «Начисления». Программа найдет два одинаковых начисления, позволит указать правильный рабочий элемент, заменит все ссылки в документах и настройках на него, после чего дублирующий элемент будет помечен на удаление автоматически.
  2. Ручная очистка зависимостей в карточке начисления. Откроем начисление «Доплата до среднего заработка». По умолчанию многие системные реквизиты заблокированы от случайного изменения. Нажмем Еще → Разрешить редактирование реквизитов. После подтверждения перейдем на вкладку «Расчет базы» и вручную удалим лишнюю строку с дублирующимся начислением из списка базовых начислений.
  3. Программная очистка табличных частей плана видов расчета. В сложных случаях ссылки на начисление хранятся в специальных системных таблицах плана видов расчета: БазовыеВидыРасчета, ВедущиеВидыРасчета и ВытесняющиеВидыРасчета. Если требуется программно исключить ссылку на ошибочный вид расчета из ведущих или базовых начислений, выполним следующий код во внешней обработке:

ОбъектДоплаты = СсылкаНаДоплату.ПолучитьОбъект();

// Удаляем ссылку из базовых начислений
КоличествоСтрок = ОбъектДоплаты.БазовыеВидыРасчета.Количество();
Для Индекс = 1 По КоличествоСтрок Цикл
    Строка = ОбъектДоплаты.БазовыеВидыРасчета[КоличествоСтрок - Индекс];
    Если Строка.ВидРасчета = ЛишнийВидРасчета Тогда
        ОбъектДоплаты.БазовыеВидыРасчета.Удалить(Строка);
    КонецЕсли;
КонецЦикла;

ОбъектДоплаты.Записать();

После устранения дублирующегося вида расчета и проверки регистра «Плановые начисления» пересчитаем документ начисления зарплаты — отработанное время сотрудника будет соответствовать данным табеля.

← На главную