В процессе эксплуатации системы 1С:Зарплата и управление персоналом 3.1 (особенно начиная с релизов ветки 3.1.12 и выше) пользователи часто сталкиваются с ситуацией, когда в документе Разовое начисление колонка Тариф (или любой другой числовой показатель) ведет себя некорректно. Вы вводите значение, система визуально «задумывается», инициируя пересчет, но результат не выводится, а после записи документа значение показателя вовсе исчезает.
В данной статье мы подробно разберем причины такого поведения системы, проанализируем изменения в логике разработчиков 1С и найдем способы исправления этой ситуации без использования программных правок и расширений.
Первым делом проанализируем ситуацию, которая сложилась у большинства пользователей после обновления конфигурации. Раньше система позволяла вводить значения показателей вручную в документах начисления, даже если в настройках самого показателя стоял признак Накапливается по нескольким документам. Однако в последних версиях платформы и конфигурации ЗУП Проф/Корп разработчики ужесточили контроль за типами данных.
Основная проблема заключается в несоответствии настройки показателя способу его ввода в документе. Если для показателя (например, Тариф) установлено, что он Накапливается, программа ожидает, что данные в регистры попадут через документ Данные для расчета зарплаты. Когда вы пытаетесь ввести это значение напрямую в Разовом начислении, система воспринимает это как методическую ошибку и игнорирует введенные данные при записи, так как механизм накопления работает через другие регистры накопления.
Рассмотрим пошагово, как изменить настройки показателя, чтобы он корректно сохранялся в документе Разовое начисление:
Тариф).После этой настройки при добавлении сотрудника в документ Разовое начисление поле показателя станет доступным для редактирования, а введенное значение будет успешно сохраняться в базе данных и участвовать в расчете формулы.
Иногда изменение настройки самого показателя недостаточно. Выясним причину, почему колонка может быть вообще недоступна для ввода или не отображаться. Нам нужно проверить настройки самого начисления:
Тариф не стоит галочка, система не позволит вводить его значение в документе, даже если сам показатель настроен правильно.Рассмотрим пример формулы, который часто вызывает затруднения:
Тариф * КалендарныеДни * 8
В этой формуле используется три компонента. Проанализируем каждый из них с точки зрения корректности работы в Разовом начислении:
Разовое начисление он не всегда заполняется автоматически, так как этот документ предназначен для сумм, не зависящих от отработанного времени (в отличие от Начисления зарплаты и взносов). Если система не может определить период, этот показатель будет равен нулю, и результат расчета также будет нулевым.Если ваша формула сложнее и включает в себя показатели, зависящие от стажа или других кадровых данных, убедитесь, что на дату документа Разовое начисление эти данные актуальны для сотрудника.
Посмотрим на ситуацию под другим углом. Если в настройках состава начислений и удержаний (раздел Настройка — Расчет зарплаты — Настройка состава начислений и удержаний) включена опция Использовать несколько тарифных ставок для одного сотрудника, поведение поля Тариф может измениться.
В этом случае система может ожидать привязки показателя к конкретному виду ставки. Если в формуле используется неопределенный Тариф, программа может «подвисать», пытаясь сопоставить введенное значение с кадровыми данными. В такой ситуации рекомендуется использовать настройку показателя Во всех месяцах после ввода значения (постоянное использование), чтобы значение назначалось кадровым приказом, а в Разовом начислении лишь подтягивалось автоматически.
Проанализируем техническую сторону вопроса. В некоторых релизах ветки 3.1.12.113 был зафиксирован баг, связанный с фоновым пересчетом строк. Когда в документе много сотрудников, ввод значения в одной строке запускает фоновое задание по расчету всей таблицы.
Если в этот момент происходит блокировка таблиц или прерывание связи с сервером, визуально данные остаются в поле, но в физическую таблицу базы данных они не попадают. Рекомендуем в таких случаях:
Таким образом, мы выяснили, что большинство проблем с «исчезающим» тарифом в разовых начислениях решается простым изменением методической настройки показателя с режима накопления на режим ввода непосредственно в документе. Это устраняет конфликт логики программы и позволяет корректно рассчитывать результат.