Сокращение задолженности по индексации зарплаты в 1С:ЗУП

Коротко: Производственная компания с численностью 340 человек накопила задолженность по индексации заработной платы в размере 4,2 млн ₽ за 18 месяцев из-за ручного расчёта и отсутствия автоматизации. После настройки механизма индексации в 1С:ЗУП 3.1 — с корректными видами расчёта, формулами и регламентными заданиями — задолженность была выявлена, рассчитана и погашена за 2 месяца. Трудозатраты на расчёт зарплаты снизились на 60%, а риск повторных ошибок сведён к нулю.
Как выглядела проблема до автоматизации?
Металлообрабатывающее предприятие «Уралмашкомплект» (название изменено) с производственным персоналом 340 человек использовало 1С:ЗУП 3.1, однако механизм индексации заработной платы в системе настроен не был. Повышение тарифных ставок и окладов производилось вручную: бухгалтер-расчётчик раз в квартал открывал список сотрудников, вручную пересчитывал оклады и вносил изменения через документ «Изменение оплаты труда».
Такой подход порождал системные ошибки:
- Несвоевременное применение коэффициента — индексация за январь фактически применялась в марте-апреле, что создавало задолженность перед сотрудниками.
- Неполный охват надбавок — индексировались только оклады, тогда как персональные надбавки, доплаты за вредность и районные коэффициенты оставались на прежнем уровне.
- Отсутствие ретроспективного перерасчёта — при обнаружении ошибки система не пересчитывала уже выплаченные суммы автоматически.
- Человеческий фактор — при массовом вводе данных часть сотрудников просто «выпадала» из списка обновления.
По итогам аудита, проведённого перед внедрением автоматизации, суммарная задолженность предприятия перед сотрудниками по недоначисленной заработной плате составила 4 218 340 рублей за период с января прошлого года по июнь текущего — 18 месяцев накопленных ошибок.
Ситуацию усугубляло то, что трудовая инспекция уже направила предписание с требованием устранить нарушения в части индексации. Штраф для юридического лица по статье 5.27 КоАП мог составить от 30 000 до 50 000 рублей, а при повторном нарушении — до 100 000 рублей. Для решения задачи был привлечён специалист через найти разработчика 1С на бирже Кодерион.
Как работает механизм индексации в 1С:ЗУП 3.1?
Прежде чем описывать настройку, важно понять архитектуру механизма индексации в 1С:ЗУП 3.1. Платформа предоставляет два принципиально разных подхода.
Подход 1: Индексация через плановые виды расчёта
Это наиболее гибкий и рекомендуемый способ. Суть: каждый вид расчёта (оклад, надбавка, доплата) настраивается так, чтобы его база умножалась на актуальный индексный коэффициент. Коэффициент хранится в отдельном регистре и применяется при каждом расчёте автоматически.
Подход 2: Документ «Индексация заработка»
Начиная с версии 3.1.14 в 1С:ЗУП появился специализированный документ «Индексация заработка». Он позволяет разово пересчитать плановые начисления всех или выбранных сотрудников с применением заданного коэффициента. Документ также формирует записи для ретроспективного перерасчёта, если указана дата, отличная от текущей.
В случае «Уралмашкомплекта» было решено использовать комбинированный подход: документ «Индексация заработка» для погашения накопленной задолженности + настройка плановых видов расчёта для предотвращения будущих ошибок.
Пошаговая настройка: что именно было сделано в системе?
Шаг 1. Настройка учётной политики по индексации
В разделе Настройка → Расчёт зарплаты был активирован флаг «Выполнять индексацию заработка». Это открывает доступ к соответствующим документам и регистрам. Без этого флага пункт меню просто недоступен — распространённая причина, по которой компании не могут найти функционал.
Шаг 2. Создание видов расчёта с поддержкой индексации
Для каждого вида начисления, подлежащего индексации (оклад по дням, оклад по часам, персональная надбавка, доплата за вредность), в настройках была установлена галочка «Индексировать». Это означает, что при проведении документа «Индексация заработка» система автоматически пересчитает базовую ставку для данного вида начисления.
Шаг 3. Ввод исторических коэффициентов индексации
Через документ «Индексация заработка» были последовательно введены все коэффициенты за 18 месяцев. Каждый документ датировался первым числом соответствующего месяца. Система автоматически рассчитала разницу между тем, что было начислено, и тем, что должно было быть начислено с учётом индексации.
// Пример программного создания документа «Индексация заработка»
// для ретроспективного перерасчёта за конкретный месяц
&НаСервере
Процедура СоздатьДокументИндексации(ДатаНачала, КоэффициентИндексации)
// Создаём новый документ индексации заработка
ДокументИндексации = Документы.ИндексацияЗаработка.СоздатьДокумент();
// Устанавливаем основные реквизиты документа
ДокументИндексации.Дата = ДатаНачала;
ДокументИндексации.ПериодРегистрации = НачалоМесяца(ДатаНачала);
ДокументИндексации.Организация = Организации.НайтиПоНаименованию("Уралмашкомплект");
// Задаём коэффициент индексации
ДокументИндексации.КоэффициентИндексации = КоэффициентИндексации;
// Указываем, что индексация применяется ко всем сотрудникам
ДокументИндексации.ВсеСотрудники = Истина;
// Заполняем табличную часть автоматически
ДокументИндексации.ЗаполнитьПоОрганизации();
// Проводим документ
ДокументИндексации.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ индексации за " + Формат(ДатаНачала, "ДФ=ММММ гггг") +
" создан. Коэффициент: " + КоэффициентИндексации);
КонецПроцедуры
// Вызов процедуры для каждого периода задолженности
// Пример: январь — коэффициент 1.08 (8% индексация)
СоздатьДокументИндексации(Дата(2023, 1, 1), 1.08);
СоздатьДокументИндексации(Дата(2023, 4, 1), 1.045);
СоздатьДокументИндексации(Дата(2023, 7, 1), 1.05);
Шаг 4. Настройка автоматического расчёта через регламентное задание
Для предотвращения будущих ошибок было настроено регламентное задание, которое ежеквартально — в первый рабочий день квартала — автоматически создаёт и проводит документ индексации с актуальным коэффициентом. Коэффициент подтягивается из константы, которую бухгалтер обновляет один раз в квартал вручную.
// Процедура для регламентного задания автоматической индексации
// Запускается в первый рабочий день каждого квартала
&НаСервере
Процедура ВыполнитьАвтоматическуюИндексацию() Экспорт
// Получаем текущий коэффициент из константы
ТекущийКоэффициент = Константы.КоэффициентИндексацииЗарплаты.Получить();
// Проверяем, что коэффициент задан и отличается от единицы
Если ТекущийКоэффициент = 0 Или ТекущийКоэффициент = 1 Тогда
Сообщить("Предупреждение: коэффициент индексации не задан или равен 1. Индексация не выполнена.");
Возврат;
КонецЕсли;
// Определяем дату начала текущего квартала
ТекущаяДата = ТекущаяДатаСеанса();
МесяцНачалаКвартала = ((Месяц(ТекущаяДата) - 1) \ 3) * 3 + 1;
ДатаНачалаКвартала = Дата(Год(ТекущаяДата), МесяцНачалаКвартала, 1);
// Проверяем, не была ли индексация уже проведена за этот период
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИндексацияЗаработка.Ссылка КАК Ссылка
|ИЗ
| Документ.ИндексацияЗаработка КАК ИндексацияЗаработка
|ГДЕ
| ИндексацияЗаработка.ПериодРегистрации = &ПериодРегистрации
| И ИндексацияЗаработка.Проведён = ИСТИНА";
Запрос.УстановитьПараметр("ПериодРегистрации", ДатаНачалаКвартала);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить("Индексация за " + Формат(ДатаНачалаКвартала, "ДФ=ММММ гггг") +
" уже проведена. Повторное создание документа пропущено.");
Возврат;
КонецЕсли;
// Создаём документ индексации
ДокументИндексации = Документы.ИндексацияЗаработка.СоздатьДокумент();
ДокументИндексации.Дата = ТекущаяДата;
ДокументИндексации.ПериодРегистрации = ДатаНачалаКвартала;
ДокументИндексации.Организация = Константы.ОсновнаяОрганизация.Получить();
ДокументИндексации.КоэффициентИндексации = ТекущийКоэффициент;
ДокументИндексации.ВсеСотрудники = Истина;
// Заполняем и проводим документ
ДокументИндексации.ЗаполнитьПоОрганизации();
ДокументИндексации.Записать(РежимЗаписиДокумента.Проведение);
// Сбрасываем коэффициент в константе до 1 (защита от двойного применения)
Константы.КоэффициентИндексацииЗарплаты.Установить(1);
Сообщить("Автоматическая индексация за " +
Формат(ДатаНачалаКвартала, "ДФ=ММММ гггг") +
" выполнена успешно. Коэффициент: " + ТекущийКоэффициент);
КонецПроцедуры
Как рассчитать накопленную задолженность: алгоритм и запрос
Ключевой задачей было точно определить сумму задолженности перед каждым сотрудником. Для этого был написан аналитический запрос, который сравнивает фактически начисленные суммы с суммами, которые должны были быть начислены с учётом коэффициентов индексации.
// Запрос для расчёта задолженности по индексации
// Сравниваем фактические начисления с расчётными (с учётом индексации)
&НаСервере
Функция РассчитатьЗадолженностьПоИндексации(ДатаНачала, ДатаОкончания)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
| Начисления.Сотрудник КАК Сотрудник,
| Начисления.ПериодРегистрации КАК Период,
| Начисления.ВидРасчёта КАК ВидРасчёта,
| СУММА(Начисления.Результат) КАК ФактическоеНачисление,
| СУММА(Начисления.Результат * ЕСТЬNULL(Коэффициенты.КоэффициентИндексации, 1)) КАК РасчётноеНачисление,
| СУММА(Начисления.Результат * ЕСТЬNULL(Коэффициенты.КоэффициентИндексации, 1)) -
| СУММА(Начисления.Результат) КАК СуммаЗадолженности
|ИЗ
| РегистрРасчёта.Начисления КАК Начисления
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИндексыИзмененияЦен КАК Коэффициенты
| ПО Начисления.ПериодРегистрации = Коэффициенты.Период
|ГДЕ
| Начисления.ПериодРегистрации >= &ДатаНачала
| И Начисления.ПериодРегистрации <= &ДатаОкончания
| И Начисления.ВидРасчёта.ИндексироватьНачисление = ИСТИНА
|СГРУППИРОВАТЬ ПО
| Начисления.ФизическоеЛицо,
| Начисления.Сотрудник,
| Начисления.ПериодРегистрации,
| Начисления.ВидРасчёта
|ИМЕЮЩИЕ
| СУММА(Начисления.Результат * ЕСТЬNULL(Коэффициенты.КоэффициентИндексации, 1)) -
| СУММА(Начисления.Результат) > 0
|УПОРЯДОЧИТЬ ПО
| Начисления.ФизическоеЛицо,
| Начисления.ПериодРегистрации";
Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца(ДатаНачала));
Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ДатаОкончания));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
ИтоговаяСумма = 0;
Для Каждого Строка Из Выборка Цикл
ИтоговаяСумма = ИтоговаяСумма + Строка.СуммаЗадолженности;
КонецЦикла;
Сообщить("Общая задолженность по индексации: " +
Формат(ИтоговаяСумма, "ЧДЦ=2; ЧРГ=; ЧН=0") + " руб.");
Возврат Результат;
КонецФункции
Результат выполнения этого запроса дал точную разбивку задолженности по каждому сотруднику, периоду и виду начисления. Именно эти данные стали основой для формирования документов доначисления. Подробнее о возможностях задачи по 1С:ЗУП можно узнать на бирже Кодерион.
Как погашалась задолженность: документы доначисления
После того как сумма задолженности была точно рассчитана, встал вопрос о корректном способе её погашения. Здесь важно было не просто выплатить деньги, но и корректно отразить их в налоговом и бухгалтерском учёте.
Вариант 1: Доначисление через «Индексацию заработка»
Документ «Индексация заработка» с указанием прошлых периодов автоматически формирует записи в регистре расчёта и корректирует базу для расчёта НДФЛ и страховых взносов. НДФЛ доначисляется в периоде фактической выплаты (согласно НК РФ), а не в периоде возникновения задолженности — это принципиально важно для корректности 6-НДФЛ.
Вариант 2: Разовое начисление через «Начисление зарплаты»
Для части сотрудников, уволенных в период накопления задолженности, был использован отдельный вид расчёта «Доначисление по индексации (уволенные)». Это позволило корректно отразить выплату без влияния на текущие плановые начисления.
// Процедура создания доначисления для уволенных сотрудников
// Использует разовый вид начисления
&НаСервере
Процедура СоздатьДоначислениеУволенному(СотрудникСсылка, СуммаДоначисления, ПериодВыплаты)
ДокументНачисления = Документы.НачислениеЗарплатыИВзносов.СоздатьДокумент();
ДокументНачисления.Дата = ТекущаяДатаСеанса();
ДокументНачисления.ПериодРегистрации = НачалоМесяца(ПериодВыплаты);
ДокументНачисления.Организация = СотрудникСсылка.Организация;
// Добавляем строку в табличную часть начислений
НоваяСтрока = ДокументНачисления.Начисления.Добавить();
НоваяСтрока.Сотрудник = СотрудникСсылка;
НоваяСтрока.ФизическоеЛицо = СотрудникСсылка.ФизическоеЛицо;
НоваяСтрока.ВидРасчёта = ПланыВидовРасчёта.Начисления.НайтиПоНаименованию(
"Доначисление по индексации");
НоваяСтрока.Результат = СуммаДоначисления;
// Проводим документ
ДокументНачисления.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Доначисление для сотрудника " +
Строка(СотрудникСсылка) +
" на сумму " + Формат(СуммаДоначисления, "ЧДЦ=2") +
" руб. создано успешно.");
КонецПроцедуры
Найдите специалиста для решения этой задачи на koderion.ru
Автор: редакция Koderion. Обновлено: 30 апреля 2026. Источники: Бухгалтерия.ру, Infostart, ИТС 1С.