Как в 1С:ЗУП 3.1 получить начисления и фактические выплаты сотрудникам для справок о доходах?

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

При разработке кастомных вариантов "Справки о доходах" в конфигурации 1С:Зарплата и Управление Персоналом (ЗУП 3.1) программисты часто сталкиваются с непониманием, откуда именно брать данные по месяцам. Часто возникает желание получить цифры, идентичные тем, что выводятся в расчетном листке сотрудника. Рассмотрим подробнее, как устроена архитектура хранения данных о заработной плате в системе и разберем по шагам, какие регистры следует использовать для решения этой задачи.

Ошибочный, но популярный подход: вычисление выплат математическим путем

Часто разработчики идут по пути наименьшего сопротивления. Проанализируем ситуацию: чтобы получить сумму "к выплате", берут обороты по регистру накопления НачисленияУдержанияПоСотрудникам, суммируют все начисления и вычитают из них все удержания. В результате получается некая цифра, которая во многих случаях совпадает с графой "Выплачено" в расчетном листке.

Однако выясним причину, почему этот метод концептуально неверен. Формула Начисления - Удержания показывает лишь то, сколько организация должна была выплатить сотруднику за конкретный месяц. Это не то же самое, что фактические выплаты. Например, сотрудника могли банально забыть включить в ведомость, или выплата была разбита на несколько частей (аванс, межрасчет, зарплата), или присутствуют ограничения по взысканиям. Фактическая выплата могла составить ноль рублей, а математический расчет покажет полную сумму.

Правильные регистры для получения фактических выплат

Если перед нами стоит задача получить именно суммы, которые сотрудник получил на руки (на карту или через кассу), посмотрим на регистры взаиморасчетов. В ЗУП 3.1 начисленные суммы и выплаченные суммы хранятся в разных регистрах.

  1. Регистр накопления ВзаиморасчетыССотрудниками. Этот регистр отражает долг предприятия перед сотрудником. Чтобы узнать, сколько было фактически выплачено, нам необходимо анализировать движения с видом Расход. Именно они формируются документами "Ведомость в банк", "Ведомость в кассу" и "Ведомость на счета".
  2. Регистр накопления БухгалтерскиеВзаиморасчетыССотрудниками. Он более детально показывает состояние расчетов именно для целей бухгалтерского учета.

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


ВЫБРАТЬ
    ВзаиморасчетыССотрудникамиОбороты.Сотрудник,
    ВзаиморасчетыССотрудникамиОбороты.ПериодВзаиморасчетов КАК МесяцВыплаты,
    ВзаиморасчетыССотрудникамиОбороты.СуммаВзаиморасчетовРасход КАК Выплачено
ИЗ
    РегистрНакопления.ВзаиморасчетыССотрудниками.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ВзаиморасчетыССотрудникамиОбороты

Зависимость источника данных от типа справки

Перед тем как писать код, всегда уточняйте, для какой именно инстанции требуется справка о доходах. От этого кардинально меняется набор регистров. Разберем основные варианты:

Период регистрации и Период действия

Это важнейший нюанс, на котором спотыкаются многие разработчики. Проанализируем разницу между двумя полями периода:

  1. Период регистрации: Это месяц, в котором расчетчик провел документ начисления. То есть месяц, в котором сумма фактически легла в учет и отразилась в проводках.
  2. Период действия: Это период, за который начислена сумма. Например, если в феврале сотруднику доначислили премию за январь, то периодом действия будет январь, а периодом регистрации — февраль.

Если вы хотите, чтобы ваш кастомный отчет или справка сходились цифра в цифру с типовым расчетным листком, в запросе к регистру `НачисленияУдержанияПоСотрудникам` необходимо фильтровать и группировать данные именно по полю ПериодРегистрации.

Нюанс с графой "Выплачено" в типовом Расчетном листке

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

Сумма выплат редко совпадает с простой математикой начислений и удержаний из-за переходящих задолженностей на начало месяца, межрасчетных выплат (авансов) и удержаний по исполнительным листам.

Использование программного интерфейса (API) конфигурации

Вместо написания прямых сложных запросов к множеству регистров, настоятельно рекомендуем использовать готовые программные механизмы ЗУП 3.1. Разработчики фирмы "1С" подготовили общие модули, которые уже учитывают все сложные случаи (перерасчеты, сторнирования, возвраты).

Обратите внимание на общий модуль УчетЗарплатыПеречисления. В нем содержатся экспортные процедуры и функции для получения достоверных данных о выплаченной зарплате и перечислениях в фонды. Также для получения сводных данных по начислениям можно использовать процедуры модулей, отвечающих за формирование отчета "Полный свод начислений, удержаний и выплат".

Правильная группировка данных в запросах

Если вы все же пишете запрос самостоятельно к регистру `НачисленияУдержанияПоСотрудникам`, обязательно группируйте результаты по следующим разрезам:

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

Используя правильные регистры и понимая бизнес-логику хранения расчетных данных в 1С:ЗУП 3.1, вы сможете создавать точные и достоверные справки о доходах, которые не будут вызывать вопросов у бухгалтеров и расчетчиков.

← На главную