Как известно, в Беларуси произошла девальвация рубля. В связи с этим Нацбанк решило вывести из обращения мелкие купюры достоинством 10 рублей и 20 рублей. Поэтому пару дней назад вышло новое постановление Минторга об округлении розничных цен
Розничная цена (тариф) округляется за принятую единицу измерения (штуку, десяток, метр, килограмм, литр и т.п.). Так, значения в сумме до Br25 отбрасываются, от Br25 включительно до Br75 округляются до Br50, от Br75 рублей включительно и выше округляются до Br100.
Таким образом возникла задача: "Срочно сделать округление розничных цен по новым правилам в прейскурантах на товары"
Ранее было округление до 10 рублей, что решается так
ОркЦена = ОКР(РозничнаяЦена,-1)
Но здесь задача немного усложнилось:
- Если последние две цифры в цене меньше 25 рублей (т.е. 24 и менее), то округляем до 0 рублей (ОКР(РозничнаяЦена,-2))
- Если последние две цифры в цене 25 рублей и более, то округляем до 50 рублей
- Если последние две цифры в цене меньше 75 рублей, то округляем до 50 рублей
- Если последние две цифры в цене 75 рублей и более, то округляем до 100 рублей
Можно решать задачу в лоб:
Получить две последние цифры розничной Цены. Проверить по условиям и прибавить опять результат к Цене
Но есть вариант проще.
Достаточно переформулировать задачу и она решается в две строки (ну или даже в одну ).
Известно, что минимальная цена будет округляться до 50 рублей, а это можно считать базовым значением. В итоге получаем:
Цену нужно поделить на 50, затем округлить, а затем умножить на 50.
Вот такая простая формула.
Функцию можно создать в глобальном модуле
Функция ОкруглениеРозничнойЦены(РозничнаяЦена) Экспорт
ОкрЦена = Окр(РозничнаяЦена/50);
Возврат ОкрЦена*50;
КонецФункции
Или ещё проще:
Функция ОкруглениеРозничнойЦены(РозничнаяЦена) Экспорт
Возврат Окр(РозничнаяЦена/50)*50;
КонецФункции
В данный момент функция может быть полезна, только для тех кто программирует розницу в беларуском законодательстве.
Но такая простенькая задача, возможно, пригодится, тем кто нанимает 1с программистов на работу. Задайте такой вопрос на собеседовании, и вы уже сможете отделить начинающих программистов от специалистов более высокого уровня.