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

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

Регистр расчета в 1С: для чего нужен и как с ним работать

Регистр расчета в 1С: назначение, виды расчетов, период действия, вытеснение, перерасчеты. Практические примеры настройки и типичные ошибки разработчиков.

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

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

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

Из чего состоит регистр расчета и как он устроен

Регистр расчета не существует отдельно: он жестко связан с планом видов расчета, который задается в свойстве «Вид расчета» на вкладке «Основные» в конфигураторе. План видов расчета хранит перечень начислений и удержаний (оклад, премия, НДФЛ, алименты) и их взаимосвязи: ведущие, вытесняющие и базовые виды расчета. Без плана видов расчета регистр расчета создать нельзя.

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

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

Зачем нужен период действия и как работает вытеснение

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

Вытеснение — механизм, при котором один вид расчета замещает другой на пересекающемся периоде. Классический пример: больничный вытесняет оплату по окладу. Если сотрудник болел с 10 по 15 число, начисление по окладу за этот интервал не должно учитываться. Платформа автоматически рассчитывает фактический период действия записи по окладу — он разбивается на два фрагмента: с 1 по 9 и с 16 по конец месяца.

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

Расчет по базе: премии, районные коэффициенты и зависимые начисления

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

Для получения базы используются виртуальные таблицы «БазаОсновныеНачисления» и подобные (имя зависит от конфигурации). В параметрах виртуальной таблицы указываются измерения основного и базового регистров и разрезы, по которым нужна детализация. Результат — готовая сумма базы, которую остается умножить на процент или коэффициент.

Важно понимать различие базы по периоду регистрации и по периоду действия. База по периоду регистрации берет все записи, внесенные в указанный месяц; база по периоду действия — записи, относящиеся к указанному интервалу дат, даже если внесены они позже. Для премий за прошлый месяц корректна база по периоду действия, иначе доначисления «задним числом» выпадут из расчета.

Перерасчеты: как платформа отслеживает устаревшие результаты

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

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

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

Когда регистр расчета не нужен: альтернативы и границы применения

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

Выбор инструмента под задачу

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

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

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

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

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

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

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

Типичные ошибки при работе с регистром расчета

Типичные ошибки
01
Расчет оклада по основной таблице вместо виртуальной «ФактическийПериодДействия» — при больничных и отпусках сумма завышается, потому что вытеснение не учтено.
02
Отсутствие базовых видов расчета в плане видов расчета — премия считается от нулевой базы, и ошибка обнаруживается только при выплате.
03
Неверный выбор базы по периоду регистрации вместо периода действия — доначисления за прошлые месяцы не попадают в расчет премии.
04
Игнорирование таблицы перерасчетов — после изменения окладов премии остаются посчитанными по старым данным.
05
Обращение к виртуальным таблицам в цикле по сотрудникам — резкое падение производительности на больших базах.
06
Хранение результатов в реквизитах вместо ресурсов — суммы недоступны для итоговых запросов и отчетов.

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

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

Как проверить корректность настройки

Вытеснение
Норма

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

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

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

База премии
Норма

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

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

База равна нулю или включает лишние виды расчета

Перерасчеты
Норма

После изменения оклада запись премии появляется в таблице перерасчета

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

Таблица перерасчетов пуста при изменении исходных данных

Часто задаваемые вопросы

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

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

Можно ли использовать несколько регистров расчета в одной конфигурации?

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

Почему фактический период действия пуст, хотя записи в регистре есть?

Чаще всего причина в том, что у вида расчета не заполнен список вытесняющих либо не включено использование периода действия в свойствах регистра. Виртуальная таблица фактического периода строится только при корректной настройке вытеснения в плане видов расчета.

Как влияет изменение записей «задним числом» на расчеты?

Запись, внесенная прошлым периодом регистрации, меняет базу зависимых расчетов и может вытеснить существующие начисления. Если настроены перерасчеты, платформа зафиксирует устаревшие записи; если нет — зависимые суммы останутся некорректными до ручного перепроведения документов.

Нужен ли регистр расчета для учета в небольшой фирме с фиксированными окладами?

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

Итог

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

Регистр расчета в 1С — инструмент для зарплатных и подобных периодических расчетов. Его ценность — встроенные механизмы периода действия, вытеснения, базы и перерасчетов, настраиваемые через план видов расчета. Корректная настройка этих связей и работа через виртуальные таблицы — главное условие точных начислений.