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

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

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

Разберем причины такого поведения системы и рассмотрим все возможные варианты решения данной проблемы — от штатных настроек программы до вариантов автоматизации.

Почему 1С:ЗУП блокирует дубли сотрудников в одном документе

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

Поэтому в коде конфигурации в процедуре ОбработкаПроверкиЗаполнения заложен строгий контроль уникальности связки сотрудника и даты действия.

Решение 1. Использование накапливаемых показателей и нескольких документов

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

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

Решение 2. Ввод показателей с детализацией по конкретным датам

Если требуется зарегистрировать несколько строк по одному сотруднику строго в рамках одного документа, рассмотрим вариант настройки шаблона по дням:

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

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

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

  1. Группировка в Excel: Если данные собираются в электронных таблицах, перед загрузкой или ручным переносом применим сводную таблицу или функцию суммирования по сотрудникам, чтобы исключить дублирующиеся строки.
  2. Внешняя обработка заполнения: Для исключения рутинной работы подключим внешнюю обработку табличной части (через раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки). Обработка прочитает файл Excel с дублями строк, программно свернет таблицу по сотруднику, просуммирует числовые показатели и заполнит документ готовыми уникальными строками.

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


// Пример программного сворачивания данных перед помещением в ТЧ документа
ТаблицаДанных.Свернуть("Сотрудник", "Показатель1, Показатель2, Показатель3");
Для Каждого Стр Из ТаблицаДанных Цикл
    НоваяСтрока = Объект.ФиксированныеПоказатели.Добавить();
    НоваяСтрока.Сотрудник = Стр.Сотрудник;
    НоваяСтрока.Показатель1 = Стр.Показатель1;
    НоваяСтрока.Показатель2 = Стр.Показатель2;
    НоваяСтрока.Показатель3 = Стр.Показатель3;
КонецЦикла;

Решение 4. Автоматическое сворачивание строк через расширение

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

  1. Подключим расширение с назначением Адаптация.
  2. Переопределим событие модуля документа ПередЗаписью или событие формы ПередЗаписьюНаСервере.
  3. В обработчике выполним метод Свернуть() для табличной части документа по ключевым полям сотрудника с суммированием числовых колонок перед сохранением и проверкой заполнения.

Таким образом, пользователь сможет быстро вставить или набрать список с повторяющимися сотрудниками, а при нажатии кнопки проведения документ автоматически объединит дубли в единую строку.

← На главную