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

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

Для чего нужны регистры расчета в 1С

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

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

Главное отличие регистра расчета от регистра накопления или сведений — встроенные механизмы сложных расчетов. Запись регистра «знает» свой вид расчета, период действия, период регистрации и может автоматически получать базу — сумму результатов других видов расчета, на которых она основана. Это позволяет описывать зависимости вида «премия = процент от оклада» декларативно, через план видов расчета, а не кодом.

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

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

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

У каждой записи регистра расчета есть два периода. Период регистрации — когда запись внесена в систему (обычно месяц начисления). Период действия — интервал, за который выполнен расчет, например с 10 по 20 число для больничного. Это различие позволяет корректно считать суммы, когда расчет внесен задним числом или «лесенкой» перекрывает другие периоды.

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

Ключевые механизмы: база, вытеснение, перерасчеты

Зависимость по базе решает задачу «премия считается от оклада». В плане видов расчета у премии указывается список базовых видов расчета. При расчете записи платформа автоматически собирает сумму результатов этих видов за период базы и подставляет в формулу. Изменился оклад — достаточно пересчитать зависимые записи, база обновится без ручного поиска сумм.

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

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

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

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

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

Движения в регистр расчета формирует документ-регистратор, например «Начисление зарплаты». Сам расчет сумм обычно выполняется в модуле объекта документа или общем модуле: записи добавляются, вызывается метод расчета, результат записывается в ресурс.

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

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

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

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

Как выбрать объект метаданных

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

Практический пример: начисление премии от оклада

Типовой сценарий: в плане видов расчета «ОсновныеНачисления» созданы виды расчета «Оклад» и «ПремияПроцентом». У премии в списке базовых указан оклад, формула — Результат = База * Процент / 100. Документ «НачислениеЗарплаты» формирует движения по обоим видам расчета за месяц.

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

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

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

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

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

Типичные ошибки
01
Расчет базы ручным запросом вместо встроенного механизма — суммы не учитывают фактический период действия и сторно
02
Путаница периода регистрации и периода действия — начисления попадают не в тот месяц
03
Игнорирование таблицы перерасчетов — после изменений задним числом зависимые записи остаются устаревшими
04
Ненастроенное вытеснение в плане видов расчета — оклад начисляется за дни больничного или отпуска
05
Использование регистра расчета для простых сумм без зависимостей — избыточная сложность конфигурации

Проверка корректности расчетов

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

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

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

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

База премии за месяц
Норма

Равна результату оклада за фактический период действия

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

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

Оклад при больничном в середине месяца
Норма

Начислен только за дни вне больничного

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

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

Изменение данных задним числом
Норма

Зависимые записи появляются в таблице перерасчетов

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

Перерасчеты пусты — зависимость по базе не настроена

Период действия записи
Норма

Совпадает с реальным интервалом начисления

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

Период действия равен периоду регистрации при расчете за другой интервал

Ограничения и альтернативы

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

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

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

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

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

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

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

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

Что такое перерасчет и когда он возникает?

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

Подходит ли регистр расчета для учета комиссии менеджеров?

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

Как исправить ситуацию, когда вытеснение не работает?

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

Итог

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

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