← Назад к вопросам

Что такое базовые виды расчётов?

1.0 Junior🔥 111 комментариев
#Регистры

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Базовые виды расчётов в 1С

Базовые виды расчётов — это механизм в 1С для управления различными типами начислений и вычетов в модулях зарплаты и кадровых систем. Это фундаментальный компонент для автоматизации расчётной деятельности.

Определение

Базовый вид расчёта — это шаблон для одного типа начисления или вычета (зарплата, премия, налог, взнос в ПФ и т.д.), который определяет:

  • Как вычисляется (формула)
  • Когда вычисляется (в какие периоды)
  • На кого распространяется (категория сотрудников)
  • Зависимости от других расчётов

Структура базового вида расчёта

// Справочник: Справочники.БазовыеВидыРасчётов

// Пример: "Оклад" (базовый вид расчёта)

// Поля:
Наименование = "Оклад" // "Оклад", "Премия", "Налог на доходы физических лиц"
Тип = "Начисление" // "Начисление" или "Вычет"
Периодичность = ПериодичностьРасчёта.Ежемесячно // как часто начисляется
Формула = "Оклад" // или "Оклад * 0.13" для налогов
ЗависимостиРасчётов = [...] // какие расчёты должны быть выполнены до этого

Иерархия видов расчётов

Базовые виды расчётов
├── Начисления
│   ├── Оклад
│   ├── Премия
│   ├── Бонус
│   ├── Доплаты
│   │   ├── За сложность
│   │   └── За опасность
│   └── Компенсации
│       └── За отпуск
│
└── Вычеты
    ├── Налог на доходы физических лиц (НДФЛ)
    ├── Взносы в Пенсионный фонд
    ├── Взносы в Фонд социального страхования
    ├── Алименты
    └── Превышение оклада

Примеры базовых видов расчётов

1. Оклад (начисление)

// Справочник: Справочники.БазовыеВидыРасчётов

// Объект "Оклад"
Оклад = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("Оклад");

Оклад.Тип = "Начисление"; // это начисление, не вычет
Оклад.Периодичность = "Ежемесячно"; // каждый месяц
Оклад.Формула = "Оклад"; // ссылка на реквизит сотрудника
Оклад.БазовыйВидРасчета = Неопределено; // не зависит от других
Оклад.Описание = "Основное жалованье сотрудника";

Оклад.Записать();

2. НДФЛ (вычет, зависит от оклада)

// Справочник: Справочники.БазовыеВидыРасчётов

НДФЛ = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("НДФЛ");

НДФЛ.Тип = "Вычет"; // это вычет
НДФЛ.Периодичность = "Ежемесячно";
НДФЛ.Формула = "Оклад * 0.13"; // 13% от оклада
НДФЛ.БазовыйВидРасчета = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("Оклад");
// Зависит от оклада! Вычисляется ПОСЛЕ оклада
НДФЛ.Описание = "Налог на доходы физических лиц (13%)";

НДФЛ.Записать();

3. Премия (начисление, условное)

// Справочник: Справочники.БазовыеВидыРасчётов

Премия = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("Премия");

Премия.Тип = "Начисление";
Премия.Периодичность = "Квартально"; // раз в квартал
Премия.Формула = "Оклад * Коэффициент_Премии"; // по коэффициенту
Премия.БазовыйВидРасчета = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("Оклад");
Премия.Условие = "Отсутствие_Прогулов"; // условие начисления

Премия.Записать();

Где используются базовые виды расчётов

1. В расчётных листах

// Документ: Документы.РасчетныйЛист
// Каждый месяц создаётся расчётный лист для сотрудника

РасчетныйЛист = Документы.РасчетныйЛист.СоздатьДокумент();
РасчетныйЛист.Сотрудник = Сотрудник;
РасчетныйЛист.Период = Дата;

// Добавить расчёты на основе базовых видов
Строка = РасчетныйЛист.Расчеты.Добавить();
Строка.БазовыйВидРасчета = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("Оклад");
Строка.Сумма = 50000; // оклад сотрудника

Строка2 = РасчетныйЛист.Расчеты.Добавить();
Строка2.БазовыйВидРасчета = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("НДФЛ");
Строка2.Сумма = 50000 * 0.13; // вычислено автоматически

РасчетныйЛист.Провести();

2. В регистрах расчётов

// Регистр сведений: РегистрыСведений.РасчётыСотрудников
// Хранит историю всех расчётов

ЗаписьРасчёта = РегистрыСведений.РасчётыСотрудников.СоздатьМенеджерЗаписи();
ЗаписьРасчёта.Период = Дата;
ЗаписьРасчёта.Сотрудник = Сотрудник;
ЗаписьРасчёта.БазовыйВидРасчета = Справочники.БазовыеВидыРасчётов.НайтиПоНаименованию("Оклад");
ЗаписьРасчёта.Сумма = 50000;
ЗаписьРасчёта.Записать();

3. В формировании отчётов

// Отчёт: Расчёт зарплаты по видам

Процедура СформироватьОтчётРасчётов()
    
    Запрос = Новый Запрос(
        "SELECT 
            ВидРасчета,
            SUM(Сумма) as Итого
         FROM РегистрыСведений.РасчётыСотрудников
         WHERE Период >= &ДатаНач AND Период <= &ДатаКон
         GROUP BY ВидРасчета"
    );
    
    Результат = Запрос.Выполнить();
    
    // Результат покажет:
    // Оклад: 500,000 руб
    // Премия: 50,000 руб
    // НДФЛ: -71,500 руб
    // Взносы: -39,000 руб
    // К выплате: 439,500 руб
    
КонецПроцедуры

Порядок вычисления расчётов

// Платформа вычисляет в правильном порядке:

1. Вычисляются базовые виды (независимые)
   ├─ Оклад
   ├─ Премия (если условие выполнено)
   └─ Компенсации

2. Затем вычисляются виды, зависящие от базовых
   ├─ НДФЛ (зависит от Оклада)
   └─ Взносы (зависят от Оклада)

3. Вычисляются итоги
   └─ Сумма к выплате = Начисления - Вычеты

Практический пример: расчёт зарплаты

Процедура РассчитатьЗарплату(Сотрудник, ПериодОт, ПериодДо) Экспорт
    
    // Шаг 1: Загрузить базовые виды расчётов
    БазовыеВиды = Справочники.БазовыеВидыРасчётов.ВыбратьВсе();
    
    // Шаг 2: Создать расчётный лист
    РасчетныйЛист = Документы.РасчетныйЛист.СоздатьДокумент();
    РасчетныйЛист.Сотрудник = Сотрудник;
    РасчетныйЛист.ПериодОт = ПериодОт;
    РасчетныйЛист.ПериодДо = ПериодДо;
    
    ОкладПо = ПолучитьОклад(Сотрудник);
    БольничныхДней = ПолучитьБольничныхДней(Сотрудник, ПериодОт, ПериодДо);
    ОтпускныхДней = ПолучитьОтпускныхДней(Сотрудник, ПериодОт, ПериодДо);
    
    // Шаг 3: Добавить начисления
    СтрокаОклад = РасчетныйЛист.Расчеты.Добавить();
    СтрокаОклад.БазовыйВидРасчета = БазовыеВиды.НайтиПоНаименованию("Оклад");
    СтрокаОклад.Сумма = ОкладПо * ((25 - БольничныхДней - ОтпускныхДней) / 25);
    // Пропорционально отработанным дням
    
    СтрокаПремия = РасчетныйЛист.Расчеты.Добавить();
    СтрокаПремия.БазовыйВидРасчета = БазовыеВиды.НайтиПоНаименованию("Премия");
    СтрокаПремия.Сумма = ОкладПо * 0.2; // 20% премии
    
    // Шаг 4: Добавить вычеты (они вычисляются от начисленных сумм)
    СтрокаНДФЛ = РасчетныйЛист.Расчеты.Добавить();
    СтрокаНДФЛ.БазовыйВидРасчета = БазовыеВиды.НайтиПоНаименованию("НДФЛ");
    СтрокаНДФЛ.Сумма = -(СтрокаОклад.Сумма + СтрокаПремия.Сумма) * 0.13;
    
    // Шаг 5: Записать и провести
    РасчетныйЛист.Записать();
    РасчетныйЛист.Провести();
    
    // Шаг 6: Итоговая сумма к выплате
    СуммаКВыплате = СтрокаОклад.Сумма + СтрокаПремия.Сумма + СтрокаНДФЛ.Сумма;
    
КонецПроцедуры

Особенности работы с базовыми видами

  1. Зависимости — порядок вычисления важен (налоги зависят от начисленной суммы)
  2. Условия — базовый вид может начисляться только при определённых условиях
  3. Периодичность — одни виды ежемесячные, другие ежеквартальные
  4. Коэффициенты — премии зависят от коэффициентов производительности
  5. История — все расчёты хранятся в регистрах для аудита и анализа

Чеклист при работе с базовыми видами расчётов

  • Определены все необходимые виды расчётов (оклад, премия, налоги, взносы)
  • Установлены правильные зависимости между видами
  • Формулы корректны
  • Периодичность соответствует требованиям
  • Условия (если есть) правильно реализованы
  • Регистры содержат полную историю
  • Тестирование на реальных данных

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