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

Программист
← На главную

В практике работы с программой 1С:Зарплата и управление персоналом 3.1 часто возникает задача разделить выплаты сотрудникам. Например, когда новое плановое начисление (надбавка, премия или компенсация) должно выплачиваться по отдельной ведомости, отличной от основной зарплаты. Типовой механизм заполнения ведомостей ориентирован на общую сумму задолженности или на конкретные документы-основания, что создает определенные трудности при попытке выделить конкретный вид расчета. Разберем подробно, как решить эту задачу, используя как штатные возможности, так и программные методы.

Анализ архитектуры системы: почему нельзя просто выбрать начисление в ведомости?

Для начала проанализируем, как система понимает, какую сумму нужно выплатить. В ЗУП 3.1 ключевым узлом является регистр накопления ЗарплатаКВыплате. Когда мы проводим документ НачислениеЗарплатыИВзносов, записи в этот регистр попадают в разрезе сотрудников, подразделений, периодов и, что крайне важно, Документов-оснований. Однако в самом регистре нет прямого измерения "Вид расчета".

Это означает, что штатная кнопка "Заполнить" в ведомости собирает все остатки по регистру. Если несколько разных начислений были рассчитаны в одном общем документе НачислениеЗарплатыИВзносов, система "видит" их как единую сумму к выплате по данному документу-основанию. Рассмотрим основные пути обхода этого ограничения.

Способ 1: Разделение через документы-основания (Штатный метод)

Как отмечалось в обсуждении, наиболее правильным архитектурным решением для 1С является разделение выплат на этапе начисления. Если вы хотите выплачивать начисление отдельно, его стоит рассчитывать отдельным документом.

  1. Выясним, можно ли использовать документ РазовоеНачисление. Если начисление не является строго ежемесячным и плановым, это идеальный вариант. В ведомости при выборе способа выплаты "Прочие выплаты" можно будет указать конкретный документ РазовоеНачисление.
  2. Для плановых начислений рассмотрим настройку самого Вида расчета. На вкладке "Основное" в поле "Начисление выполняется" можно установить значение "По отдельному документу". В этом случае для расчета будет использоваться документ НачислениеПрочихДоходов или специализированные документы, что позволит автоматически фильтровать их в ведомостях.

Способ 2: Использование аналитики «Статьи финансирования»

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

Разберем этот метод по шагам:

  1. Создадим новую Статью финансирования (меню Настройки — Статьи финансирования), например, "Спецвыплаты".
  2. В настройках вашего нового Вида начисления на закладке "Налоги, взносы, бухучет" установим флаг "Настройка выполняется для каждого начисления" и укажем созданную статью финансирования.
  3. Проанализируем результат: теперь при расчете зарплаты суммы по этому начислению в регистре ЗарплатаКВыплате будут помечены именно этой статьей.
  4. При создании Ведомости в банк или Ведомости в кассу в шапке документа выберем статью финансирования "Спецвыплаты". При нажатии кнопки "Заполнить" программа подтянет в документ только те суммы, которые соответствуют этой аналитике. Все остальные начисления останутся для "основной" ведомости.

Способ 3: Создание внешней обработки заполнения (Для программиста)

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

Рассмотрим логику, которую должна реализовать такая обработка:

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

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


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

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

Способ 4: Метод «От обратного» (Постобработка)

Рассмотрим ситуацию, предложенную в сообщении 17. Если нам нужно быстро выплатить конкретное начисление, мы можем:

  1. Создать стандартную ведомость и заполнить её полностью всеми остатками.
  2. Запустить обработку, которая переберет строки ведомости и для каждого сотрудника проверит наличие сумм по нашему Виду расчета в документе-основании.
  3. Если сумма по нашему виду расчета в начислении составляет, например, 1000 рублей, а в ведомости стоит 5000 (включая оклад), обработка должна уменьшить сумму в ведомости до 1000 рублей.
  4. При создании следующей ведомости (основной), программа сама подтянет оставшиеся 4000 рублей, так как они останутся в остатках регистра ЗарплатаКВыплате.

Резюме и рекомендации

Подводя итог, выясним, какой метод выбрать:

Помните, что любое ручное вмешательство в суммы ведомостей (через постобработку) требует последующей проверки отчетов Анализ зарплаты по сотрудникам и Задолженность по зарплате, чтобы убедиться, что взаиморасчеты закрылись корректно в разрезе месяцев и документов-оснований.

← На главную