В системе 1С:ЗУП (Зарплата и управление персоналом) 8.3 формулы видов начислений являются основным инструментом автоматизации расчета заработной платы. Грамотная настройка формул позволяет исключить ручной труд, минимизировать ошибки и обеспечить соответствие расчетов трудовому законодательству РФ и внутренним локальным нормативным актам организации.
Общая архитектура формул в 1С:ЗУП
Механизм расчетов в 1С:ЗУП построен на объектной модели. Каждый Вид расчета (начисление, удержание, выплата) имеет свой алгоритм, который определяется:
- Базовым периодом действия — за какой период считать (месяц, квартал, год, произвольный).
- Порядком расчета — приоритет выполнения (важно для зависимых расчетов, например, НДФЛ считается после начислений).
- Формулой — непосредственно алгоритм вычисления суммы.
- Показателями — вспомогательными данными (плановыми, фактическими, накапливаемыми), используемыми в формуле.
Редактор формул
Формулы редактируются в встроенном редакторе формул, который поддерживает:
- Арифметические операции:
+,-,*,/, . - Функции:
Min,Max,Round,Int,Abs. - Условные конструкции:
Если(Условие, Тогда, Иначе). - Логические операторы:
И,Или,Не. - Обращение к показателям:
Показатели.ИмяПоказателя. - Обращение к параметрам вида расчета:
Параметры.ИмяПараметра. - Обращение к табельным данным:
Табель.ИмяКолонки.
Типы показателей и их роль в формулах
Показатели — это «переменные», которые хранят значения, необходимые для расчета. В 1С:ЗУП выделяют три основных типа:
Плановые показатели
Задаются заранее (в карточке сотрудника, штатном расписании или документе «Установка плановых показателей»).
- Примеры: Оклад, тарифная ставка, процент премии, коэффициент региона, ставка за единицу продукции.
- Использование в формуле:
Показатели.Оклад,Показатели.ПроцентПремии.
Фактические (разовые) показатели
Вводятся документами за конкретный период (например, документ «Начисление премии», «Пiecework» — сдельная зарплата).
- Примеры: Сумма разовой премии, количество произведенных деталей, часы переработки.
- Использование в формуле: Обычно доступны через табличную часть документа начисления или через виртуальные таблицы табеля.
Накапливаемые показатели
Автоматически рассчитываются системой в процессе выполнения расчетов и накапливают значения за определенный период (месяц, квартал, год). Критически важны для расчетов, зависящих от накопленного итога (НДФЛ, страховые взносы, больничные, годовые премии).
- Примеры: Накопленный доход с начала года, накопленная база по взносам, отработанное время с начала года.
- Настройка: В виде расчета на вкладке «Накапливаемые показатели» указывается, какие базы пополняет данный расчет и от каких зависит.
Синтаксис и лучшие практики написания формул
Базовый синтаксис
// Пример простой формулы оклада
Показатели.Оклад * Показатели.КоэффициентРегиона
// Пример с округлением (до 2 знаков)
Округ(Показатели.Оклад * Показатели.КоэффициентРегиона, 2)
Условные формулы (Если)
Самый частый сценарий — расчет в зависимости от отработанного времени или категории сотрудника.
// Если отработано полное время — полный оклад, иначе пропорционально
Если(Табель.ОтработаноДней = Табель.НормаДней,
Показатели.Оклад,
Показатели.Оклад * Табель.ОтработаноДней / Табель.НормаДней)
Работа с накапливаемыми показателями
Для доступа к накопленным значениями используются специальные функции или прямые ссылки, в зависимости от контекста (обычно внутри формулы вида расчета «Накопление» или при расчете лимитов).
// Пример: Премия за год, если накопленный доход > 1 млн
Если(Накопления.ДоходСНачалаГода > 1000000,
Показатели.ПроцентГодовойПремии * Накопления.ДоходСНачалаГода / 100,
0)
Типовые примеры формул для популярных видов начислений
Оклад (Фиксированная зарплата)
Логика: Полный оклад при полной отработке, пропорционально дням/часам — при неполной.
Округ(
Показатели.Оклад
- Табель.ОтработаноДней / Табель.НормаДней
- Показатели.КоэффициентРегиона
, 2)
Сдельная зарплата / Оплата за единицу продукции
Логика: Количество продукции * Цена за единицу. Количество берется из табеля или документа начисления.
// Если количество в табеле (колонка "Выработка")
Округ(Табель.Выработка * Показатели.ЦенаЗаЕдиницу, 2)
// Если используется документ "Начисление сдельной зарплаты"
// Сумма часто считается в самом документе, формула вида расчета может быть просто:
СуммаДокумента
Премия за выполнение плана (Процентная)
Логика: Процент от оклада или от начисленного зарплатного фонда.
// Премия как % от оклада
Округ(Показатели.Оклад * Показатели;ПроцентПремии / 100, 2)
// Премия как % от суммы начисленного оклада (вида расчета "Оклад")
// Требуется, чтобы вид расчета "Премия" шел ПОСЛЕ "Оклада" по порядку расчета
Округ(БазаНачислений.Оклад * Показатели.ПроцентПремии / 100, 2)
Доплата за выслугу лет / Классность / Вредность
Логика: Процент от тарифной ставки (оклада). Часто ставка фиксирована законом или коллективным договором.
Округ(Показатели.Оклад * Показатели.ПроцентВыслугиЛет / 100, 2)
Ночные часы (Сверхурочные, Выходные)
Логика: Используем табельные часы и часовую ставку. Часовая ставка часто вычисляется как Оклад / НормаЧасов.
// Ночные часы: оплата не менее 20% от часовой ставки (ТК РФ ст. 154)
// Часовая ставка:
Перем ЧасоваяСтавка = Показатели.Оклад / Табель.НормаЧасов;
// Сумма доплаты за ночные часы (20% или больше по ЛНА)
Округ(Табель.НочныеЧасы * ЧасоваяСтавка * 0.2, 2)
// Сверхурочные: первые 2 часа в 1.5, следующие в 2.0
Перем Час1 = Min(Табель.СверхурочныеЧасы, 2);
Перем Час2 = Max(Табель.СверхурочныеЧасы ౼ 2, 0);
Округ((Час1 * ЧасоваяСтавка * 1.5) + (Час2 * ЧасоваяСтавка * 2), 2)
Отпускные (Средний заработок)
В 1С:ЗУП отпускные обычно считаются специальным алгоритмом (не простой формулой), так как требуют расчета среднего заработка за 12 месяцев по правилам Постановления № 922. Вид расчета «Отпускные» настраивается как «По среднему заработку». Формула здесь не пишется вручную, настраивается база для расчета среднего (какие виды расчетов включать).
Порядок расчета и зависимости (Критически важно!)
Формулы не работают в вакууме. 1С выполняет виды расчетов строго по Порядку расчета (числу в поле «Порядок»).
- Базовые начисления (Оклад, Сдельная, Почасовая) — Порядок 100–200.
- Процентные доплаты (Выслуга, Вредность, Регион) — Порядок 200–300. Зависят от Оклада.
- Премии, зависящие от начисленного фонда — Порядок 300–400. Должны видеть результат предыдущих.
- Расчеты по среднему (Отпускные, Больничные, Простои) — Порядок 500+. Используют накопленные базы за 12 мес.
- Удержания (НДФЛ, Алименты, Зачет задолженности) — Порядок 600+. Считаются от «Начислено к выплате».
Ошибка: Если поставить Премию (зависящую от Оклада) ПЕРЕД Окладом — формула вернет 0 или ошибку, так как база еще не сформирована.
Отладка и проверка формул
Консоль расчетов (F12 в документе «Расчет зарплаты»)
Главный инструмент диагностики. Позволяет пошагово увидеть:
- Какие показатели подтянулись и с какими значениями.
- Как вычислялась формула на каждом шаге.
- Почему сработало или не сработало условие
Если.
Использование «Сообщить» в формуле (для разработчиков)
В конфигураторе можно вставить в формулу вызов отладки (но в типовых конфигурациях поддержки это не рекомендуется, лучше использовать консоль).
Проверка показателей
Перед проверкой формулы убедитесь, что:
- Плановые показатели заведены в карточке сотрудника / штатном расписании на дату расчета.
- Табель заполнен корректно (нормы часов, отработанное время, коды отклонений).
- Накопления за предыдущие периоды рассчитаны и проведены (для больничных/отпускных/НДФЛ).
Типичные ошибки и как их избежать
| Ошибка | Причина | Решение |
|---|---|---|
| Деление на ноль | Норма дней/часов = 0 (не заведен график работы или табель пуст) | Использовать Если(Табель.НормаДней = 0, 0, ...) или проверять заполнение графика. |
| Формула возвращает 0 | Не заведен плановый показатель (Оклад, Ставка) на дату расчета | Проверить раздел «Плановые показатели» в карточке сотрудника или ШР. |
| Неверная сумма премии % от оклада | Порядок расчета Премии < Порядка Оклада | Увеличить порядок расчета Премии. |
| Округление «теряет» копейки | Округление внутри формулы по строкам, а не в итоге | Округлять только финальный результат вида расчета. В настройках вида расчета есть флаг «Округлять результат». |
| Не считает больничный/отпускные | Нет накоплений за 12 месяцев (база пуста) | Провести перерасчет за прошлые периоды или ввести вручную через «Ввод начальных накоплений». |
Продвинутые техники
Параметры вида расчета
Вместо жесткого кода процентов в формуле (например, 0.2 за ночные), создайте Параметр вида расчета (например, ПроцентНочных). Тогда формула станет универсальной:
Округ(Табель.НочныеЧасы * (Показатели.Оклад / Табель.НормаЧасов) * Параметры.ПроцентНочных / 100, 2)
Это позволяет менять проценты в настройках вида расчета без программиста.
Использование виртуальных таблиц (для сложных отчетов/расчетов)
В формулах сложных видов расчетов (например, КПИ) можно обращаться к регистрам накопления через функции ПолучитьДанные или использовать предварительно рассчитанные показатели, заполняемые обработкой перед расчетом.
Формулы для «Расчета по среднему» (Больничные, Командировочные)
Здесь формула пишется не для суммы, а для базы. Настраивается вид расчета типа «База для расчета среднего». В формуле базы указывается, какие виды доходов включать:
// Пример логики базы (упрощенно)
БазаНачислений.Оклад + БазаНачислений.Премия + БазаНачислений.Доплаты
// Исключаем: Материальную помощь, Путевые, Страховки
Настройка формул видов начислений в 1С:ЗУП 8.3 — это баланс между функциональностью стандартных механизмов и гибкостью алгоритмов. Ключевые принципы успеха:
- Используйте плановые показатели для параметров, меняющихся редко (оклады, ставки, %).
- Настраивайте порядок расчета строго по зависимостям (база -> процентные -> итоговые).
- Тестируйте на консоли расчетов каждый новый или измененный вид расчета.
- Документируйте логику в комментариях к виду расчета (описание) — это сэкономит часы коллегам при аудите.
- Избегайте хардкода — выносите константы в Параметры вида расчета или Плановые показатели.
Грамотно настроенная система формул превращает расчет зарплаты из рутины в управляемый, прозрачный и контролируемый бизнес-процесс.