После обновления конфигурации 1С:Зарплата и управление персоналом 3.1 (особенно при переходе на релизы ветки 3.1.27.51 и смежные) многие специалисты сталкиваются с неприятной ситуацией: документ Начисление зарплаты и взносов отказывается заполняться автоматически. При нажатии на кнопку Заполнить система некоторое время «думает», после чего выдает абсолютно пустую табличную часть. При этом ручной подбор сотрудников или расчет по отдельному человеку через контекстное меню могут работать исправно. Рассмотрим подробнее, почему это происходит и как локализовать проблему.
Для начала проанализируем, как работает современный механизм заполнения в ЗУП 3.1. В отличие от старых версий, расчет начислений теперь происходит в фоновом задании. Это сделано для того, чтобы пользователь мог продолжать работу с интерфейсом, пока сервер обрабатывает данные. Однако у этого механизма есть побочный эффект: если внутри программного кода при расчете возникает критическая ошибка (исключение), фоновое задание аварийно завершается.
В обычных условиях система должна «пробросить» текст ошибки пользователю, но в некоторых релизах (например, 3.1.27) из-за особенностей обработки процедур в модуле УчетСтраховыхВзносов ошибка поглощается. В итоге мы видим симптомы, описанные автором темы: программа долго крутит индикатор ожидания и в конечном итоге оставляет документ пустым, не выводя никаких предупреждений.
Разберем ситуацию, которая стала массовой в 2023–2024 годах. Основная причина «падения» заполнения часто кроется в алгоритмах расчета страховых взносов. В системе существует понятие Предельная величина базы (в 2023 году она составляла 1 917 000 руб.). Когда в списке сотрудников оказывается хотя бы один человек, чей совокупный доход с начала года превысил этот порог, программа инициирует сложную логику распределения взносов.
Проанализируем ошибку с кодом 000144570. Официально она заявлялась как проблема для организаций, применяющих тариф МСП (Малое и среднее предпринимательство), где расчет взносов делится на части «в пределах МРОТ» и «свыше МРОТ». Однако на практике ошибка затронула и тех, кто находится на Основном тарифе, если в штате есть высокооплачиваемые сотрудники («богачи»). Программный код пытается обратиться к коллекциям данных, которые в новом релизе были изменены или инициализированы неверно, что приводит к вылету всей процедуры заполнения.
Если вы столкнулись с пустым документом, выполним следующие шаги для выявления «виновника»:
/Debug. В этом режиме 1С часто выполняет фоновые задания иначе или позволяет отладчику «поймать» момент аварийного завершения. Как отметил автор темы, именно этот шаг позволил увидеть реальное сообщение об ошибке, которое скрывалось при обычном запуске.Администрирование — Обслуживание — Журнал регистрации. Установим фильтр по событию Фоновое задание и статусу Ошибка. Там можно найти технический текст, например: Метод объекта не обнаружен или Индекс находится вне границ массива.Рассмотрим, какие действия помогут вернуть работоспособность документу:
Посмотрим на пример решения через сервис автоматической загрузки исправлений. В большинстве случаев для исправления ситуации с пустым начислением требуется установить патч EF_000144570 (или более свежий аналог для вашего релиза).
Для этого перейдем в Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи) и проверим наличие критических обновлений для блока страховых взносов.
Иногда заполнение блокируется из-за некорректных записей в механизме перерасчетов. Проанализируем состояние сервиса: перейдем в раздел Зарплата — Сервис — Перерасчеты. Если там скопилось огромное количество записей за прошлые периоды, попробуйте очистить их (или отработать) и повторить заполнение документа.
Если патчи не помогают, стоит взглянуть на обработку исключений в процедурах расчета. Рассмотрим пример структуры, где может происходить «замалчивание» ошибки в типовом коде:
Попытка
// Вызов фонового задания расчета взносов
УчетСтраховыхВзносов.РассчитатьВзносы(ПараметрыРасчета);
Исключение
// В некоторых релизах здесь может отсутствовать
// запись в журнал или вывод сообщения пользователю
ЗаписатьЛогОшибки(ОписаниеОшибки());
КонецПопытки;
В таких случаях рекомендуется временно закомментировать конструкцию Попытка ... Исключение в копии базы, чтобы система выдала штатное окно ошибки с указанием строки кода. Это позволит понять, какого именно реквизита или данных не хватает в карточке сотрудника (например, не заполнен статус застрахованного лица или отсутствуют данные о гражданстве).
Если после обновления ЗУП 3.1 документ Начисление зарплаты и взносов остается пустым, выполните три главных действия:
1) Установите все доступные патчи через интернет-поддержку;
2) Попробуйте заполнить документ в режиме отладки для выявления текста ошибки;
3) Проверьте расчет по сотрудникам с высокими доходами (выше 1.9 млн).
Как правило, сочетание этих мер позволяет восстановить работу бухгалтерии без ожидания следующего релиза от вендора.