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

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

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

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

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

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

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

Из каких элементов состоит регистр расчета

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

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

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

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

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

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

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

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

Как работает вытеснение и зависимость по периоду

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

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

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

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

Как настроить регистр расчета: порядок действий

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

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

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

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

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

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

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

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

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

Как выбрать тип регистра

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

Перерасчеты: зачем они нужны и как их проверить

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

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

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

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

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

Фактический период действия оклада при наличии отпуска
Норма

Интервал уменьшен на дни отпуска, сумма пропорциональна отработанным дням

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

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

База для расчета премии
Норма

Сумма базы равна итогу видов расчета, включенных в базовые

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

База пустая или включает лишние начисления

Таблица перерасчета после изменения прошлого периода
Норма

Появились записи зависимых видов расчета

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

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

Итог за месяц по сотруднику
Норма

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

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

Расхождения при пересекающихся видах расчета

Ограничения и типичные риски

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

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

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

Частые вопросы о регистре расчета

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

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

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

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

Чем вытеснение отличается от зависимости по базе?

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

Почему виртуальная таблица фактического периода действия возвращает несколько строк по одной записи?

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

Обязательно ли подключать механизм перерасчетов?

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

Можно ли хранить в регистре расчета удержания, например НДФЛ?

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

Итог

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

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