Как в 1С:ЗУП и ЗГУ настроить расчет календарных дней работы сотрудника штатными средствами

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

В практике расчета заработной платы часто возникает задача: определить количество календарных дней, в течение которых сотрудник фактически числился в организации за определенный период (например, за месяц или год). Это необходимо для расчета различных надбавок, премий или компенсаций. Особую сложность задача представляет в тех случаях, когда организация использует базовую версию программы или имеет строгие ограничения на использование внешних обработок и расширений конфигурации. В такой ситуации нам необходимо полагаться исключительно на штатный функционал настройки формул и начислений.

Разберем детально, как реализовать автоматический расчет календарных дней работы, учитывая даты приема и увольнения сотрудника, без привлечения программистов.

Постановка задачи и анализ штатных показателей

Рассмотрим ситуацию: нам нужно получить показатель, который равен количеству календарных дней нахождения сотрудника в штате. Логика расчета должна быть следующей:

  1. Если сотрудник принят в текущем периоде — считаем от даты приема до конца периода.
  2. Если сотрудник уволен в текущем периоде — считаем от начала периода до даты увольнения.
  3. Если сотрудник и принят, и уволен в одном периоде — считаем разницу между датами.
  4. В остальных случаях — берем полный календарный период.

Проанализируем доступные системные показатели. Многие пользователи путают показатели КалендарныеДниМесяца и КалендарныеДни. Выясним причину их различия: КалендарныеДниМесяца — это константа для каждого месяца (28, 30 или 31 день), которая не зависит от того, работал сотрудник или нет. Нам же нужен динамический показатель, привязанный к периоду действия начисления.

Решение через настройку начисления и учет времени

Самый эффективный способ решить задачу штатными средствами — это правильно настроить вкладку «Учет времени» в самом начислении. Программа 1С:ЗУП (или ЗГУ) устроена так, что значения многих показателей зависят от того, какой вид времени сопоставлен с начислением.

Выполним настройку по шагам:

  1. Создадим новое начисление (или отредактируем существующее).
  2. На вкладке «Основное» установим назначение начисления (например, «Прочие начисления и выплаты») и укажем, что оно выполняется «Ежемесячно» или «Только если введено значение показателя».
  3. В формуле начисления будем использовать предопределенный показатель КалендарныеДни.
  4. Перейдем на самую важную вкладку — «Учет времени».
  5. В поле «Начисление выполняется» выберем значение «Дополнительная оплата за уже оплаченное время» (это позволит программе корректно накладывать период начисления на график сотрудника).
  6. В списке видов времени выберем «Календарные дни».

Почему это работает? Когда в начислении указан вид времени «Календарные дни», система при расчете автоматически ограничивает этот показатель фактическим периодом работы сотрудника в организации. Если сотрудник уволился 15-го числа, то период действия начисления физически не может выйти за пределы 15-го числа, и показатель КалендарныеДни вернет 15, а не 30.

Использование формулы для исключения праздничных дней

Иногда требуется исключить праздничные дни из расчета календарных дней. Для этого в системе предусмотрен показатель КалендарныеДниБезПраздников. Проанализируем пример формулы, которая может использоваться для расчета суммы, зависящей от календарного времени:

Результат = (РазмерПособия / КалендарныеДниМесяца) * КалендарныеДни

В данной формуле:

Накопительный механизм для годовых расчетов

Если задача стоит сложнее — например, нужно получить количество календарных дней работы за весь год для расчета годовой премии в декабре, — обычное месячное начисление не поможет напрямую. Однако мы можем применить метод накопления.

Разберем этот алгоритм:

  1. Создадим «техническое» начисление, которое не имеет денежного выражения в зарплате (или имеет символический 1 рубль), но фиксирует данные.
  2. Настроим его так, чтобы оно рассчитывалось ежемесячно и записывало количество КалендарныеДни в отдельный вспомогательный показатель.
  3. В основном (итоговом) начислении настроим расчетную базу, включив в нее это техническое начисление.
  4. На вкладке «Расчет базы» выберем период — «Предыдущий год» или «Текущий год».
  5. В формуле итогового начисления используем показатель КазначейскаяДоля или просто РасчетнаяБаза (если техническое начисление фиксировало дни как сумму).

Этот метод позволяет «собрать» календарные дни по крупицам за каждый месяц и получить их общую сумму в конце года, полностью игнорируя периоды, когда сотрудник не состоял в трудовых отношениях.

Проверка корректности при приеме и увольнении

Посмотрим на пример. Сотрудник Иванов принят на работу 20 сентября. В сентябре 30 календарных дней.

Если мы используем простую формулу с показателем КалендарныеДни и правильной настройкой учета времени, программа увидит, что период работы Иванова в сентябре — с 20.09 по 30.09.
Следовательно, КалендарныеДни = 11.

Если бы мы просто использовали КалендарныеДниМесяца, мы бы получили 30, что привело бы к ошибке в расчетах. А ручной ввод, как справедливо отмечено в обсуждении, неизбежно ведет к человеческому фактору, особенно при большом штате сотрудников.

Важные замечания для пользователей базовых версий

Поскольку в базовых конфигурациях (ЗУП Базовая, ЗГУ Базовая) нельзя вносить изменения в программный код и использовать расширения, данные настройки являются единственным легальным способом автоматизации.

Помните: если вы создаете новый показатель для ручного ввода, старайтесь минимизировать его использование. Всегда проверяйте, нет ли возможности заменить его системным показателем, который программа рассчитывает самостоятельно на основании кадровых данных (приказов о приеме, переводе и увольнении).

Таким образом, комбинируя предопределенные показатели и специфические настройки учета времени в документах «Начисление зарплаты и взносов», мы достигаем полной автоматизации процесса без программирования.

← На главную