Как получить оклад/тарифную ставку и дополнительные начисления сотрудника в 1С:ЗУП 3.1?

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

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

Основы хранения плановых начислений в ЗУП 3.1

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

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

Важно понимать, что в ЗУП 3.1, в отличие от более ранних версий (например, 2.5), нет строгого разделения на "основные" и "дополнительные" начисления. Все они управляются в рамках единого механизма плановых начислений. Под "дополнительными начислениями" обычно подразумеваются различные надбавки, премии и стимулирующие выплаты, которые также хранятся в упомянутых регистрах.

Получение оклада и тарифной ставки

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

1. Прямые запросы к регистру сведений "ПлановыеНачисления"

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

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


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

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

Особенности использования прямых запросов:

  1. Актуальность данных: Если у сотрудника еще нет начислений, но вид и размер начислений указаны только при приеме на работу, документ "Прием на работу" создает движения в регистре ПлановыеНачисления. Поэтому данные будут доступны сразу после проведения документа.
  2. Поле ДействуетДо: Наличие поля ДействуетДо в регистре ПлановыеНачисления говорит о том, что начисления могут иметь ограниченный срок действия. Это важно учитывать при анализе данных.
  3. Интервальные регистры: Если нам нужна история изменений, удобнее обращаться к интервальным регистрам, например, ПлановыеНачисленияИнтервальный, чтобы сразу получить данные по периодам.

Посмотрим на пример функции, которая ищет размер начисления по его категории:


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

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

2. Использование функций БСП для получения кадровых данных

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

  1. КадровыйУчет.КадровыеДанныеСотрудников: Эта функция предоставляет простой способ получить кадровые данные сотрудника на определенную дату в виде таблицы значений. Она может включать ФИО, подразделение, должность и табельный номер, а также основные показатели оплаты труда.
    
    // Пример вызова
    Сотрудник = Справочники.Сотрудники.НайтиПоКоду("000001"); // Пример сотрудника
    КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Сотрудник), "ОплатаТрудаПериодЗаписи,ФОТ,ТарифнаяСтавка,Надбавка");
        
    Если КадровыеДанные.Количество() > 0 Тогда
        // Получаем тарифную ставку или оклад из полученных данных
        Ставка = КадровыеДанные[0].ТарифнаяСтавка;
        Надбавка = КадровыеДанные[0].Надбавка;
        ФОТ = КадровыеДанные[0].ФОТ;
        Сообщить("Тарифная ставка сотрудника: " + Ставка);
    КонецЕсли;
    

    Список доступных полей для выбора можно посмотреть в функции КадровыйУчетБазовый.ЗаполнитьПоляПредставленийКадровыхДанныхСотрудников.

  2. КадровыйУчет.СотрудникиОрганизации: Эта функция является более мощным инструментом для получения широкого спектра кадровых данных за определенный период. Перед ее использованием необходимо сформировать параметры через КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц. Она позволяет получить такие показатели, как фонд оплаты труда (ФОТ), основное начисление, показатель тарифной ставки, надбавку и совокупную тарифную ставку.
  3. КадровыйУчет.ДанныеТрудовыхДоговоров: Эта функция также может быть полезна, если данные об окладе или тарифной ставке связаны с условиями трудового договора.

Различие оклада и тарифной ставки

Мы часто сталкиваемся с вопросом, как отличить оклад от тарифной ставки. Давайте проясним эту разницу:

  1. Оклад: Представляет собой фиксированную часть заработной платы за полностью отработанный месяц, которая не зависит от количества рабочих дней или смен в месяце. К окладу могут добавляться различные премии, надбавки и компенсации. Обычно оклад применяется для специалистов с постоянным графиком работы (например, пятидневка) и сотрудников, чья работа сложно измеряется в единицах (бухгалтеры, юристы).
  2. Тарифная ставка: Это оплата за единицу труда (час, смену, день). Месячная тарифная ставка, по сути, является должностным окладом, но ее размер напрямую зависит от фактически отработанного времени. Тарифная ставка удобна для сотрудников с нестабильным объемом работы, посменным или гибким графиком (токари, грузчики, водители).

В системе ЗУП 3.1 тип оплаты (оклад или тариф) определяется настройками конкретного вида начисления. При создании или редактировании начисления мы указываем, каким образом оно рассчитывается (например, "Оклад по дням", "Оплата по часовому тарифу" и т.д.). Для определения, является ли конкретное начисление окладом или тарифной ставкой, нам необходимо анализировать свойства вида начисления.

