При переходе на новые версии программы 1С:Зарплата и управление персоналом 3.1 (или при плановом обновлении релизов) расчетчики часто сталкиваются со странным поведением документа Начисление зарплаты и взносов. Сценарий выглядит следующим образом: бухгалтер рассчитывает сотрудника, при этом сумма профсоюзных взносов (или других удержаний) определяется абсолютно верно. Однако стоит перейти на вкладку Взносы и запустить точечный перерасчет страховых взносов, как сумма профвзносов неожиданно меняется в меньшую сторону, а расчетная база по ним таинственным образом «сворачивается».
В этой статье мы подробно разберем, почему возникает данная проблема, рассмотрим внутренние механизмы платформы, приводящие к этой ошибке, и изучим три надежных способа ее исправления.
Для того чтобы понять природу этой ошибки, нам необходимо заглянуть под капот архитектуры решения 1С:ЗУП 3.1. В программе реализован специальный механизм автоматического кэширования данных, который регулируется константой Выполнять оптимизированный расчет.
Этот функционал предназначен для ускорения работы программы в крупных базах данных. Когда расчетчик вносит изменения по конкретному сотруднику, система пытается пересчитать не весь документ целиком, а только те показатели, которые непосредственно зависят от измененных данных, используя при этом временные таблицы в оперативной памяти (кэш).
Однако в алгоритмах оптимизации расчетов существует давняя коллизия:
Взносы программа инициирует обновление данных по страховым взносам.Этот баг затрагивает не только профсоюзные взносы, но и любые другие виды удержаний, рассчитываемые процентом от базы (например, удержания по исполнительным листам или добровольные взносы в негосударственные пенсионные фонды).
Если в вашей организации численность сотрудников не превышает нескольких тысяч человек, самым простым и радикальным способом решения проблемы будет полное отключение оптимизированного расчета. Это заставит систему всегда производить полный и честный расчет всех зависимостей без использования нестабильного кэша.
Давайте разберем по шагам, как отключить эту настройку:
Важное предупреждение: после крупных обновлений конфигурации (особенно при переходе на новые ветки релизов) эта константа может автоматически включиться обратно. Если проблема вернется, первым делом проверьте состояние этого флага в настройках расчета зарплаты.
Если вы не хотите полностью отключать оптимизацию расчетов (например, если у вас очень большая база и полное отключение замедляет работу документов), вам следует отказаться от точечных кнопок расчета на отдельных вкладках (Взносы, НДФЛ, Удержания).
Вместо этого используйте механизм принудительного пересчета конкретного физического лица. Проанализируем, почему этот метод работает безошибочно.
Когда вы нажимаете кнопку перерасчета непосредственно внутри вкладки взносов, программа обновляет только эту конкретную вкладку, ломая логические связи с удержаниями. Но если вы используете контекстное меню строки сотрудника, система запускает строгий последовательный алгоритм полного цикла расчетов «с нуля».
Схематично этот процесс можно представить следующим образом:
Процедура ПолныйПересчетСотрудника(ТекущийСотрудник)
РассчитатьНачисления(ТекущийСотрудник); // Оклады, премии, надбавки
РассчитатьДоговоры(ТекущийСотрудник); // Договоры ГПХ
РассчитатьНДФЛ(ТекущийСотрудник); // Исчисление налога
РассчитатьУдержания(ТекущийСотрудник); // Профвзносы, алименты (база актуальна!)
РассчитатьВзносы(ТекущийСотрудник); // Страховые взносы
КонецПроцедуры
Чтобы запустить этот цикл для проблемного сотрудника, выполните следующие действия:
Начисление зарплаты и взносов.После этого программа последовательно обновит все вкладки по данному человеку, и база удержаний вернется в правильное, заполненное состояние.
Очень часто ошибки с базой удержаний возникают из-за хаотичного порядка работы с документами. На практике расчетчики могут одновременно вводить межрасчетные документы (отпуска, премии, больничные) и пытаться корректировать итоговый документ начисления зарплаты.
Рассмотрим правильный, методически верный регламент расчета, который исключает возникновение подобных программных коллизий:
Отпуск, Больничный лист, Премия, Разовое начисление, Материальная помощь. Они должны быть рассчитаны и проведены строго ДО создания окончательного расчета за месяц.Начисление зарплаты и взносов создается самым последним. При его заполнении по кнопке Заполнить программа корректно соберет все ранее рассчитанные межрасчетные начисления в базу для удержаний и взносов.Премия), ни в коем случае не пытайтесь просто пересчитать взносы в итоговом документе. Правильный алгоритм выглядит так:
Начисление зарплаты и взносов.Соблюдение этого простого регламента убережет вашу базу данных от логических перекосов, а вас — от ручной корректировки сумм страховых взносов и профсоюзных удержаний перед сдачей отчетности.