При разработке отчетов или доработке форм в конфигурации Зарплата и кадры государственного учреждения (ЗИКГУ) 3.1 часто возникает задача вывести текущий процент надбавки за выслугу лет в карточку сотрудника или печатную форму. Многих разработчиков смущает тот факт, что в регистрах сведений, например, в Значения периодических показателей расчета зарплаты, эти данные отсутствуют. Давайте разберемся, почему так устроено и как правильно получить эти данные программным путем.
Первое, что важно усвоить: надбавка за выслугу лет является расчетным показателем. В отличие от оклада или персональной надбавки, которые имеют фиксированное значение, заданное пользователем в карточке сотрудника или через документ изменения плановых начислений, процент выслуги лет напрямую зависит от стажа. Стаж же, в свою очередь, постоянно меняется во времени — он зависит от даты приема на работу и текущей даты расчета.
Разработчики типовой конфигурации реализовали это так, чтобы значение вычислялось «на лету» в момент расчета зарплаты. Это позволяет избежать проблем с актуализацией данных, когда стаж сотрудника увеличивается и должен приводить к автоматическому изменению процента надбавки без необходимости перепроведения документов назначения начислений.
Если вам нужно получить данные в рамках уже имеющегося запроса, например, при формировании отчета, самым очевидным (но требующим аккуратности) способом является использование Левого соединения. Мы можем подтянуть данные из таблиц, где хранятся настройки надбавок. Однако стоит помнить, что этот путь требует самостоятельного расчета стажа на конкретную дату.
Разберем логику: для получения результата нам необходимо знать дату приема сотрудника и текущую дату расчета. Разность между ними дает нам стаж. Далее, на основании полученного значения, мы должны обратиться к шкале надбавки, которая настроена в системе.
Пример структуры запроса:
ВЫБРАТЬ
Сотрудники.Ссылка КАК Сотрудник,
ПроцентНадбавки.Процент КАК ПроцентНадбавки
ИЗ
Справочник.Сотрудники КАК Сотрудники
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ПроцентНадбавкиЗаВыслугуЛет КАК ПроцентНадбавки
ПО Сотрудники.Ссылка = ПроцентНадбавки.Сотрудник
Однако, данный метод не всегда учитывает перерывы в стаже, что является критичным для государственных учреждений. Поэтому мы рекомендуем использовать более надежный подход.
Самый надежный и профессиональный способ получения данных в 1С — это использование встроенных методов конфигурации. В ЗИКГУ 3.1 существует развитый механизм расчета начислений, инкапсулированный в общих модулях. Мы рекомендуем использовать методы модуля РасчетЗарплатыРасширенный.
Почему этот способ лучше:
Проанализируем задачу по шагам:
ПроцентНадбавки).Шкалы оценки стажа, привязанные к этому показателю.Помните, что для корректного расчета стажа важно, чтобы кадровые данные (дата приема, записи о стаже) были корректно занесены в систему. Если стаж сотрудника не заполнен, методы расчета вернут нулевой или некорректный результат. Поэтому первым делом всегда проверяйте заполненность стажа у сотрудника в его карточке.
В процессе совместной работы с кодом всегда отдавайте предпочтение типовым функциям перед прямыми запросами. Это сэкономит время при поддержке программы и обеспечит корректность расчетов при любых изменениях в законодательстве, которые фирма «1С» оперативно учитывает именно в модулях расчета, а не в структуре хранения данных.