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

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

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

Анализ типовых механизмов и отчетов ЗУП

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

Самый простой и надежный способ понять, как получить нужные данные, — это подсмотреть, как это делает сама система или отчет по отработанному и оплаченному времени. Для нашей задачи идеально подходит типовой отчет "Динамика плановых начислений".

Проанализируем этот подход по шагам:

  1. Откройте конфигуратор и найдите отчет ДинамикаПлановыхНачислений.
  2. Перейдите на вкладку "Макеты" и откройте основную схему компоновки данных (СКД).
  3. В схеме компоновки данных изучите наборы данных, в частности, основной запрос. Вы увидите, что он не обращается к регистрам расчета напрямую, а собирает информацию из регистров сведений, где хранятся значения показателей.

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

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

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

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

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

Рассмотрим пример запроса для СКД, который получает значение персональной надбавки для сотрудников на заданную дату.

В наборе данных-запросе вашей схемы компоновки данных напишите следующий текст:


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

Разберем этот запрос подробнее:

Такой запрос является простым, быстрым и, главное, правильным с точки зрения архитектуры ЗУП. Он напрямую извлекает те данные, которые были установлены в кадровых документах.

Дополнительные источники и механизмы

В ЗУП существуют и другие, более высокоуровневые объекты, такие как расширенное штатное расписание, которые могут быть полезны.

Виртуальная таблица ПлановыеНачисленияСрезПоследних

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

Механизм представлений

В конфигурации ЗУП активно используется механизм представлений, например, Представления_КадровыеДанныеСотрудников. Это не реальные таблицы в базе данных, а сложные запросы, обернутые в общие модули (например, ЗаполнениеПредставлений). Хотя в простом представлении кадровых данных может не быть нужного вам показателя, анализ кода в этих модулях — отличный способ понять, как система собирает воедино разрозненную информацию. Это продвинутый, но очень мощный метод для понимания логики конфигурации.

Итог: Для получения плановых начислений, заданных кадровыми документами, необходимо обращаться не к регистрам накопления, а к данным о значениях показателей. Самый прямой путь — запрос к регистру сведений ЗначенияПоказателейНачислений через виртуальную таблицу СрезПоследних. Для понимания общей логики и поиска готовых решений всегда полезно анализировать запросы типовых отчетов, таких как "Динамика плановых начислений".

← На главную