Расчет стоимости часа

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

Получение дополнительных начислений

Как мы уже выяснили, в ЗУП 3.1 "дополнительные начисления" (различные надбавки, премии, стимулирующие выплаты) не выделены в отдельную сущность, а являются такими же плановыми начислениями, как и оклад. Соответственно, мы используем те же механизмы для их получения.

1. Документы для регистрации и изменения начислений

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

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

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

2. Использование функций БСП для получения текущих начислений

Функция КадровыйУчетРасширенный.ТекущиеНачисленияСотрудника (или ТекущиеНачисленияСотрудников для списка сотрудников) является наиболее удобным и рекомендуемым способом для получения актуальных плановых начислений сотрудника на определенную дату. Эта функция вернет таблицу со всеми плановыми начислениями, которые действуют на указанный момент.

Работа с "представлениями" в запросах

В ЗУП 3.1 активно используется механизм "представлений", особенно при работе с запросами и системой компоновки данных (СКД). "Представления" – это своего рода "алиасы" или шаблоны запросов, которые программный интерфейс 1С автоматически преобразует в запросы к конкретным регистрам. Такой подход позволяет создавать более устойчивые к изменениям структуры данных запросы, поскольку мы обращаемся не напрямую к регистрам, а к абстрактным "представлениям", которые инкапсулируют логику получения данных.

Рассмотрим пример запроса с использованием "представлений":


Запрос = Новый Запрос;
Запрос.Текст = 
    "|ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ДАТАВРЕМЯ(1, 1, 1) КАК Период,
    |    Сотрудники.Ссылка КАК Сотрудник
    |ПОМЕСТИТЬ ВТОтборДляСрезаПоследних
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    |    ДАТАВРЕМЯ(1, 1, 1) КАК Период,
    |    ДАТАВРЕМЯ(1, 1, 1) КАК ПериодЗаписи,
    |    ДАТАВРЕМЯ(1, 1, 1) КАК ПериодВозвратногоСобытия,
    |    ЛОЖЬ КАК ЭтоВозвратноеСобытие,
    |    ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
    |    ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка) КАК Начисление,
    |    ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) КАК ФизическоеЛицо,
    |    ЗНАЧЕНИЕ(Документ.НазначениеПлановогоНачисления.ПустаяСсылка) КАК ДокументОснование,
    |    ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК ГоловнаяОрганизация,
    |    ИСТИНА КАК Используется,
    |    0 КАК Размер,
    |    ИСТИНА КАК ПересчетНеТребуется,
    |    ИСТИНА КАК ВторичнаяЗапись
    |ПОМЕСТИТЬ Представления_СрезПоследних_ПлановыеНачисления
    |ИЗ
    |    ВТОтборДляСрезаПоследних КАК ОтборДляСрезаПоследних
    |ГДЕ
    |    ""ТолькоРазрешенные"" = ИСТИНА";
    
ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Запрос.Текст, );

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

Получение Фонда оплаты труда (ФОТ)

Фонд оплаты труда (ФОТ) в ЗУП 3.1 — это более широкое понятие, чем просто оклад. Он включает в себя оклад, зарплату за отработанное время, премии, отпускные, бонусы, компенсации, доплаты за ночные смены, сверхурочные и выплаты за работу во вредных условиях. При этом в ФОТ обычно не входят разовые премии (например, к юбилею), материальная помощь, компенсации за путевки и пособия за счет средств Фонда социального страхования.

Информацию о ФОТ также можно получить с помощью функции КадровыйУчет.СотрудникиОрганизации, передав ей соответствующий набор полей для выборки.

Отчетность в ЗУП 3.1

Для комплексного анализа начислений, удержаний, НДФЛ и взносов в ЗУП 3.1 существуют стандартные отчеты, которые могут быть полезны:

  1. "Полный свод начислений, удержаний и выплат": Этот отчет находится в разделе "Зарплата" -> "Отчеты по зарплате" и предоставляет подробную информацию обо всех расчетах с сотрудниками. Он имеет гибкие настройки для отбора, сортировки и группировки данных по сотрудникам, видам начислений и другим критериям.
  2. "Штатные сотрудники": Для получения базовой информации о сотрудниках, такой как должность, дата приема и текущий оклад (или тарифная ставка), мы можем использовать отчет "Штатные сотрудники" в разделе "Кадры" -> "Отчеты по кадрам". Его также можно настроить, выбрав необходимые поля.

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

Заключение

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

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

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

← На главную