В системе 1С:ЗУП основные начисления – это те виды доходов, которые рассчитываются автоматически при проведении документа Начисление заработной платы. Их формула может быть простой (например, оклад × коэффициент) либо сложной, содержащей условия, математические функции и ссылки на пользовательские показатели. В данной статье рассмотрим:
- Где и как создавать формулу основного начисления;
- Основные конструкции языка формул 1С;
- Примеры использования условий
ЕСЛИ,МИН,МАКС; - Как добавить собственный показатель и использовать его в формуле;
- Рекомендации по отладке и тестированию сложных расчетов.
Где находится редактор формул основных начислений - Открываем Настройка → Начисления, удержания и надбавки (в зависимости от редакции может быть Настройка → Виды начислений и удержаний).
- В списке выбираем нужное основное начисление (например, Оклад, Премия за выслугу лет, Доплата за вредность) и нажимаем Изменить.
- На вкладке Формула расчета находится поле ввода формулы и кнопка Редактировать формулу (открывает конструктор с подсказками).
После внесения изменений не забываем нажать Записать и закрыть и провести Регистрация изменений для активации новой формулы.
Синтаксис языка формул 1С
Формула в 1С представляет собой выражение на языке встроенного программирования. Основные элементы:
- Константы – числа, строки, даты (например,
1000,"Премия"). - Переменные‑показатели – ссылки на реквизиты документа, справочники или регистры (например,
Оклад,КоличествоЧасов). Их имена начинаются с буквы и могут содержать цифры и знак подчёркивания. - Операторы: арифметические (
+ — * /), сравнения (< > = <= >=), логические (И ИЛИ НЕ). - Функции:
ЕСЛИ(Условие; Тогда; Иначе),МИН(Значение1; Значение2; …),МАКС(Значение1; Значение2; …),ОКРУГЛ(Число; Знаки),ДАТА(Год; Месяц; День)и др. - Круглые скобки задают порядок вычислений.
Пример простой формулы:
Оклад * 1.15 // надбавка 15 % к окладу
Использование условных конструкций Функция ЕСЛИ
Синтаксис: ЕСЛИ(ЛогическоеВыражение; ЗначениеЕслиИстина; ЗначениеЕслиЛожь).
Пример: Надбавка за стаж – 5 % если стаж < 5 лет, иначе 10 %.
ЕСЛИ(Стаж < 5; Оклад * 0.05; Оклад * 0.10)
Вложенные ЕСЛИ (многовариантные условия)
Для нескольких диапазонов удобно вкладывать функции:
ЕСЛИ(Сумма < 30000; Сумма * 0.15;
ЕСЛИ(Сумма < 60000; Сумма * 0.1125;
ЕСЛИ(Сумма < 120000; Сумма * 0.075;
Сумма * 0.025)))
Это реализует схему: до 30 000 – 15 %, от 30 000 до 60 000 – 11,25 %, от 60 000 до 120 000 – 7,5 %, свыше 120 000 – 2,5 %.
Функции МИН и МАКС
Полезны для установления нижней или верхней границы.
Пример: Премия не может быть меньше 4500 руб.
МАКС(Сумма * 0.1125; 4500)
Одновременное использование МИН и МАКС позволяет задать «коридор»:
МИН(МАКС(Сумма * 0.075; 6750); 15000)
Здесь результат будет не меньше 6750 и не больше 15000.
Добавление собственных показателей
Если в типовой конфигурации нет нужного реквизита, его можно создать как пользовательский показатель начисления.
- Переходим в Настройка → Пользовательские показатели.
- Нажимаем Создать, указываем:
- Название (например,
КоэффициентВредности); - Тип (Число, Дата, Строка и т.д.);
- Способ вычисления (Постоянное значение, По формуле, По регистру и т.д.).
- Название (например,
- Сохраняем показатель.
- В редакции формулы начисления теперь можно обращаться к нему по имени, например
КоэффициентВредности.
Пример формулы с пользовательским показателем:
Оклад * КоэффициентВредности * (1 + ПремияЗаВыслугу / 100)
Пошаговая настройка сложного начисления (пример)
Задача: начислить вознаграждение за выполнение кровельных работ по следующей схеме:
- База – сумма отработанных часов (показатель
ЧасыКровли) умноженная на тарифную ставку (ТарифСтавка). - Если сумма базы < 30 000 – коэффициент 0,15; от 30 000 до 60 000 – 0,1125 (но не менее 4500); от 60 000 до 120 000 – 0,075 (но не менее 6750); свыше 120 000 – 0,025 (но не менее 9000).
Реализация:
// 1. Базовая сумма
База := ЧасыКровли * ТарифСтавка;
// 2. Определяем коэффициент с учетом минимумов
Коэф := ЕСЛИ(База < 30000;
0.15;
ЕСЛИ(База < 60000;
МАКС(База * 0.1125; 4500) / База; // делим на Базу, чтобы получить коэффициент
ЕСЛИ(База < 120000;
МАКС(База * 0.075; 6750) / База;
МАКС(База * 0.025; 9000) / База)));
Вознаграждение := База * Коэф;
В поле Формула расчета достаточно ввести итоговое выражение (последнюю строку), а промежуточные переменные можно определить через Блок вычислений (кнопка Добавить блок в конструкторе формул).
Отладка и тестирование формул - Тестовые данные: создайте отдельный документ Начисление с фиксированными значениями показателей (например, через Ввод начальных остатков или прямой ввод в регистр накоплений) и проверьте результат формулы вручную;
- Проверка границ: обязательно протестируйте значения, находящиеся exatamente на границах условий (30 000, 60 000, 120 000), чтобы убедиться, что переход между диапазонами корректен.
- Использование функции ОКРУГЛ: если требуется округление до копеек, заверните итоговое выражение в
ОКРУГЛ( … ; 2).
Рекомендации по поддержке и сопровождению - Комментируйте сложные формулы прямо в поле ввода (используйте символ
// для однострочных комментариев). Это облегчит будущим администраторам понимание логики. - Выносите часто используемые выражения в отдельные пользовательские показатели – так формула становится короче и легче поддерживается.
- При обновлении конфигурации 1С проверяйте, не изменились ли имена стандартных показателей; при необходимости корректируйте ссылки в формулах.
- Документируйте все изменения в отдельном журнале (например, в таблице История изменений начислений) – это упрощает аудит и соответствие внутренним регламентам.
ОКРУГЛ( … ; 2).- Комментируйте сложные формулы прямо в поле ввода (используйте символ
//для однострочных комментариев). Это облегчит будущим администраторам понимание логики. - Выносите часто используемые выражения в отдельные пользовательские показатели – так формула становится короче и легче поддерживается.
- При обновлении конфигурации 1С проверяйте, не изменились ли имена стандартных показателей; при необходимости корректируйте ссылки в формулах.
- Документируйте все изменения в отдельном журнале (например, в таблице История изменений начислений) – это упрощает аудит и соответствие внутренним регламентам.
Формулы в основных начислениях 1С:ЗУП предоставляют гибкий инструмент для реализации самых разнообразных схем оплаты труда: от простых надбавок до многоуровневых бонусных систем с условиями и минимумами. Понимание синтаксиса языка формул, умение пользоваться функциями ЕСЛИ, МИН, МАКС и возможность создавать собственные показатели позволяют бухгалтеру и специалисту по ЗУП адаптировать систему под любые требования организации без привлечения внешних программистов.
При правильной настройке и тщательном тестировании такие начисления работают стабильно, обеспечивая прозрачность и точность расчетов заработной платы.