К статье
Практический материал

Разработка и Конфигурация · 15 мин

Регистр расчёта в 1С: что это и как он работает

Регистр расчёта в 1С: что это такое, чем отличается от регистра накопления, виды перерасчётов, базовый период и настройка начислений в конфигураторе.

Регистр расчёта — это объект конфигурации 1С, предназначенный для хранения результатов периодических расчётов: начислений зарплаты, отпускных, больничных, алиментов и других сумм, которые вычисляются по формулам и зависят от времени. В отличие от регистра накопления, который фиксирует факт движения (приход, расход), регистр расчёта хранит не просто число, а связку «вид расчёта + период действия + результат», и умеет автоматически учитывать вытеснение одних начислений другими.

Классический пример — расчёт заработной платы. Оклад начисляется за весь месяц, но если сотрудник болел две недели, больничный «вытесняет» оклад за эти дни, и сумма оклада должна уменьшиться. Именно механизм вытеснения и перерасчётов отличает регистр расчёта от всех остальных видов регистров и делает его основным инструментом для учёта сложных периодических начислений.

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

Чем регистр расчёта отличается от других регистров 1С

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

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

Сравнение видов регистров

Регистр накопления

Подходит для фактов: приход товара, оплата, движение денег. Не умеет вытеснение и перерасчёты — для зарплаты не подходит.

Регистр сведений

Хранит значения в разрезе измерений: ставки, оклады, коэффициенты. Используется как источник данных для расчёта, но не хранит результаты.

Регистр расчёта

Хранит результаты начислений с периодом действия, поддерживает вытеснение, базу и перерасчёты. Единственный вариант для полноценного расчёта зарплаты.

Ключевые особенности, которых нет у других регистров:

  • Период действия — интервал, за который фактически выполняется начисление (может отличаться от периода регистрации, когда запись попала в базу);
  • Вытеснение — автоматическое сокращение периода действия одного вида расчёта при появлении вытесняющего (больничный вытесняет оклад);
  • База — возможность получить сумму других начислений за базовый период (премия считается как процент от оклада);
  • Перерасчёты — механизм отслеживания записей, которые нужно пересчитать при изменении исходных данных.

Структура: измерения, ресурсы и связь с планом видов расчёта

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

В структуре регистра расчёта выделяются:

  • Измерения — аналитические разрезы, чаще всего это сотрудник и организация (в ЗУП также физическое лицо, подразделение);
  • Ресурсы — хранимые результаты: сумма (результат), отработанные дни и часы, показатели;
  • Реквизиты — дополнительные данные записи, например график работы сотрудника или расчётный документ;
  • Системные поля — вид расчёта, период регистрации, период действия (начало и конец), базовый период, сторно-признак.

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

Периодичность и базовый период

При создании регистра расчёта задаётся периодичность: день, месяц, квартал или год. Для зарплатных расчётов практически всегда выбирают месяц, поскольку расчётный период зарплаты — календарный месяц. Периодичность определяет, как платформа округляет и группирует записи при получении базы и фактического периода действия.

Базовый период — это интервал, за который регистр умеет собирать «базу»: сумму результатов других видов расчёта, от которых зависит текущее начисление. Например, премия «20% от оклада за месяц» получает базу по виду расчёта «Оклад по дням» за тот же месяц. Зависимость по базе настраивается в плане видов расчёта на вкладке «Зависимость от базы» — там указываются базовые виды расчёта.

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

Вытеснение видов расчёта: как это работает

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

Фактический период действия хранится в специальной виртуальной таблице регистра — «Фактический период действия». Расчётчик в коде получает не просто интервал «с 1 по 31 число», а набор непрерывных интервалов с учётом всех вытеснений, и формула оклада считается пропорционально отработанным дням.

