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