Если вы работаете с 1С:Предприятие и сталкиваетесь с задачами учета зарплаты, начислений, удержаний или любых периодических расчетов, то без регистра расчета не обойтись. Этот объект конфигурации часто вызывает вопросы у начинающих специалистов: зачем он нужен, если есть регистры накопления или сведений? Ответ прост: регистр расчета — это уникальный инструмент для работы с динамическими данными, которые меняются во времени и требуют точного отслеживания истории изменений.

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

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

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

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

Основные отличия регистра расчета:

  • 📅 Периодичность: данные всегда привязаны к дате начала и конца действия (например, начисление премии действует с 01.01.2026 по 31.01.2026).
  • 🔄 Динамика изменений: позволяет отслеживать историю изменений показателя (например, как менялась ставка сотрудника за год).
  • 📊 Расчетные механизмы: поддерживает встроенные функции для перерасчета данных при изменении параметров (например, пересчет отпускных при изменении оклада).
  • 🔗 Связь с документами: обычно заполняется на основании документов (например, документ "Начисление зарплаты" записывает данные в регистр).

Простой пример: если сотрудник получал оклад 50 000 рублей с 01.01.2026, а с 01.03.2026 его повысили до 60 000 рублей, регистр расчета сохранит обе записи с указанием периодов действия. Это позволяет в любой момент времени узнать, какая ставка действовала на конкретную дату.

📊 Как часто вы работаете с регистрами расчета в 1С?
Ежедневно
Несколько раз в неделю
Редко, только при настройке
Никогда не использовал

Где применяются регистры расчета: реальные примеры

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

1. Зарплатные начисления и удержания

  • 💰 Оклады сотрудников — хранение истории изменений ставок с привязкой к датам.
  • 🎁 Премии и надбавки — учет разовых или регулярных выплат (например, квартальные премии).
  • 📉 Удержания — алименты, профсоюзные взносы, возврат займов.

2. Учет времени и графиков работы

  • Графики работы — фиксация изменений в расписании сотрудников (например, переход с 5-дневки на сменный график).
  • 🏖️ Отпуска и больничные — расчет среднего заработка с учетом периодов нетрудоспособности.

3. Амортизация и износ основных средств

  • 🏗️ Начисление амортизации — ежемесячный расчет износа оборудования с учетом изменений в составе ОС.
  • 🔧 Модернизация и ремонт — корректировка амортизационных отчислений после улучшений.

4. Налоги и страховые взносы

  • 📋 НДФЛ и взносы — расчет удержаний с учетом изменений в законодательстве (например, повышение ставки взносов с 2026 года).
  • 🏛️ Льготы и вычеты — учет периодов действия налоговых льгот для сотрудников.

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

💡

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

Структура регистра расчета: измерения, ресурсы, реквизиты

Чтобы правильно настроить регистр расчета, нужно понимать его структуру. Он состоит из трех основных компонентов:

  1. Измерения — определяют, по каким признакам группируются данные (например, "Сотрудник", "Подразделение", "Вид начисления").
  2. Ресурсы — хранят количественные показатели (например, "Сумма", "Количество дней", "Процент").
  3. Реквизиты — дополнительные атрибуты записей (например, "Причина изменения", "Документ-основание").

Рассмотрим структуру на примере регистра "Начисления сотрудников":

Тип Наименование Тип данных Пример значения
Измерение Сотрудник СправочникСсылка.Сотрудники Иванов И.И.
Измерение ВидНачисления ПланВидовРасчета.ВидыНачислений Оклад
Ресурс Сумма Число(15, 2) 50 000,00
Ресурс КоличествоДней Число(5, 0) 22
Реквизит ДокументОснование ДокументСсылка.ПриказОПриемеНаРаботу Приказ №123 от 01.01.2026

Важно правильно выбрать периодичность регистра:

  • 📅 В пределах дня — если данные могут меняться несколько раз в день (редко используется).
  • 📆 По позиции регистратора — если период действия определяется документом (например, приказ о повышении оклада действует с даты документа).
  • 🔄 Непериодический — если данные не имеют временных границ (практически не применяется в регистрах расчета).

Что будет, если неправильно выбрать периодичность?

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

Как создать и настроить регистр расчета: пошаговая инструкция

Создание регистра расчета в конфигураторе 1С состоит из нескольких этапов. Рассмотрим процесс на примере регистра для учета окладов сотрудников.

Шаг 1. Создание объекта конфигурации

  1. Откройте конфигуратор 1С в режиме редактирования.
  2. Перейдите в ветку Объекты конфигурации → Регистры расчета.
  3. Нажмите "Добавить" и укажите имя регистра, например, ОкладыСотрудников.

Шаг 2. Настройка измерений

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

Шаг 3. Определение ресурсов

  • Создайте ресурс СуммаОклада с типом Число(15, 2).
  • Добавьте ресурс ДатаНачалаДействия (если нужно отслеживать дату вступления оклада в силу отдельно от периода регистра).

