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