Если вы работаете в 1С:Предприятие и сталкиваетесь с начислением зарплаты, амортизацией, резервами или налогами, то термин «регистр расчета» вам точно знаком. Но что это такое на самом деле? Почему без него не обходится ни одна серьезная конфигурация — от 1С:Бухгалтерии до 1С:Зарплаты и Управления Персоналом?

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

Что такое регистр расчета в 1С и зачем он нужен

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

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

Где применяется регистр расчета?

  • 💰 Зарплата и кадры: начисление окладов, премий, больничных, отпускных, удержаний.
  • 📉 Бухгалтерский учет: амортизация основных средств, резервы под обесценение, отложенные налоговые активы.
  • 📑 Налоговый учет: расчет налога на прибыль, НДС, транспортного налога с учетом авансовых платежей.
  • 🏢 Управленческий учет: распределение затрат между подразделениями, расчет KPI сотрудников.

Без регистра расчета пришлось бы вручную создавать документы для каждого начисления, а при изменении данных (например, оклада) пересчитывать всё заново. С ним же система делает это автоматически — достаточно запустить регламентное задание или обновить данные.

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

Отличия регистра расчета от регистра накопления и регистра сведений

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

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

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

⚠️ Внимание: В некоторых конфигурациях (например, 1С:Бухгалтерия 8.3) регистры расчета могут называться по-другому — например, «Регистр бухгалтерии» или «Регистр налогового учета». Всегда проверяйте реальное назначение объекта в конфигураторе!

Структура регистра расчета: из чего он состоит

