Разработка и Конфигурация · 12 мин
Планы видов расчета в 1С: устройство и практика работы
Что такое план видов расчета в 1С, как устроены начисления и удержания, вытеснение, база и перерасчёты. Практические примеры и типичные ошибки.
План видов расчёта — это объект метаданных в платформе «1С:Предприятие», который описывает алгоритмы расчёта заработной платы и других периодических выплат: оклад, премии, отпускные, больничные, НДФЛ, удержания по исполнительным листам. Без него невозможен ни один расчёт зарплаты: именно здесь хранятся формулы, правила вытеснения и зависимости между видами расчёта.
Механизм планов видов расчёта решает три задачи. Во-первых, он хранит список всех возможных начислений и удержаний организации. Во-вторых, определяет, какие виды расчёта конфликтуют по периоду действия — например, больничный вытесняет оплату по окладу за те же дни. В-третьих, задаёт базы для расчётов, зависящих от других начислений: премия «процентом от оклада» берёт базу из результатов расчёта оклада.
Работают планы видов расчёта в связке с регистрами расчёта. План описывает что считать и по каким правилам, а регистр расчёта хранит фактические записи — кто, когда и сколько получил. Понимание этой связки необходимо как разработчикам, которые настраивают конфигурацию, так и расчётчикам зарплаты, чтобы осознанно исправлять ошибки в начислениях.
Из чего состоит план видов расчёта
Каждый вид расчёта в плане — это отдельный элемент с набором свойств. Ключевые свойства: код (уникальный идентификатор), наименование (например, «Оплата по окладу»), формула расчёта и признаки использования. В типовых решениях добавляются десятки дополнительных реквизитов: способ отражения в учёте, категория дохода для НДФЛ, код дохода для страховых взносов.
Формула расчёта описывается на встроенном языке 1С или через конструктор показателей. Например, оплата по окладу в ЗУП выглядит как Оклад * ВремяВДнях / НормаДней. Показатели (Оклад, НормаДней) заполняются кадровыми документами и графиками работы, а механизм расчёта подставляет их значения при проведении документа «Начисление зарплаты и взносов».
Отдельно настраиваются три списка связанных видов расчёта: базовые (результаты которых входят в базу), ведущие (изменение которых требует перерасчёта текущего) и вытесняющие (которые отменяют действие текущего вида на пересекающемся периоде). Именно эти три списка определяют поведение всей системы расчёта.
Вытеснение по периоду действия
Вытеснение — ключевая особенность механизма. Если сотрудник болел с 10 по 15 число, а по графику у него рабочие дни, то запись «Больничный» вытесняет запись «Оплата по окладу» за эти дни. В результате оклад начисляется не за полный месяц, а только за фактически отработанное время — платформа автоматически пересчитывает количество дней в формуле.
Для работы вытеснения у регистра расчёта должен быть установлен признак «Действие» (период действия). Каждая запись тогда имеет два периода: период регистрации (когда внесена запись) и период действия (за какие дни действует начисление). Механизм вытеснения сравнивает именно периоды действия.
Типичная ошибка — не добавить новый вид расчёта в список вытесняющих у оклада. Симптом: сотруднику одновременно начисляется полный оклад и, например, отпускные за одни и те же дни, фонд оплаты труда завышается. Проверяется это в настройках вида расчёта «Оплата по окладу» на вкладке связей.
Расчётная база и зависимые начисления
База нужна для видов расчёта, которые считаются от результатов других начислений. Классический пример — премия процентом: ПроцентПремии * РасчетнаяБаза / 100. В настройках вида расчёта «Премия» указывают список базовых видов: оклад, доплаты, надбавки. При расчёте платформа суммирует результаты этих видов за период действия премии и подставляет в формулу.
База может собираться по периоду действия или по периоду регистрации — это разные суммы, если были сторнирования или доначисления прошлых периодов. Например, оклад за январь доначислили в марте: по периоду действия сумма попадёт в базу январской премии, по периоду регистрации — в базу мартовской. Выбор зависит от методологии учёта в организации, и менять его в работающей системе следует осознанно.
Как проверить состав базы
Откройте вид расчёта, перейдите на вкладку «Расчёт базы» (в ЗУП — «Зависимости» / «Базовые начисления») и сверьте список с положением об оплате труда. Частая ситуация: ввели новую доплату, но забыли включить её в базу премии — премия у всех сотрудников занижается, причём без каких-либо сообщений об ошибке.
Ведущие виды расчёта и перерасчёты
Ведущие виды расчёта запускают механизм перерасчётов. Если премия зависит от оклада, то оклад должен быть указан как ведущий для премии. Тогда при изменении записи оклада (сторно, доначисление) платформа автоматически поставит премию в очередь на перерасчёт — в регистре перерасчётов появится запись, и расчётчик увидит, что премию нужно пересчитать.
Если связь «ведущий — зависимый» не настроена, перерасчёт не произойдёт: оклад изменился, а премия осталась старой. Это одна из самых коварных ошибок, потому что система не выдаёт никаких предупреждений — сумма просто неправильная.
Как проверить результат
Премия пересчиталась автоматически или появилась в списке перерасчётов
Премия осталась прежней, записей о перерасчёте нет
Оклад уменьшен пропорционально дням болезни или отпуска
Оклад полный и одновременно начислен больничный за те же дни
Все показатели формулы заполняются документами или графиками
Показатель не заполнен — результат расчёта равен нулю
Связь с регистрами расчёта и документами
План видов расчёта сам по себе ничего не начисляет. Цепочка выглядит так: документ (например, «Начисление зарплаты и взносов») создаёт записи в регистре расчёта, указывая вид расчёта из плана, сотрудника и период. Модуль расчёта (в типовых — процедуры проведения документа) читает формулу вида расчёта, собирает показатели, вычисляет базу, применяет вытеснение и записывает результат.
Один регистр расчёта связан ровно с одним планом видов расчёта, но один план может использоваться несколькими регистрами — например, в ЗУП исторически существуют отдельные регистры для начислений и удержаний. При разработке собственного расчётного механизма это нужно учитывать при проектировании структуры метаданных.
- 1Откройте раздел «Настройка» → «Начисления» и создайте новый элемент
- 2Задайте наименование, назначение начисления и способ расчёта (по формуле или фиксированной суммой)
- 3Проверьте формулу: все показатели должны существовать и заполняться
- 4На вкладке зависимостей укажите базовые начисления, если расчёт идёт от базы
- 5Проверьте, что новый вид добавлен в списки вытесняющих у оклада, если начисление замещает рабочее время
- 6Настройте налогообложение: код дохода НДФЛ и категорию для страховых взносов
- 7Начислите зарплату одному тестовому сотруднику и сверьте сумму с ручным расчётом
Типичные ошибки при работе с планами видов расчёта
Большинство проблем с расчётом зарплаты в 1С сводятся к неправильной настройке плана видов расчёта, а не к сбоям платформы. Первая группа ошибок — неполные связи: вид расчёта не включён в базу премии, не добавлен в вытесняющие, не связан как ведущий. Внешне всё работает, но суммы неверные в отдельных ситуациях.
Вторая группа — дублирование видов расчёта. Вместо настройки одного вида «Премия процентом» с показателем создают десятки отдельных элементов «Премия 10%», «Премия 15%» и так далее. Это раздувает план, усложняет отчёты и увеличивает риск ошибок при изменении методологии.
Третья группа — прямое редактирование типовых формул без необходимости. Изменённая формула оклада может сломаться при очередном обновлении конфигурации, и расчёт зарплаты по всей организации остановится. Безопаснее создавать собственные показатели и шаблоны формул в пределах механизмов, предусмотренных конфигурацией.
Собственный план видов расчёта в самописной конфигурации
Если вы разрабатываете собственную конфигурацию, план видов расчёта создаётся в конфигураторе: «Общие» → «Планы видов расчёта» → добавить. Обязательно укажите: признак использования периода действия, зависимость от базы (по периоду действия или регистрации) и связанный регистр расчёта. Для регистра расчёта задайте измерение (сотрудник), ресурс (результат) и реквизиты под параметры записи.
Модуль расчёта пишется вручную: обычно в модуле набора записей регистра или в общем модуле. Типовой подход — сначала рассчитать записи без зависимостей (оклад), затем зависимые (премии от базы), затем удержания. Платформа предоставляет объекты для получения данных базы и фактического периода действия через виртуальные таблицы регистра расчёта: ФактическийПериодДействия и ДанныеБазы.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.Сотрудник КАК Сотрудник,
| Начисления.ВидРасчета КАК ВидРасчета,
| Начисления.Результат КАК Результат
|ИЗ
| РегистрРасчета.Начисления КАК Начисления
|ГДЕ
| Начисления.ПериодРегистрации = &Период";Для полноценной зарплатной функциональности самописное решение почти всегда проигрывает типовому ЗУП: там уже реализованы НДФЛ, взносы, средний заработок, отчётность. Собственный план видов расчёта оправдан для узких задач — например, расчёт сдельной оплаты в отраслевом решении или начисление бонусов менеджерам по продажам.
Как выбрать подход
Частые вопросы
Чем план видов расчёта отличается от регистра расчёта?
План видов расчёта хранит описания алгоритмов — что и по каким формулам считать. Регистр расчёта хранит фактические записи: кто, за какой период и какую сумму получил. План отвечает на вопрос «как считать», регистр — «что насчитали». Один план всегда связан минимум с одним регистром, иначе его виды расчёта невозможно применить.
Почему премия не пересчиталась после изменения оклада?
Почти наверняка вид расчёта «Оклад» не указан как ведущий для премии. Откройте настройки премии, найдите список ведущих начислений и добавьте оклад. После этого изменения оклада будут автоматически ставить премию в очередь перерасчёта. Уже искажённые суммы придётся пересчитать вручную через документ «Перерасчёт» или повторное проведение начисления.
Можно ли удалить вид расчёта, по которому были начисления?
Технически платформа не даст удалить элемент, на который есть ссылки в регистрах. Правильный путь — снять вид расчёта с использования (в ЗУП — флаг «В архиве» / исключение из шаблонов документов), чтобы он не предлагался при новых начислениях, но исторические данные и отчёты за прошлые периоды остались корректными.
Что делать, если оклад начисляется вместе с больничным за одни дни?
Это признак отсутствующего вытеснения. Откройте вид расчёта «Оплата по окладу» и проверьте список вытесняющих начислений — там должны быть больничные, отпуска, командировки и другие отсутствия. Добавьте недостающие виды, затем перепроведите документы начисления за проблемный период и сверьте результат с табелем.
Нужно ли программировать, чтобы добавить своё начисление в ЗУП?
Для большинства случаев нет. Механизм показателей и шаблонов формул позволяет собрать формулу из готовых элементов через интерфейс: процент от базы, оплата по времени, фиксированная сумма, произведение показателей. Программирование требуется только для нестандартных алгоритмов, которые невозможно выразить формулой, — например, прогрессивная шкала сдельной оплаты.
Где посмотреть, какие виды расчёта входят в базу премии?
Откройте элемент справочника начислений, соответствующий премии, и перейдите на вкладку зависимостей (в разных версиях ЗУП она называется «Зависимости» или «Расчёт базы»). Там перечислены базовые начисления. Дополнительно полезно сформировать расчётный листок сотрудника и проверить, совпадает ли фактическая база премии с суммой ожидаемых начислений.
Что важно запомнить
План видов расчёта задаёт алгоритмы начислений и удержаний: формулы, вытеснение по периоду, расчётные базы и ведущие виды для перерасчётов. Большинство ошибок в зарплате — это неполные связи между видами расчёта, а не сбои программы. Проверяйте вытеснение, состав базы и перерасчёты на тестовом сотруднике перед применением изменений в рабочей базе.