При разработке печатных форм для документа Прием на работу в программе «1С:Зарплата и управление персоналом 3.1» (ЗУП 3.1) разработчики часто сталкиваются с проблемой поиска актуального процента северной надбавки (СН). В отличие от обычных начислений, северная надбавка имеет сложную структуру хранения, так как она зависит от стажа сотрудника, территориальных условий и группы надбавки. В этой статье мы подробно разберем, где искать эти данные и как правильно их извлекать программным способом.
Для того чтобы вывести северную надбавку в печатную форму, недостаточно просто найти одну таблицу. Данные распределены по нескольким регистрам сведений, каждый из которых выполняет свою роль в механизме расчета:
Проанализируем ситуацию: если мы просто обратимся к регистру ПроцентыСевернойНадбавкиФизическихЛиц, мы получим потенциально возможный процент для человека. Но если сотрудник принимается на работу в московский филиал, где нет северной надбавки, выводить этот процент в печатную форму приказа о приеме будет ошибкой.
Рассмотрим рекомендации опытных разработчиков. В современных конфигурациях на базе 1С:Предприятие 8.3 крайне не рекомендуется писать прямые запросы к регистрам сведений, если для этого существуют готовые функции в программном интерфейсе (API). Это связано с тем, что структура регистров может измениться в будущих обновлениях, и ваш код перестанет работать.
Для получения процента северной надбавки в ЗУП 3.1 следует использовать функции общего модуля КадровыйУчетРасширенный. Разберем пример кода, который позволяет получить актуальный процент на дату формирования документа:
// Пример получения процента северной надбавки для сотрудника
ДатаСведений = Объект.ДатаПриема; // или ДатаДокумента
ПроцентСН = КадровыйУчетРасширенный.ПроцентСевернойНадбавки(Объект.ФизическоеЛицо, ДатаСведений);
Если ПроцентСН <> 0 Тогда
// Выводим значение в печатную форму
КонецЕсли;
Эта функция удобна тем, что она учитывает все внутренние механизмы программы: анализирует шкалы, стаж и актуальность данных на конкретный момент времени. Выясним причину, по которой это решение является наиболее стабильным: оно инкапсулирует в себе логику «среза последних» и обработки будущих записей регистра.
Как было замечено в обсуждении, наличие записи в регистре по физлицу не гарантирует выплату. Проанализируем условия, при которых северная надбавка должна попадать в печатную форму документа Прием на работу:
Если вам нужно проверить, назначена ли надбавка именно в текущем документе, лучше обратиться к табличной части Начисления самого документа ПриемНаРаботу. Посмотрим на пример проверки:
// Проверка наличия северной надбавки в документе
НадбавкаНайдена = Ложь;
Для Каждого СтрокаНачисления Из Объект.Начисления Цикл
// Проверяем по категории начисления или конкретному виду
Если СтрокаНачисления.Начисление.КатегорияНачисления = Перечисления.КатегорииНачисленийИУдержаний.СевернаяНадбавка Тогда
НадбавкаНайдена = Истина;
ТекущийПроцент = СтрокаНачисления.Показатель1; // Обычно первый показатель - это процент
Прервать;
КонецЕсли;
КонецЦикла;
Такой подход гарантирует, что вы выведете именно то значение, которое было утверждено кадровиком в момент приема сотрудника на работу, включая возможные ручные корректировки.
Важно помнить об особенности ЗУП 3.1: программа автоматически рассчитывает даты изменения процента СН. Если мы заглянем в регистр ПроцентыСевернойНадбавкиФизическихЛиц, мы можем увидеть там записи на годы вперед. Поэтому при формировании запроса или использовании функций всегда строго контролируйте Дату среза. Для документа приема это всегда должна быть либо дата самого документа, либо дата приема сотрудника на работу.
Использование временных таблиц в сложных запросах для печати также является хорошим тоном. В ЗУП реализован механизм формирования ВТ (временных таблиц) с данными сотрудников, где поля СевернаяНадбавкаПроцент и РайонныйКоэффициент заполняются автоматически стандартными процедурами. Если вы строите сложную форму, рекомендуем подключаться к стандартному механизму печати, используя менеджер печати и переопределяя только те области, которые вам необходимы.
Резюмируем: для быстрого решения используйте функцию КадровыйУчетРасширенный.ПроцентСевернойНадбавки. Для максимально точного соответствия данным документа — анализируйте табличную часть Начисления. А если требуется понимание структуры хранения — ищите данные в регистре сведений ПроцентыСевернойНадбавкиФизическихЛиц.