Девальвация в Беларуси. Новое округление розничных цен или как взять на работу программиста

Эта статья рассчитана на тех, кто работает с "белорусской" розницей и только начинает свой путь в качестве программиста в 1с. Но будет полезна и специалистам более высокого класса. Особенно если вы хотите нанять 1с программиста на работу. В любом случае я не претендую на исключительную полезность этой статьи, но хотелось бы поделиться простым решением тривиальной задачи.

Как известно, в Беларуси  произошла девальвация рубля. В связи с этим Нацбанк решило вывести из обращения мелкие купюры достоинством 10 рублей и 20 рублей. Поэтому пару дней назад  вышло новое постановление Минторга об округлении розничных цен

Розничная цена (тариф) округляется за принятую единицу измерения (штуку, десяток, метр, килограмм, литр и т.п.). Так, значения в сумме до Br25 отбрасываются, от Br25 включительно до Br75 округляются до Br50, от Br75 рублей включительно и выше округляются до Br100.

 

Таким образом возникла задача: «Срочно сделать округление розничных цен по новым правилам в прейскурантах на товары»

 Ранее было округление до 10 рублей, что решается так 

ОркЦена = ОКР(РозничнаяЦена,-1)

 

Но здесь задача немного усложнилось:

  •  Если последние две цифры в цене меньше 25 рублей (т.е. 24 и менее), то округляем до 0 рублей  (ОКР(РозничнаяЦена,-2))
  •  Если последние две цифры в цене 25 рублей и более, то округляем до 50 рублей
  •  Если последние две цифры в цене меньше 75 рублей, то округляем до 50 рублей
  •  Если последние две цифры в цене 75 рублей и более, то округляем до 100 рублей

 

Можно решать задачу в лоб:

Получить две последние цифры розничной Цены. Проверить по условиям и прибавить опять результат к  Цене

 

 


 

Но есть вариант проще.

Достаточно переформулировать задачу и она решается в две строки (ну или даже в одну Laughing).

 

Известно, что минимальная цена будет округляться до 50 рублей, а это можно считать базовым значением. В итоге получаем:

Цену нужно поделить на 50, затем округлить, а затем умножить на 50.

Вот такая простая формула.

 Функцию можно  создать в глобальном модуле

Функция ОкруглениеРозничнойЦены(РозничнаяЦена) Экспорт
ОкрЦена = Окр(РозничнаяЦена/50);
Возврат ОкрЦена*50;
КонецФункции

 

Или ещё проще:

Функция ОкруглениеРозничнойЦены(РозничнаяЦена) Экспорт
Возврат Окр(РозничнаяЦена/50)*50;
КонецФункции

 

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

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

 

 

 

5 Comments

  1. wer_alex

    У меня это решилось изменением константы Кратность = Константа.КратностьОкругления;

    ЦенаР = Окр(П_ЦенаР / Кратность, 0,1)*Кратность; Алгоритм тото же

    Reply
  2. rumik007

    а может лучше в типе цены указать округлять к 50 по арифметическим правилам ))).

    Reply
  3. igor_1c
    rumik007 пишет:

    а может лучше в типе цены указать округлять к 50 по арифметическим правилам ))).

    ну это если они есть и используются в конфигурации

    Reply
  4. headMade

    спс, сення пригодилось

    Reply
  5. Darida

    спс — взяла сегодня на заметку)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *