Как программно получить процент надбавки за выслугу лет в 1С:ЗИКГУ 3.1?

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

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

Почему процент надбавки отсутствует в регистрах?

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

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

Вариант 1: Использование запроса к данным

Если вам нужно получить данные в рамках уже имеющегося запроса, например, при формировании отчета, самым очевидным (но требующим аккуратности) способом является использование Левого соединения. Мы можем подтянуть данные из таблиц, где хранятся настройки надбавок. Однако стоит помнить, что этот путь требует самостоятельного расчета стажа на конкретную дату.

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

Пример структуры запроса:


ВЫБРАТЬ
    Сотрудники.Ссылка КАК Сотрудник,
    ПроцентНадбавки.Процент КАК ПроцентНадбавки
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ 
    РегистрСведений.ПроцентНадбавкиЗаВыслугуЛет КАК ПроцентНадбавки
    ПО Сотрудники.Ссылка = ПроцентНадбавки.Сотрудник

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

Вариант 2: Использование функций типовых модулей (рекомендуемый способ)

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

Почему этот способ лучше:

  1. Автоматический учет логики: Функции модуля сами знают, какой вид стажа (общий, непрерывный, специальный) необходим для конкретного начисления.
  2. Корректная обработка дат: Вам не нужно вручную высчитывать разность дат — система делает это с учетом настроек конфигурации.
  3. Надежность: При обновлении конфигурации вы не рискуете тем, что структура хранения данных в регистрах изменится, так как вы обращаетесь к API программы, а не напрямую к таблицам БД.

Как реализовать получение значения?

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

  1. Найдем в конфигураторе вид начисления, отвечающий за выслугу лет. В его формуле указано, какой именно показатель используется (например, ПроцентНадбавки).
  2. Изучим настройки Шкалы оценки стажа, привязанные к этому показателю.
  3. В коде модуля обратимся к методам расчета стажа на заданную дату.

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

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

← На главную