Настройка вытеснения выполняется в плане видов расчёта на вкладке «Вытесняющие» (в типовых решениях — «Приоритет»). Типичные пары вытеснения:

  • больничный вытесняет оклад, премию за отработанное время;
  • отпуск вытесняет оклад и другие начисления за время работы;
  • командировка вытесняет оклад (или не вытесняет, если считается дополнительно — зависит от учётной политики);
  • прогул и отсутствие вытесняют все начисления за время работы.
Типичные ошибки при настройке вытеснения
01
Не добавили новый вид отсутствия в список вытесняющих — сотрудник получил и оклад, и отпускные за одни дни, переплата выявляется при аудите.
02
Настроили двустороннее вытеснение между двумя видами — порядок расчёта становится непредсказуемым, результат зависит от последовательности проведения документов.
03
Вытеснили начисление, которое должно считаться дополнительно (например, доплату за вредность), — сумма занижается, сотрудник недополучает деньги.

Перерасчёты: зачем нужны и как с ними работать

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

Для этого в конфигурации создают объект «Перерасчёт» и связывают его с регистром расчёта. Когда запись регистра изменяется, платформа автоматически добавляет в таблицу перерасчёта строки: какие записи какого регистра требуют повторного расчёта. Обработка или процедура расчёта читает эти строки, пересчитывает указанные записи и очищает перерасчёт.

На практике в типовых конфигурациях перерасчёты выполняются при повторном проведении документа начисления зарплаты. В собственных разработках типичная ошибка — создать объект перерасчёта, но не написать код, который его обрабатывает: записи копятся в таблице перерасчётов, а суммы остаются старыми. Проверить это просто: откройте таблицу перерасчёта после изменения базового начисления — если записи появились, но после расчёта не исчезли, обработчик не работает.

Как настроить регистр расчёта в конфигураторе
  1. 1
    Создайте план видов расчёта, опишите виды начислений, формулы, вытеснение и зависимость от базы.
  2. 2
    Создайте регистр расчёта, укажите связь с планом, периодичность (обычно месяц), измерения (сотрудник, организация) и ресурсы (результат, дни, часы).
  3. 3
    При необходимости создайте объект «Перерасчёт» и привяжите его к регистру.
  4. 4
    Создайте документ-регистратор (например, «Начисление зарплаты») и напишите в модуле проведения формирование движений и расчёт сумм.
  5. 5
    Проверьте на тестовых данных: вытеснение при пересекающихся периодах, корректность базы и запуск перерасчёта после изменения исходной записи.

Как происходит расчёт: роль документа-регистратора и модуля

Записи в регистр расчёта попадают через документ-регистратор — в типовых решениях это «Начисление зарплаты и взносов», «Больничный лист», «Отпуск». Документ при проведении формирует движения: для каждого сотрудника и вида расчёта создаётся запись с периодом действия и исходными показателями.

Сам расчёт суммы выполняется программно — в модуле объекта документа, в общем модуле расчёта или в формулах вида расчёта (в ЗУП формулы настраиваются пользователем на встроенном языке формул). Типовой алгоритм расчёта оклада: получить фактический период действия, посчитать отработанные дни по графику, разделить на норму дней и умножить на оклад.

Платформа предоставляет для этого виртуальные таблицы регистра расчёта: «Фактический период действия» и «Данные графика». Вторая позволяет получить норму и факт времени по графику работы сотрудника с учётом вытеснения — это избавляет разработчика от ручного подсчёта дней по календарю.

Типичные ошибки и как проверить корректность расчёта

Большинство проблем с регистрами расчёта сводится к нескольким повторяющимся сценариям. Первая группа — ошибки настройки плана видов расчёта: не настроено вытеснение, не указаны базовые виды, неверная формула. Вторая группа — ошибки данных: у сотрудника не назначен график работы, не заполнены показатели (оклад, ставка), документ введён не тем периодом. Третья группа — ошибки кода в собственных разработках: расчёт не учитывает фактический период действия или читает базу за неверный интервал.

Проверку результата удобно вести по контрольным точкам:

Контрольные точки

Как проверить результат расчёта

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

Период оклада разбит на интервалы, дни больничного исключены

