Как вывести показатели стажа и качества в печатную форму документа 1С?

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

При разработке печатных форм в конфигурациях 1С, таких как 1С:Зарплата и Управление Персоналом, часто возникает необходимость вывести дополнительные показатели, которые не всегда лежат «на поверхности» в табличной части документа. Рассмотрим, как правильно работать с данными о стаже и качестве, чтобы корректно отображать их в печатных формах.

Разбор архитектуры данных: где хранятся показатели

Многие начинающие разработчики совершают ошибку, пытаясь найти абсолютно все данные в табличной части документа. Однако в 1С показатели делятся на:

  1. Показатели документа: те, что пользователь ввел вручную непосредственно в табличную часть КадровыйПеревод.
  2. Периодические показатели: те, что хранятся в специальных регистрах сведений, так как их значения могут меняться во времени.

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

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

Для получения данных по конкретному показателю (например, «Качество») лучше всего использовать запрос к регистру сведений. Важно избегать метода НайтиПоНаименованию, так как он делает код зависимым от языка и действий пользователя. Используйте передачу ссылки на элемент справочника ПоказателиРасчетаЗарплаты через параметр запроса.

Пример запроса для получения данных из регистра:


ВЫБРАТЬ
    Т.Значение КАК Значение
ИЗ
    РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников КАК Т
ГДЕ
    Т.Регистратор = &Регистратор
    И Т.Показатель = &СсылкаНаПоказатель

Методика расчета стажа

Стаж — это не просто число, записанное в базе. Это результат вычисления разности дат. В 1С существует два основных подхода к решению этой задачи:

  1. Использование типовых функций: В конфигурациях есть общие модули (например, КадровыйУчет), содержащие функции для расчета стажа на заданную дату. Это самый надежный путь, так как он учитывает все особенности законодательства и исключения.
  2. Работа с регистром накопления: Если вам необходимо получить уже рассчитанный стаж, обратитесь к РегистрСведений.НакопленныеСтажиФизическихЛиц.

Рассмотрим пример функции для вычисления разности между датами:


Процедура ПолучитьСтажЗаПериод(Знач ДатаОкончанияПериода, Знач ДатаНачалаПериода, Лет=0, Месяцев=0, Дней=0) Экспорт
    Если ДатаОкончанияПериода >= ДатаНачалаПериода Тогда
        // Логика расчета разности дат
        // Приведение к целочисленным значениям
        Лет = Год(ДатаОкончанияПериода) - Год(ДатаНачалаПериода);
        // ... (дальнейшая логика вычислений)
    КонецЕсли;
КонецПроцедуры

Практические рекомендации по реализации

Чтобы вывести процент надбавки за стаж, выполним следующие шаги:

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

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

← На главную