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