Как настроить формирование расчетного листка в ЗУП 3.1 с учетом выплат по внутреннему совместительству?

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

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

Метод 1: Программное изменение отбора в СКД

Если вы разрабатываете внешний отчет или меняете функционал существующего, самым эффективным способом является перехват настроек отбора перед выполнением компоновки данных. Суть метода заключается в том, чтобы программно заменить фильтр по Подразделение на фильтр по списку ФизическоеЛицо, отобранных по данному подразделению.

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

  1. Получаем доступ к настройкам компоновщика через КомпоновщикНастроек.Настройки.Отбор.
  2. Ищем элемент отбора, где ЛевоеЗначение равно Подразделение.
  3. Если нашли, отключаем его использование (Элемент.Использование = Ложь) и запоминаем выбранное значение.
  4. Формируем список (массив) физических лиц, которые числятся в данном подразделении на конец периода.
  5. Добавляем новый элемент отбора по ФизическоеЛицо с видом сравнения ВСписке и передаем туда наш массив сотрудников.

Пример кода для реализации данного механизма:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    НастройкиОтчета = КомпоновщикНастроек.Настройки;
    Отбор = НастройкиОтчета.Отбор.Элементы;
    
    Подразделение = Неопределено;
    Для Каждого Элемент Из Отбор Цикл
        Если Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Подразделение") Тогда
            Элемент.Использование = Ложь;
            Подразделение = Элемент.ПравоеЗначение;
            Прервать;
        КонецЕсли;
    КонецЦикла;

    Если Подразделение <> Неопределено Тогда
        ЭлементОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФизическоеЛицо");
        ЭлементОтбора.Использование = Истина;
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
        ЭлементОтбора.ПравоеЗначение = ПолучитьМассивФизЛицПоПодразделению(Подразделение);
    КонецЕсли;
КонецПроцедуры

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

Метод 2: Использование пользовательских настроек (без программирования)

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

Рассмотрим порядок действий для получения нужного результата:

  1. Откройте отчет Расчетный листок в режиме «1С:Предприятие».
  2. Перейдите в настройки отчета (кнопка «Настройки» — «Расширенный»).
  3. В разделе «Отбор» удалите стандартное условие по Подразделение.
  4. Добавьте условие по ФизическоеЛицо с видом сравнения ВСписке.
  5. С помощью кнопки подбора выберите всех сотрудников, которые числятся в нужном вам подразделении.

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

Почему важен выбор подразделения для совместителей?

При работе с внутренними совместителями система 1С:ЗУП 3.1 рассматривает их как одного человека (физическое лицо), но как разных сотрудников (кадровые записи). Когда вы устанавливаете отбор по подразделению, отчет ограничивает выборку только теми кадровыми записями, которые относятся к этому подразделению. Если вы хотите видеть «полную картину» по человеку, всегда ориентируйтесь на отбор по объекту ФизическоеЛицо, а не на кадровые параметры подразделения.

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

← На главную