Регистр расчета в 1С состоит из нескольких ключевых элементов. Разберем их на примере типовой конфигурации 1С:Зарплата и Управление Персоналом:

  1. Измерения — это «координаты», по которым ведется расчет. Например:
    • 👤 Сотрудник — для кого ведется расчет.
    • 📅 МесяцНачисления — период, за который рассчитываются данные.
    • 🏢 Подразделение — где работает сотрудник.
  2. Ресурсы — собственно, те данные, которые рассчитываются. Например:
    • 💵 СуммаНачислено — итоговая сумма к выплате.
    • 📉 СуммаУдержано — НДФЛ, алименты и т.д.
  • Реквизиты — дополнительная информация, которая не участвует в расчетах, но нужна для анализа. Например:
    • 📝 ПричинаПересчета — почему был сделан перерасчет.
    • 🔄 СтатусВыплаты — выплачено или нет.
    • База расчета — ссылка на другой регистр или документ, от которого зависит текущий расчет. Например, начисление премии может зависеть от оклада (который хранится в другом регистре).

    Пример структуры регистра для начисления зарплаты:

    
    

    Измерения:

    - Сотрудник (СправочникСсылка.Сотрудники)

    - МесяцНачисления (Дата)

    - ВидНачисления (СправочникСсылка.ВидыНачислений)

    Ресурсы:

    - Сумма (Число, 15, 2)

    Реквизиты:

    - ДокументОснование (ДокументСсылка.НачислениеЗарплаты)

    - ДатаВыплаты (Дата)

    💡

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

    Как создать и настроить регистр расчета в 1С

    Создание регистра расчета происходит в Конфигураторе 1С. Рассмотрим пошаговую инструкцию:

    1. Откройте конфигуратор и перейдите в ветку Объекты конфигурации → Регистры расчета.
    2. Создайте новый регистр:
      • Укажите имя (например, НачислениеЗарплаты).
      • Выберите тип — Оборотный (если нужны остатки) или Без остатков.
      • Задайте Периодичность — например, Месяц.
  • Добавьте измерения, ресурсы и реквизиты (см. структуру выше).
  • Настройте график расчета:
    • Укажите, как часто нужно пересчитывать данные (например, При изменении базы).
    • Задайте Порядок расчета — что считать сначала (оклад или премии).
    • Создайте форму регистра (опционально) для удобного просмотра данных.

    Пример кода для создания регистра расчета через внешнюю обработку:

    
    

    Процедура СоздатьРегистрНачисленияЗарплаты()

    НовыйРегистр = Метаданные.РегистрыРасчета.Создать();

    НовыйРегистр.Имя = "НачислениеЗарплаты";

    НовыйРегистр.Периодичность = ПериодичностьРегистра.Месяц;

    НовыйРегистр.Тип = ТипРегистраРасчета.Оборотный;

    // Добавляем измерение "Сотрудник"

    ИзмерениеСотрудник = НовыйРегистр.Измерения.Добавить();

    ИзмерениеСотрудник.Имя = "Сотрудник";

    ИзмерениеСотрудник.Тип = Тип("СправочникСсылка.Сотрудники");

    // Добавляем ресурс "Сумма"

    РесурсСумма = НовыйРегистр.Ресурсы.Добавить();

    РесурсСумма.Имя = "Сумма";

    РесурсСумма.Тип = Тип("Число", 15, 2);

    НовыйРегистр.Записать();

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

    Уточнить цели использования (зарплата, налоги, амортизация)|Проверить, нет ли аналогичного регистра в типовой конфигурации|Определить периодичность (день, месяц, квартал)|Продумать структуру измерений и ресурсов-->

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

    Примеры использования регистра расчета в типовых конфигурациях

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

    1. Начисление зарплаты в 1С:Зарплата и Управление Персоналом

    Здесь регистр расчета используется для:

    • 💵 Хранения начисленных сумм по каждому сотруднику и виду начисления (оклад, премия, больничный).
    • 🔄 Автоматического пересчета при изменении оклада, ставки НДФЛ или количества отработанных дней.
    • 📊 Формирования отчетов по ФОТ (фонду оплаты труда) с разбивкой по подразделениям.

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

    
    

    Движение.Регистр = РегистрыРасчета.НачисленияЗарплаты;

    Движение.Период = ДатаНачисления;

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

    Движение.ВидНачисления = ДокументОбъект.ВидНачисления;

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

    Движение.Записать();

    2. Амортизация основных средств в 1С:Бухгалтерия 8.3

    Регистр расчета здесь нужен для:

    • 📉 Ежемесячного начисления амортизации по каждому ОС.
    • 🔄 Корректировки сумм при изменении срока полезного использования или метода амортизации.
    • 📑 Автоматического формирования проводок в бухгалтерском и налоговом учете.

    Особенность: амортизация рассчитывается наконечно (по месяцам), а не нарастающим итогом, поэтому регистр обычно делают Без остатков.

    3. Резервы по сомнительным долгам

    В 1С:Управление торговлей регистр расчета применяют для:

    • 💸 Автоматического создания резервов по каждому контрагенту и договору.
    • 📅 Привязки резерва к периоду его формирования (квартал/год).
    • 🔄 Пересчета при изменении дебиторской задолженности или процента сомнительности.

    Пример структуры регистра для резервов:

    
    

    Измерения:

    - Контрагент (СправочникСсылка.Контрагенты)

    - Договор (СправочникСсылка.ДоговорыКонтрагентов)

    - ПериодРезерва (Дата)

    Ресурсы:

    - СуммаРезерва (Число, 15, 2)

    - ПроцентСомнительности (Число, 5, 2)

    Что будет, если не использовать регистр расчета для амортизации?

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

    1. Удалять все предыдущие начисления.

    2. Пересчитывать амортизацию заново с начала эксплуатации.

    3. Вручную корректировать проводки в бухгалтерском и налоговом учете.

    Это заняло бы часы работы бухгалтера и увеличило риск ошибок.

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

    Даже опытные пользователи и программисты 1С допускают ошибки при настройке регистров расчета. Вот самые распространенные:

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

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

      Решение: Выбирайте периодичность, соответствующую бизнес-процессу (например, Месяц для зарплаты).

    2. Отсутствие базы расчета

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

      Решение: Всегда заполняйте свойство БазаРасчета в настройках регистра.

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

      Добавление ненужных измерений (например, Организация, если она всегда одна) усложняет структуру и замедляет запросы.

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

    4. Неверный порядок расчета

      Если сначала рассчитать НДФЛ, а потом оклад, сумма удержания будет неверной.

      Решение: Настраивайте ПорядокРасчета так, чтобы сначала шли начисления, потом удержания.

    5. Игнорирование пересчета

      Если не настроить график пересчета, при изменении оклада зарплата за прошлые месяцы не обновится.

      Решение: Укажите ПересчитыватьПриИзмененииБазы = Истина.

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

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

    Если вы подозреваете, что в регистре расчета есть ошибки, воспользуйтесь этими методами:

    1. Просмотр движений документа

    Откройте документ (например, Начисление зарплаты) и посмотрите, какие движения он сформировал в регистре:

    • 🔍 Перейдите в форму документа.
    • 📋 Нажмите Действия → Показать движения.
    • 🔎 Выберите регистр расчета из списка.

    2. Отчет «Анализ регистра расчета»

    В типовых конфигурациях есть стандартный отчет для анализа:

    • 📊 Откройте Отчеты → Анализ регистра расчета.
    • 📅 Укажите период и фильтры (например, по сотруднику или виду начисления).
    • 📈 Проверьте, совпадают ли суммы с ожидаемыми.

    3. Запрос к регистру через «1С:Предприятие»

    Используйте встроенный конструктор запросов или напишите код:

    
    

    Запрос = Новый Запрос;

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

    "ВЫБРАТЬ

    | НачислениеЗарплаты.Сотрудник КАК Сотрудник,

    | НачислениеЗарплаты.Период КАК Период,

    | НачислениеЗарплаты.ВидНачисления КАК ВидНачисления,

    | НачислениеЗарплаты.Сумма КАК Сумма

    |ИЗ

    | РегистрРасчета.НачислениеЗарплаты КАК НачислениеЗарплаты

    |ГДЕ

    | НачислениеЗарплаты.Период МЕЖДУ &НачалоПериода И &КонецПериода

    | И НачислениеЗарплаты.Сотрудник = &Сотрудник";

    Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));

    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));

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

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

    4. Исправление ошибок

    Если данные неверные, есть два способа:

    • 🔄 Пересчитать регистр:
      • Используйте обработку Пересчет регистров расчета (есть в типовых конфигурациях).
      • Укажите период и виды расчетов, которые нужно обновить.
    • 🧹 Ручная корректировка:
      • Создайте документ Корректировка регистров.
      • Укажите регистр, период и новые значения.
      • Осторожно: это может нарушить целостность данных!
    💡

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

    FAQ: Частые вопросы по регистрам расчета в 1С

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

    Технически можно, но это сильно усложнит работу. Регистр накопления не умеет:

    • Автоматически пересчитывать данные при изменении условий (например, оклада).
    • Хранить историю изменений с привязкой к периодам.
    • Поддерживать сложные алгоритмы расчета (например, зависимость премии от КPI).

    Для зарплаты, налогов и амортизации регистр расчета — оптимальное решение.

    Как перенести данные из одного регистра расчета в другой?

    Есть несколько способов:

    1. Через обработку: напишите код, который читает данные из одного регистра и записывает в другой.
    2. Через универсальный отчет: экспортируйте данные в Excel, а затем импортируйте в новый регистр.
    3. Через обмен данными: если регистры в разных базах, используйте Универсальный формат обмена.

    Пример кода для переноса:

    
    

    Процедура ПеренестиДанныеИзРегистра1ВРегистр2()

    Запрос = Новый Запрос;

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

    "ВЫБРАТЬ

    | СтарыйРегистр.Сотрудник КАК Сотрудник,

    | СтарыйРегистр.Период КАК Период,

    | СтарыйРегистр.Сумма КАК Сумма

    |ИЗ

    | РегистрРасчета.СтарыйРегистр КАК СтарыйРегистр";

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

    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл

    Движение = РегистрыРасчета.НовыйРегистр.СоздатьДвижение();

    Движение.Период = Выборка.Период;

    Движение.Сотрудник = Выборка.Сотрудник;

    Движение.Сумма = Выборка.Сумма;

    Движение.Записать();

    КонецЦикла;

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

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

    Причины могут быть такими:

    • Не настроен график пересчета (проверьте свойство ПересчитыватьПриИзмененииБазы).
    • Отключено регламентное задание Пересчет регистров расчета.
    • Нет прав у пользователя на пересчет (проверьте роли).
    • В коде документа не прописаны движения по регистру.

    Чтобы проверить, запустите пересчет вручную через обработку Пересчет регистров расчета.

    Как очистить регистр расчета от старых данных?

    Для очистки:

    1. Используйте обработку Удаление помеченных объектов (если данные помечены на удаление).
    2. Напишите запрос с методом Очистить():
      РегистрыРасчета.НачислениеЗарплаты.Очистить(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата()));
    3. В типовых конфигурациях есть отчет Поиск и удаление данных.

    Важно: перед очисткой сделайте резервную копию базы!

    Можно ли в регистре расчета хранить данные не по месяцам, а по дням?

    Да, но это не всегда целесообразно. При настройке Периодичность = День:

    • ✅ Плюсы: можно хранить данные с точной привязкой к дате (например, для почасовых начислений).
    • ❌ Минусы:
      • Увеличивается объем базы данных.
      • Замедляется работа отчетов и запросов.
      • Сложнее поддерживать (например, при переносе данных между периодами).

    Оптимальный вариант — использовать Периодичность = Месяц, а при необходимости добавлять реквизит ДатаНачисления.