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