Как округлить отображение тарифной ставки в документе Прием на работу

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

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

Анализируем настройки показателей расчета

Первым делом нам необходимо исключить настройки самих данных. В системе 1С за точность хранения и вывода числовых значений в документах начисления отвечают настройки конкретных показателей. Проанализируем настройки справочника Показатели расчета зарплаты.

  1. Перейдем в раздел Настройка — Показатели расчета зарплаты.
  2. Найдем в списке показатель Оклад (или Тарифная ставка).
  3. Проверим значение в поле Точность.

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

Особенности расчета «от обратного» (Net-to-Gross)

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

Поскольку налоги и взносы (ОПВ, ИРН) рассчитываются в процентном соотношении, обратный расчет практически всегда дает бесконечную или длинную дробь. Например, чтобы получить ровно 100 000 тенге «на руки», основной оклад может составлять 111 111,111... тенге. Если система принудительно округлит это число до целого в самом документе, то при финальном расчете зарплаты в конце месяца сумма «на руки» может не совпасть на 1 тенге из-за накопленной погрешности. Именно поэтому платформа отображает точное дробное значение в режиме просмотра.

Настройка формата элемента на управляемой форме

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

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

  1. Откроем конфигуратор и найдем форму документа Прием на работу.
  2. Найдем поле, отображающее оклад (обычно оно связано с данными таблицы Начисления).
  3. В свойствах поля в строке Формат нажмем кнопку выбора.
  4. Установим параметр ЧДЦ (Число десятичных знаков) равным «0».

Визуально строка формата будет выглядеть так: ЧЦ=15; ЧДЦ=0. Это гарантирует, что даже если в базе хранится число 82525.5, пользователь всегда будет видеть 82526.

Программное изменение данных при выводе на форму

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

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


// Пример корректировки данных в таблице начислений на форме
Для Каждого СтрокаНачисления Из Объект.Начисления Цикл
    Если СтрокаНачисления.Показатель = Справочники.ПоказателиРасчетаЗарплаты.Оклад Тогда
        // Принудительно округляем значение для отображения
        СтрокаНачисления.Значение = Окр(СтрокаНачисления.Значение, 0, РежимОкругления.Окр15как20);
    КонецЕсли;
КонецЦикла;

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

Рекомендации по исправлению без изменения кода

Если вы не хотите вносить изменения в конфигурацию, попробуйте следующие действия:

Таким образом, мы выяснили, что причина кроется либо в математической точности расчета «от обратного», либо в настройках формата отображения управляемой формы. Наиболее безопасным методом исправления является корректировка свойства Формат у элемента формы Оклад.

← На главную