Почему в ЗУП 2.5 при кадровом перемещении не подтягивается оклад из штатного расписания и как это исправить

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

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

Анализ стандартного поведения системы

В типовой конфигурации ЗУП 2.5 реализована тесная связь между штатным расписанием и кадровыми документами, но она имеет свои особенности. Разберем ситуацию: в штатном расписании для каждой позиции заполнена так называемая «вилка» окладов (минимальная и максимальная ставки) и указан перечень надбавок. Когда мы создаем документ Кадровое перемещение и выбираем новую должность, программа обращается к регистру сведений ШтатноеРасписание.

Проанализируем, что происходит в этот момент:

  1. Система считывает данные из подчиненного регистра НадбавкиШтатногоРасписания. Поскольку надбавки там зафиксированы конкретными значениями, программа без труда подставляет их в табличную часть «Начисления».
  2. Для основного оклада ситуация иная. В регистре ШтатноеРасписание оклад хранится в двух ресурсах: МинимальнаяТарифнаяСтавка и МаксимальнаяТарифнаяСтавка.

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

Техническое исследование механизмов заполнения

Рассмотрим структуру хранения данных в конфигураторе. Основные сведения о позициях штатного расписания находятся в регистре сведений ШтатноеРасписание. При изменении реквизита Должность (или ПодразделениеОрганизации) в документе Кадровое перемещение срабатывает обработчик события, который вызывает процедуры заполнения начислений.

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

Посмотрим на структуру ресурсов регистра ШтатноеРасписание:

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

Настройка контроля штатного расписания

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

Здесь расположен флаг «Контролировать соответствие штатному расписанию». Рассмотрим, на что он влияет:

Решение проблемы путем программной доработки

Если бизнес-процессы компании требуют обязательного автоматического заполнения оклада (например, по минимальной границе штатного расписания), потребуется внесение изменений в код конфигурации. Разберем по шагам, как реализовать такую доработку.

Нам необходимо модифицировать процедуру, отвечающую за обновление состава начислений при изменении позиции штатного расписания в документе КадровоеПеремещение. Обычно это делается в модуле формы документа или в общем модуле ЗаполнениеДокументов.

Пример логики, которую необходимо внедрить:


// Псевдокод для реализации подтягивания минимального оклада
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ШтатноеРасписание.МинимальнаяТарифнаяСтавка КАК Оклад
    |ИЗ
    |   РегистрСведений.ШтатноеРасписание КАК ШтатноеРасписание
    |ГДЕ
    |   ШтатноеРасписание.ПодразделениеОрганизации = &Подразделение
    |   И ШтатноеРасписание.Должность = &Должность";

Запрос.УстановитьПараметр("Подразделение", НовоеПодразделение);
Запрос.УстановитьПараметр("Должность", НоваяДолжность);

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    // Находим в ТЧ Начисления строку с основным окладом и обновляем показатель
    Для Каждого СтрокаНачисления Из ТЧ_Начисления Цикл
        Если СтрокаНачисления.ВидРасчета = ВидРасчетаОклад Тогда
            СтрокаНачисления.Показатель1 = Выборка.Оклад;
        КонецЕсли;
    КонецЦикла;
КонецЕсли;

Рассмотрим подробнее этот алгоритм. При смене должности мы программно обращаемся к актуальной записи штатного расписания, получаем значение МинимальнаяТарифнаяСтавка и присваиваем его основному показателю в строке начисления. Обратите внимание, что необходимо точно определить, какой ВидРасчета в вашей базе считается «окладом».

Использование механизма кнопки «Заполнить»

Проанализируем альтернативный способ без изменения кода. В документе Кадровое перемещение на вкладке «Начисления» часто присутствует кнопка «Заполнить». Посмотрим на ее варианты:

  1. По штатному расписанию: этот вариант перезаполнит только надбавки.
  2. По данным сотрудника: этот вариант вернет те значения, которые были у сотрудника до перемещения.

К сожалению, в типовой ЗУП 2.5 ПРОФ ни один из штатных вариантов заполнения не подтягивает сумму из ресурсов МинимальнаяТарифнаяСтавка/МаксимальнаяТарифнаяСтавка напрямую в основное начисление. Это функциональная особенность версии 2.5, которая была исправлена и значительно переработана уже в версии 3.1.

Итоги и рекомендации

Подведем итог нашему исследованию ситуации в ЗУП 2.5:

Для решения задачи мы рекомендуем либо производить ручной ввод оклада, сверяясь с печатной формой Т-3, либо реализовать небольшую доработку в коде, которая будет брать минимальное значение из вилки окладов. Также стоит рассмотреть возможность перехода на современную редакцию ЗУП 3.1, где работа со штатным расписанием и тарифными группами реализована гораздо гибче и автоматизирована «из коробки».

← На главную