Шаг 4. Настройка периодичности

  • Выберите периодичность По позиции регистратора.
  • Укажите регистратор — документ, который будет записывать данные в регистр (например, ПриказОПриемеНаРаботу или КадровоеПеремещение).

Шаг 5. Заполнение модуля регистра

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда

Для Каждого Строка Из Движения.ОкладыСотрудников Цикл

Строка.СуммаОклада = Справочники.Должности.НайтиПоНаименованию(Строка.Должность).ОкладПоУмолчанию;

КонецЦикла;

КонецЕсли;

КонецПроцедуры

✅ Указаны все необходимые измерения (сотрудник, вид начисления и т.д.)

✅ Ресурсы имеют корректные типы данных (число, дата)

✅ Выбрана правильная периодичность (обычно "По позиции регистратора")

✅ Привязан регистратор (документ, который будет записывать движения)

✅ Проверена логика заполнения в модуле регистра-->

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

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

1. Неправильная периодичность

Если выбрать периодичность В пределах дня для данных, которые меняются раз в месяц (например, оклады), система будет создавать избыточные записи. Это приведет к:

  • 🐢 Замедлению работы базы из-за большого объема данных.
  • 🔍 Сложностям при аналитике (придется агрегировать данные по дням).

Решение: Для большинства зарплатных регистров оптимальна периодичность По позиции регистратора.

2. Отсутствие связи с документами

Если не указать регистратор (документ, который записывает движения), данные в регистр придется вводить вручную. Это чревато:

  • ❌ Ошибками при вводе (опечатки в суммах, датах).
  • ⏳ Потерей времени на рутинные операции.

Решение: Всегда привязывайте регистр к документу (например, НачислениеЗарплаты или КадровоеПеремещение).

3. Избыточные измерения

Добавление лишних измерений (например, "Месяц" в регистр окладов) усложняет структуру и увеличивает объем данных. Это:

  • 📈 Увеличивает размер базы.
  • 🤯 Затрудняет написание запросов.

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

4. Неучет истории изменений

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

  • 📊 Пересчитать зарплату за прошлые периоды.
  • 📈 Проанализировать динамику изменений.

Решение: Всегда проверяйте, что регистр сохраняет предыдущие значения при изменении данных.

💡

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

⚠️ Внимание: Если регистр расчета используется в типовых конфигурациях (например, 1С:Зарплата и Управление Персоналом 3.1), его структура может обновляться при выпуске новых релизах. Перед изменением стандартных регистров проверьте, не затронет ли это работу обновлений.

Примеры запросов к регистру расчета

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

1. Получение текущего оклада сотрудника

Чтобы узнать актуальный оклад сотрудника на сегодняшнюю дату, используйте запрос:

Выбрать

ОкладыСотрудников.СуммаОклада Как Оклад

Из

РегистрРасчета.ОкладыСотрудников.СрезПоследних(&ТекущаяДата, ) Как ОкладыСотрудников

Где

ОкладыСотрудников.Сотрудник = &Сотрудник

Где:

  • &ТекущаяДата — параметр с текущей датой.
  • &Сотрудник — ссылка на сотрудника.

2. История изменений оклада за год

Чтобы проанализировать, как менялся оклад сотрудника за последний год:

Выбрать

ОкладыСотрудников.Период Как ДатаИзменения,

ОкладыСотрудников.СуммаОклада Как Оклад,

ОкладыСотрудников.ДокументОснование Как Основание

Из

РегистрРасчета.ОкладыСотрудников Как ОкладыСотрудников

Где

ОкладыСотрудников.Сотрудник = &Сотрудник

И ОкладыСотрудников.Период Между &ДатаНачала И &ДатаКонца

Упорядочить По

ОкладыСотрудников.Период

3. Сравнение окладов по подразделениям

Для анализа средних окладов по отделам:

Выбрать

ОкладыСотрудников.Подразделение Как Подразделение,

Среднее(ОкладыСотрудников.СуммаОклада) Как СреднийОклад,

Количество(Различные ОкладыСотрудников.Сотрудник) Как КоличествоСотрудников

Из

РегистрРасчета.ОкладыСотрудников.СрезПоследних(&ТекущаяДата, ) Как ОкладыСотрудников

Группировать По

ОкладыСотрудников.Подразделение

Упорядочить По

СреднийОклад Убыв

4. Поиск сотрудников с окладом ниже среднего

Чтобы найти сотрудников, чей оклад ниже среднего по компании:

Выбрать

ОкладыСотрудников.Сотрудник Как Сотрудник,

ОкладыСотрудников.СуммаОклада Как Оклад

Из

РегистрРасчета.ОкладыСотрудников.СрезПоследних(&ТекущаяДата, ) Как ОкладыСотрудников

Где

ОкладыСотрудников.СуммаОклада < (

Выбрать

Среднее(Оклады.СуммаОклада)

Из

РегистрРасчета.ОкладыСотрудников.СрезПоследних(&ТекущаяДата, ) Как Оклады

)

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

Интеграция регистра расчета с другими объектами 1С

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

1. Связь с документами

