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

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

Для чего предназначен регистр расчета в 1С

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

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

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

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

Какую задачу решает регистр расчета

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

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

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

Из чего состоит регистр расчета

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

  • Измерения — разрезы учета, чаще всего «Сотрудник», «Физическое лицо» или «Подразделение». По измерениям строится вытеснение и расчет базы.
  • Ресурсы — числовые результаты расчета: «Результат», «Сумма», «Отработано дней».
  • Реквизиты — дополнительные данные записи, например график работы или параметры расчета.
  • Период действия и период регистрации — служебные даты. Период действия показывает, за какой интервал действует начисление, период регистрации — когда оно внесено в учет.

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

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

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

КритерийРегистр расчетаРегистр накопления
НазначениеНачисления и удержания с расчетом по формуламУчет остатков и оборотов (товары, деньги)
ПериодичностьПериод действия и период регистрацииМомент времени документа
Вытеснение видовПоддерживается платформойОтсутствует
Расчет базыВстроенный механизмТолько запросами вручную
Типовое применениеЗарплата, отпускные, больничныеСклад, продажи, взаиморасчеты

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

Что выбрать для задачи

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

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

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

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

Как работают вытеснение и расчет базы

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

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

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

Как создать и настроить регистр расчета

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

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

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

Перерасчеты и их роль

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

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

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

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

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

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

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

Как проверить, что регистр расчета работает правильно

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

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

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

Оклад за полный месяц без отклонений
Норма

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

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

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

Больничный внутри месяца
Норма

Оклад уменьшен на дни болезни, фактический период разбит на интервалы

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

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

Премия процентом от оклада
Норма

База равна сумме окладных начислений за базовый период

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

База равна нулю или включает виды, не входящие в список базовых

Ввод документа задним числом
Норма

Записи попали в регистр перерасчета, после пересчета суммы обновились

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

Суммы в отчетах не изменились, регистр перерасчета пуст при наличии изменений

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

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

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

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

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

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

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

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

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

Почему вытеснение не срабатывает, хотя виды расчета настроены?

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

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

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

Можно ли изменить структуру регистра расчета в работающей базе?

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

Итог

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

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