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