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