Основной способ заполнения регистра — через документы. Например:

  • 📄 Приказ о приеме на работу — записывает начальный оклад сотрудника.
  • 📄 Кадровое перемещение — изменяет оклад при переводе на другую должность.
  • 📄 Начисление зарплаты — использует данные регистра для расчета выплат.

2. Взаимодействие с регистрами накопления

Регистры расчета часто используются вместе с регистрами накопления для комплексного учета. Например:

  • 💰 Регистр накопления "ЗарплатаКВыплате" — хранит обороты по начислениям и удержаниям.
  • 📊 Регистр расчета "ОкладыСотрудников" — предоставляет данные для расчета оборотов.

3. Использование в отчетах

Данные регистра расчета часто выводятся в отчетах, таких как:

  • 📈 Анализ фонда оплаты труда — динамика изменений окладов по подразделениям.
  • 📊 Сравнительная ведомость — сопоставление плановых и фактических начислений.
  • 📋 Личная карточка сотрудника — история изменений зарплаты конкретного человека.

4. Автоматическое заполнение на основании справочников

Иногда данные в регистр расчета заполняются автоматически на основании справочников. Например:

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

Пример кода для автоматического заполнения оклада из справочника должностей:

Процедура ПриЗаписи(Отказ)

Если Новый Тогда

Должность = Справочники.Должности.НайтиПоНаименованию(Объект.Должность);

Если Не Должность.Пустая() Тогда

Движение = Движения.ОкладыСотрудников.Добавить();

Движение.Период = Объект.ДатаПриема;

Движение.Сотрудник = Объект.Сотрудник;

Движение.СуммаОклада = Должность.ОкладПоУмолчанию;

Движение.ДокументОснование = Объект.Ссылка;

КонецЕсли;

КонецЕсли;

КонецПроцедуры

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

FAQ: Ответы на частые вопросы о регистрах расчета

🔹 Зачем нужен регистр расчета, если есть регистр накопления?

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

🔹 Можно ли обойтись без регистра расчета и хранить данные в регистре сведений?

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

🔹 Как исправить ошибку, если в регистр записались неверные данные?

Есть два способа:

  1. Ручная корректировка: создать документ-корректировку (например, "Изменение оклада") с правильными данными. Система автоматически пересчитает зависимые показатели.
  2. Программная правка: написать обработку, которая найдет ошибочные записи и заменит их. Например:
    Запрос = Новый Запрос;
    

    Запрос.Текст =

    "Выбрать

    | ОкладыСотрудников.Ссылка Как Ссылка

    |Из

    | РегистрРасчета.ОкладыСотрудников Как ОкладыСотрудников

    |Где

    | ОкладыСотрудников.Сотрудник = &Сотрудник

    | И ОкладыСотрудников.Период = &ДатаОшибки";

    Запрос.УстановитьПараметр("Сотрудник", Сотрудник);

    Запрос.УстановитьПараметр("ДатаОшибки", ДатаОшибки);

    Результат = Запрос.Выполнить();

    Если Результат.Пустой() Тогда

    Сообщить("Ошибочных записей не найдено!");

    Иначе

    Для Каждого Строка Из Результат Цикл

    Движение = Движения.ОкладыСотрудников.НайтиПоСсылке(Строка.Ссылка);

    Движение.СуммаОклада = ПравильноеЗначение;

    КонецЦикла;

    КонецЕсли;

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

🔹 Почему при изменении оклада не пересчитываются прошлые начисления?

Это происходит, если:

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

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

🔹 Можно ли экспортировать данные из регистра расчета в Excel?

Да, для этого можно:

  1. Использовать стандартный отчет 1С с выводом в Excel (например, "Анализ окладов").
  2. Написать обработку для выгрузки данных через Запрос и ПолеExcel:
Запрос = Новый Запрос;

Запрос.Текст =

"Выбрать

| ОкладыСотрудников.Сотрудник Как Сотрудник,

| ОкладыСотрудников.Период Как Дата,

| ОкладыСотрудников.СуммаОклада Как Оклад

|Из

| РегистрРасчета.ОкладыСотрудников Как ОкладыСотрудников

|Упорядочить По

| ОкладыСотрудников.Сотрудник,

| ОкладыСотрудников.Период";

Результат = Запрос.Выполнить();

ТаблицаExcel = Новый ТаблицаЗначений;

ТаблицаExcel.Колонки.Добавить("Сотрудник");

ТаблицаExcel.Колонки.Добавить("Дата");

ТаблицаExcel.Колонки.Добавить("Оклад");

Пока Результат.Следующий() Цикл

Строка = ТаблицаExcel.Добавить();

Строка.Сотрудник = Результат.Сотрудник;

Строка.Дата = Результат.Дата;

Строка.Оклад = Результат.Оклад;

КонецЦикла;

ЭкспортExcel = Новый ЭкспортExcel;

ЭкспортExcel.УстановитьДанные(ТаблицаExcel);

ЭкспортExcel.СохранитьКак("C:\Оклады.xlsx");