Тревожный признак

Оклад действует полный месяц параллельно с больничным — вытеснение не настроено

Сумма премии, зависящей от оклада
Норма

Премия равна проценту от фактически начисленного оклада

Тревожный признак

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

Таблица перерасчётов после изменения прошлого начисления
Норма

Появились записи о необходимости перерасчёта, после расчёта они очищены

Тревожный признак

Записи копятся и не обрабатываются — механизм перерасчёта не работает

Период регистрации доначисления
Норма

Доначисление за прошлый месяц зарегистрировано текущим периодом

Тревожный признак

Запись внесена прошлым периодом — сломается отчётность и средний заработок

При отладке расчёта удобно смотреть движения документа по регистру расчёта напрямую (в режиме предприятия — через «Ещё → Движения документа» или через консоль запросов к виртуальной таблице фактического периода действия). Это быстрее, чем искать ошибку в формулах вслепую: сначала проверьте, какие записи реально созданы, и только потом разбирайте логику их расчёта.
ПЗ
Практическое замечание

Когда регистр расчёта нужен, а когда нет

Не каждый расчёт требует регистра расчёта. Если сумма фиксируется один раз и не зависит от периода действия и других начислений — например, разовая выплата по приказу или штраф фиксированной суммой — достаточно регистра накопления или даже реквизита документа. Создание регистра расчёта ради простых фиксированных сумм усложняет конфигурацию без выигрыша.

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

Маршрут решения

Как выбрать механизм хранения

Начисления конкурируют за одни и те же дни (оклад против больничного)Используйте регистр расчёта с настроенным вытеснением
Сумма зависит от результатов других начислений (процент от оклада)Используйте регистр расчёта с зависимостью по базе
Нужно просто зафиксировать факт выплаты фиксированной суммыДостаточно регистра накопления или документа без регистра расчёта
Нужно хранить ставку, оклад или коэффициент на датуИспользуйте периодический регистр сведений — это источник данных, а не результат
Итог

Что важно запомнить

Регистр расчёта — объект для периодических начислений с вытеснением, базой и перерасчётами; он всегда связан с планом видов расчёта. Период действия отличается от периода регистрации, а корректность работы проверяется по фактическому периоду действия, сумме базы и таблице перерасчётов. Структуру регистра в рабочей базе меняют только после резервного копирования.

Частые вопросы

Чем план видов расчёта отличается от регистра расчёта?

План видов расчёта — это каталог видов начислений и удержаний с их формулами, вытеснением и зависимостями. Регистр расчёта — таблица, где хранятся конкретные рассчитанные записи по сотрудникам и периодам. План описывает «что и как считать», регистр хранит «сколько получилось».

Можно ли использовать регистр расчёта без вытеснения?

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

Что такое сторно в регистре расчёта?

Сторно — запись с отрицательным результатом, отменяющая ранее введённое начисление. Платформа поддерживает сторнирование: запись-сторно ссылается на исходную и обнуляет её эффект. Это корректный способ отменить ошибочное начисление вместо удаления записей из прошлых периодов.

Почему база по виду расчёта возвращает ноль?

Частые причины: нужный вид расчёта не добавлен в список базовых в плане видов расчёта; базовый период в запросе не пересекается с периодом действия записей; базовые записи ещё не рассчитаны (результат пустой). Проверяйте в этом порядке.

Где смотреть регистры расчёта в типовой 1С:ЗУП?

Основной регистр — «Начисления и удержания по сотрудникам» и связанные регистры расчёта. Движения конкретного документа видны из формы документа через меню показа движений. Для анализа по сотруднику используются отчёты «Расчётный листок» и «Полная сводка начислений».

Можно ли вручную исправить запись регистра расчёта?

Технически — через документ корректировки или ручную операцию, если конфигурация это предусматривает. Прямое редактирование записей в обход документов не рекомендуется: нарушится связь с перерасчётами, отчётностью и средним заработком. Правильный путь — сторно или корректирующий документ.