При ведении учета в организациях с разветвленной структурой (например, в медицинских или образовательных учреждениях) начисление заработной платы часто выполняется отдельными документами по каждому подразделению. Если сотрудник работает на основном месте в одном отделении, а по внутреннему совместительству — в другом, расчетчики сталкиваются с ошибкой: профсоюзные взносы или исполнительные листы рассчитываются только в первом проведенном документе начисления, а во второй документ строка удержания не попадает вовсе, из-за чего итоговая сумма удерживается не полностью.
Разберем, почему возникает такое поведение системы, как получить корректный расчет штатными средствами программы и как правильно скорректировать программный код при необходимости.
Проанализируем структуру хранения данных в конфигурациях предыдущих поколений (ЗКБУ 1.0, ЗУП 2.5). Учет плановых удержаний ведется в разрезе физических лиц (ФизЛицо), а не конкретных рабочих мест (Сотрудник).
При автозаполнении вкладки Удержания документа начисления зарплаты выполняется проверка: не было ли данное удержание уже зафиксировано за этот же расчетный период (ПериодРегистрации). Для этого к таблице удержаний применяется левое соединение с регистром расчета УдержанияРаботниковОрганизаций.
Посмотрим на фрагмент типового запроса, отвечающего за отсечение записей (модуль ЗаполнениеДокументовДополнительный):
// если не перерасчет - проверяем проведенность в расчетном периоде
Если Не ЭтоПерерасчет Тогда
ТекстЗапросаУдержаний = ТекстЗапросаУдержаний + "
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
| УдержанияРаботников.ФизЛицо КАК ФизЛицо,
| УдержанияРаботников.ВидРасчета КАК ВидРасчета,
| УдержанияРаботников.ДокументОснование КАК ДокументОснование,
| УдержанияРаботников.Получатель КАК Получатель
| ИЗ
| РегистрРасчета.УдержанияРаботниковОрганизаций КАК УдержанияРаботников
| ГДЕ
| УдержанияРаботников.ПериодРегистрации = &парамПериодРегистрации
| И УдержанияРаботников.ОбособленноеПодразделение = &парамОрганизация
| И УдержанияРаботников.Регистратор <> &парамРегистратор
| И НАЧАЛОПЕРИОДА(УдержанияРаботников.БазовыйПериодНачало, МЕСЯЦ) = &парамПериодРегистрации
| ) КАК ЗарегистрированныеУдержанияРаботников
| ПО УдержанияРаботниковОрганизации.Физлицо = ЗарегистрированныеУдержанияРаботников.ФизЛицо
| И УдержанияРаботниковОрганизации.ВидРасчета = ЗарегистрированныеУдержанияРаботников.ВидРасчета
| И (ЗарегистрированныеУдержанияРаботников.ДокументОснование = ВЫБОР
| КОГДА УдержанияРаботниковОрганизации.ДокументОснование ССЫЛКА Документ.ИсполнительныйЛист
| ТОГДА УдержанияРаботниковОрганизации.ДокументОснование
| ИНАЧЕ ЗНАЧЕНИЕ(Документ.ИсполнительныйЛист.ПустаяСсылка)
| КОНЕЦ)
| И (ЗарегистрированныеУдержанияРаботников.Получатель = ВЫБОР
| КОГДА УдержанияРаботниковОрганизации.Получатель ССЫЛКА Справочник.Контрагенты
| ТОГДА УдержанияРаботниковОрганизации.Получатель
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
| КОНЕЦ)
|ГДЕ
| ЗарегистрированныеУдержанияРаботников.ФизЛицо ЕСТЬ NULL";
КонецЕсли;
Когда второй документ рассчитывает зарплату совместителя, условие ЗарегистрированныеУдержанияРаботников.ФизЛицо ЕСТЬ NULL не выполняется, поскольку в регистре уже есть запись от первого проведенного документа по этому же физлицу. В итоге удержание во второй документ просто не включается.
Если конфигурация находится на типовой поддержке и внесение изменений в код нежелательно, применим проверенные методики расчета:
Выясним последовательность действий: рассчитываем и проводим начисления по основному месту работы и по совместительству в разных документах (при этом профсоюз заполнится только в одном из них со своей части базы). После того как оба документа проведены, возвращаемся в первый документ и выполняем команду Рассчитать — Рассчитать удержания (без перезаполнения основных начислений). Программа увидит начисления по совместительству из второго документа как часть базы текущего месяца и доначислит профсоюзный взнос с полной суммы заработка физлица.
Если позволяет разделение обязанностей между расчетчиками, начисление заработной платы по сотруднику и всем его внутренним совместительствам выполняется в рамках одного расчетного документа. В таком случае общая сумма начислений сразу попадает в базу для расчета взносов.
Расчетчики отделений проводят документы начислений с очищенной вкладкой удержаний по совместителям. В конце месяца ответственный расчетчик формирует единый документ расчета заработной платы исключительно для заполнения и расчета удержаний и НДФЛ со всей накопленной базы физических лиц.
Рассмотрим вариант доработки типового запроса. Простое комментирование блока Если Не ЭтоПерерасчет Тогда ... КонецЕсли; решает проблему с профсоюзными взносами (они начинают попадать во все документы), однако несет в себе критический риск для других типов удержаний.
Важное предостережение: если у физического лица назначено удержание фиксированной суммой (например, алименты в твердой денежной сумме или фиксированная сумма кредита), полное отключение проверки приведет к тому, что фиксированная сумма удержится дважды — в документе по основному месту и в документе по совместительству.
Если доработка необходима, откорректируем логику запроса более точечно:
Сотрудник, если в архитектуре базы удержание привязано к трудовому договору, а не к физическому лицу.Обратим внимание на расчет за первую половину месяца: плановые удержания профсоюза, как правило, настроены на удержание при окончательном расчете за месяц. Если взнос был рассчитан в авансовом документе, при расчете за вторую половину месяца сумма должна определяться нарастающим итогом за вычетом ранее удержанного аванса.
В современных редакциях системы (ЗУП 3.1 и ЗКГУ 3.1) этот механизм переработан: в документе назначения удержания профсоюзных взносов предусмотрен прямой переключатель, определяющий, начислять ли взнос по всем рабочим местам сотрудника или только по конкретно выбранному месту работы, что исключает конфликт документов разных подразделений.