Как в 1С Округлять числа программно
Сразу скажу что я не гуру 1С программист, опыт у меня не совсем большой но все же он есть. Я достаточно часто пишу статьи в которых стараюсь поделиться полезными советами или дать более полный ответ на какой либо вопрос касаемый 1С разработки. Я когда то сам был новичком и пытался найти ответы на свои вопросы на различных форумах. Где как правило сидят опытные программисты и они дают советы с высоты своего опыта. Которые в свою очередь новичкам мало чем помогают. Сегодня хочу разобрать тему округления чисел. Поговорим об округление целой и дробной части.
Если вы только начинаете свой путь 1С программиста то рекомендую прочитать следующие статьи.
Как рассчитать сумму всех строкам табличной части
Как изменить дату в ТЧ у всех записей
Как пользоваться оператором «Подобно» в запросах
Программное округление целой и дробной части числа
И так программно можно округлить любое число как до целых так и до десятых , сотых. Делается это с помощью функции Окр, синтаксис такой.
Окр(Число , 0, 0);
Окр — сама функция
Число — соответственно число которое хотим округлить
0 — разрядность, число знаков после запятой
0 — Режим округления 0 в меньшую сторону 1 в большую, его можно не указывать по умолчанию всегда 0
Скажем если взять число = 12,123 то после применения Окр(Число , 0, 0); число будет 12.
Надеюсь объяснил понятно если нет то можете открыть Синтаксис-помощник.
Для примера я сделал форму, на которой размести реквизит «Цена» и 4 кнопки. Первая округляет введённое число в большую сторону, вторая в меньшею. Т.е если будет например число 10,12 при нажатии первой кнопки число округлиться до 11 а при нажатии второй до 10.
Третья и четвертая кнопка округляет дробную часть, т.е копейки, возьмем тоже число 10,12. Если нажмем третью кнопку результатом будет число 10,20, а если нажмем четвертую то 10,10.
Допустим у вас есть табличная часть, в которой выбирается номенклатура и подставляется цена из справочника. Что бы округлить число в этом случае нужно создать событие при изменение табличной части и написать вот такой код.
&НаКлиенте
Процедура ТабличнаяЧастьПриИзмененииПосле(Элемент)
// Вставить содержимое обработчика.
Округление = Элементы.ТабличнаяЧасть.ТекущиеДанные;
Округление.Сумма = Окр(Округление.Сумма-0.05,1);КонецПроцедуры
В результате все суммы будут округлены до сотых причем в меньшую сторону. Надеюсь все объяснил достаточно подробно но если остались вопросы обязательно спрашивайте!
Спасибо огромное!