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