Почему не рассчитывается профсоюз и другие удержания по совместителям в разных документах начисления зарплаты?

Программист 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом Бухгалтерский учет Сфера услуг, туризм и социальный сектор
← На главную

При ведении учета в организациях с разветвленной структурой (например, в медицинских или образовательных учреждениях) начисление заработной платы часто выполняется отдельными документами по каждому подразделению. Если сотрудник работает на основном месте в одном отделении, а по внутреннему совместительству — в другом, расчетчики сталкиваются с ошибкой: профсоюзные взносы или исполнительные листы рассчитываются только в первом проведенном документе начисления, а во второй документ строка удержания не попадает вовсе, из-за чего итоговая сумма удерживается не полностью.

Разберем, почему возникает такое поведение системы, как получить корректный расчет штатными средствами программы и как правильно скорректировать программный код при необходимости.

Причина проблемы и логика типового механизма

Проанализируем структуру хранения данных в конфигурациях предыдущих поколений (ЗКБУ 1.0, ЗУП 2.5). Учет плановых удержаний ведется в разрезе физических лиц (ФизЛицо), а не конкретных рабочих мест (Сотрудник).

При автозаполнении вкладки Удержания документа начисления зарплаты выполняется проверка: не было ли данное удержание уже зафиксировано за этот же расчетный период (ПериодРегистрации). Для этого к таблице удержаний применяется левое соединение с регистром расчета УдержанияРаботниковОрганизаций.

Посмотрим на фрагмент типового запроса, отвечающего за отсечение записей (модуль ЗаполнениеДокументовДополнительный):


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

Когда второй документ рассчитывает зарплату совместителя, условие ЗарегистрированныеУдержанияРаботников.ФизЛицо ЕСТЬ NULL не выполняется, поскольку в регистре уже есть запись от первого проведенного документа по этому же физлицу. В итоге удержание во второй документ просто не включается.

Пользовательские способы решения проблемы (без доработки конфигурации)

Если конфигурация находится на типовой поддержке и внесение изменений в код нежелательно, применим проверенные методики расчета:

  1. Метод двухэтапного расчета (через общую базу):

    Выясним последовательность действий: рассчитываем и проводим начисления по основному месту работы и по совместительству в разных документах (при этом профсоюз заполнится только в одном из них со своей части базы). После того как оба документа проведены, возвращаемся в первый документ и выполняем команду Рассчитать — Рассчитать удержания (без перезаполнения основных начислений). Программа увидит начисления по совместительству из второго документа как часть базы текущего месяца и доначислит профсоюзный взнос с полной суммы заработка физлица.

  2. Расчет всех мест работы сотрудника в одном документе:

    Если позволяет разделение обязанностей между расчетчиками, начисление заработной платы по сотруднику и всем его внутренним совместительствам выполняется в рамках одного расчетного документа. В таком случае общая сумма начислений сразу попадает в базу для расчета взносов.

  3. Выделенный итоговый документ расчета удержаний:

    Расчетчики отделений проводят документы начислений с очищенной вкладкой удержаний по совместителям. В конце месяца ответственный расчетчик формирует единый документ расчета заработной платы исключительно для заполнения и расчета удержаний и НДФЛ со всей накопленной базы физических лиц.

Программная доработка в конфигураторе: анализ и риски

Рассмотрим вариант доработки типового запроса. Простое комментирование блока Если Не ЭтоПерерасчет Тогда ... КонецЕсли; решает проблему с профсоюзными взносами (они начинают попадать во все документы), однако несет в себе критический риск для других типов удержаний.

Важное предостережение: если у физического лица назначено удержание фиксированной суммой (например, алименты в твердой денежной сумме или фиксированная сумма кредита), полное отключение проверки приведет к тому, что фиксированная сумма удержится дважды — в документе по основному месту и в документе по совместительству.

Если доработка необходима, откорректируем логику запроса более точечно:

  1. Отключать проверку на дубли исключительно для зависимых от базы видов расчета (где способ расчета — процентный, а не фиксированный).
  2. Добавить в соединение проверку по конкретному объекту Сотрудник, если в архитектуре базы удержание привязано к трудовому договору, а не к физическому лицу.

Особенности расчета аванса и реализация в ЗУП 3.1

Обратим внимание на расчет за первую половину месяца: плановые удержания профсоюза, как правило, настроены на удержание при окончательном расчете за месяц. Если взнос был рассчитан в авансовом документе, при расчете за вторую половину месяца сумма должна определяться нарастающим итогом за вычетом ранее удержанного аванса.

В современных редакциях системы (ЗУП 3.1 и ЗКГУ 3.1) этот механизм переработан: в документе назначения удержания профсоюзных взносов предусмотрен прямой переключатель, определяющий, начислять ли взнос по всем рабочим местам сотрудника или только по конкретно выбранному месту работы, что исключает конфликт документов разных подразделений.

← На главную