Как в 1С:ЗУП 3.1 настроить автоматический расчет и отображение стажа сотрудников

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

Одной из частых задач кадрового учета является контроль стажа сотрудников. В программе 1С:Зарплата и управление персоналом 8.3 начинающие пользователи часто сталкиваются с вопросом: как сделать так, чтобы стаж работы в организации обновлялся автоматически, и его не нужно было вводить вручную каждый месяц? В этой статье мы подробно разберем механизмы работы со стажем, настроим автоматические вычисления и научимся выводить актуальные данные в отчеты.

Понимание механизмов расчета стажа в 1С

Для начала проанализируем, как система 1С воспринимает понятие «стаж». Важно разделять два принципиально разных вида данных:

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

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

Ввод исходных данных для расчета стажа

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

  1. Перейдем в раздел КадрыСотрудники.
  2. Откроем карточку нужного сотрудника.
  3. Найдем гиперссылку Трудовая деятельность (в некоторых версиях она находится внутри раздела «Личные данные» или доступна прямо из основной формы).
  4. В открывшемся окне мы увидим таблицу Стажи общего характера.

Важный момент: если мы хотим, чтобы программа считала «Общий стаж» (включающий предыдущие места работы), нам нужно добавить запись с видом стажа ОбщийСтаж и указать дату, на которую этот стаж был актуален (обычно это день приема), а также количество лет, месяцев и дней. Однако для стажа внутри нашей организации в этой таблице ничего заполнять не нужно! Система сама определит его по кадровым документам.

Настройка отчета для вывода стажа

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

  1. Откроем раздел КадрыКадровые отчетыШтатные сотрудники.
  2. Нажмем кнопку Настройки, выберем вид Расширенный.
  3. Перейдем на вкладку Поля и сортировки. Здесь мы можем управлять составом колонок нашего отчета.
  4. Нажмем кнопку Добавить. Перед нами откроется дерево доступных полей.
  5. Нам нужно найти группу Работа, а внутри нее — Стажи.

Посмотрим на пример: в дереве полей выберем Стаж работы в организации (расшифровка). Это поле выведет данные в формате «5 лет 2 месяца 10 дней». Если же нам нужны числовые показатели для анализа, можно выбрать Стаж работы в организации (месяцев) или Стаж работы в организации (лет).

Техническая реализация (информация для программистов)

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

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


// Пример получения стажа в месяцах для сотрудника
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Сотрудники.Ссылка КАК Сотрудник,
    |	РАЗНОСТЬДАТ(КадровыеДанныеСотрудников.ДатаПриема, &Период, МЕСЯЦ) КАК СтажВМесяцах
    |ИЗ
    |	Справочник.Сотрудники КАК Сотрудники
    |		ЛЕВОЕ СОЕДИНЕНИЕ ПредставленияОписательнойМодели.КадровыеДанныеСотрудников(&Период, ) КАК КадровыеДанныеСотрудников
    |		ПО Сотрудники.Ссылка = КадровыеДанныеСотрудников.Сотрудник
    |ГДЕ
    |	Сотрудники.Ссылка = &ВыбранныйСотрудник";

Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("ВыбранныйСотрудник", Объект.СотрудникСсылка);
Результат = Запрос.Выполнить();

Важно: При использовании функции РАЗНОСТЬДАТ с параметром МЕСЯЦ, система считает календарные месяцы. Для точного кадрового учета стажа (где учитывается количество дней в каждом месяце) рекомендуется использовать типовые механизмы ЗУП, такие как функцию СтажСотрудника из программного интерфейса конфигурации.

Решение проблем при расчете стажа

Иногда возникают ситуации, когда стаж отображается неверно. Выясним основные причины:

  1. Дублирование сотрудников: Если сотрудник был уволен и принят заново, программа может считать стаж только по текущему рабочему месту. Чтобы учесть предыдущий период работы в этой же организации, необходимо правильно заполнить Трудовую деятельность в карточке физического лица.
  2. Отсутствие документа приема: Если данные переносились из старых программ (например, из 7.7) «обрезанием» базы, убедитесь, что в системе зафиксирована корректная Дата приема. Проверить это можно в регистре сведений КадроваяИсторияСотрудников.
  3. Настройка видов стажа: Убедитесь, что для расчета надбавок (например, за выслугу лет) в настройках начисления правильно выбран вид стажа.

Использование расширений для автоматизации

Если типовых отчетов недостаточно, мы можем создать небольшое расширение, которое будет выводить стаж прямо в список сотрудников. Это позволит кадровику видеть информацию без формирования отдельных отчетов.

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


// Фрагмент кода для расширения формы списка
&НаСервере
Процедура РасчитатьСтажДляСписка(СтрокиСписка)
    Для Каждого Строка Из СтрокиСписка Цикл
        ДатаПриема = Строка.Данные.ДатаПриема;
        Если ЗначениеЗаполнено(ДатаПриема) Тогда
            Строка.Данные.СтажТекст = КадровыйУчет.РассчитатьСтаж(ДатаПриема, ТекущаяДата());
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

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

← На главную