Округление в большую сторону до определенных цифр

1. user800527 18.08.22 20:38 Сейчас в теме
Доброго времени суток. Сам далек от программирования, скорее, уверенный пользователь 1С, но хочу помочь человеку. Если вкратце, то у собственника магазина жены своеобразное восприятие мира - хочет, чтобы розничные цены в магазине заканчивались только на 0, 3, 5 или 8 рублей, округление в большую сторону. Сейчас на калькуляторах считают и в уме по этому правилу округляют. Сел сам попробовать формулу написать, но что-то не особо успешно. Понимаю, что, скорее всего, в формуле надо использовать округление до целого и остаток от деления на 10, а дальше уже использовать "если"... Но сообразить полную формулу пока не получается. Буду благодарен за любую наводку.
По теме из базы знаний
Найденные решения
6. user800527 18.08.22 21:46 Сейчас в теме
?(([ЦенаПоступления]*1.5) % 10 > 8, Цел(([ЦенаПоступления]*1.5)/10)*10+10, ?(([ЦенаПоступления]*1.5) % 10 > 5, Цел(([ЦенаПоступления]*1.5)/10)*10+8, ?(([ЦенаПоступления]*1.5) % 10 > 3, Цел(([ЦенаПоступления]*1.5)/10)*10+5, Цел(([ЦенаПоступления]*1.5)/10)*10+3)))


Вот, товарищ подсказал.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ishelper 18.08.22 20:56 Сейчас в теме
(1)
Понимаю, что, скорее всего, в формуле надо использовать округление до целого и остаток от деления на 10, а дальше уже использовать "если"
Ну, если так, то:
Цена=Окр(Цена,0,1);
ОстатокОтДеления=Цена%10;
Если ОстатокОтДеления>8 Тогда
   Цена=Цена-ОстатокОтДеления+10;
ИначеЕсли ОстатокОтДеления>5 Тогда
   Цена=Цена-ОстатокОтДеления+8;
ИначеЕсли ОстатокОтДеления>3 Тогда
   Цена=Цена-ОстатокОтДеления+5;
ИначеЕсли ОстатокОтДеления>0 Тогда
   Цена=Цена-ОстатокОтДеления+3;
КонецЕсли;
Показать
3. spacecraft 18.08.22 21:21 Сейчас в теме
(1) как вариант:
Остаток = Цена%10;
Цена = Цел(Цена/10)*10;
Если Остаток > 8 Тогда
	Цена = Цена + 10;
ИначеЕсли Остаток > 5 Тогда
	Цена = Цена + 8;
ИначеЕсли Остаток > 3 Тогда
	Цена = Цена + 5;
ИначеЕсли Остаток > 0 Тогда
	Цена = Цена + 3;
КонецЕсли;
Показать
4. user800527 18.08.22 21:27 Сейчас в теме
Благодарю, сейчас буду разбираться как оно работает.
5. user800527 18.08.22 21:39 Сейчас в теме
Пока получаю ошибку, наверное это не для конструктора цен код. Пробовал и с "Возврат Цена" и без.
Прикрепленные файлы:
6. user800527 18.08.22 21:46 Сейчас в теме
?(([ЦенаПоступления]*1.5) % 10 > 8, Цел(([ЦенаПоступления]*1.5)/10)*10+10, ?(([ЦенаПоступления]*1.5) % 10 > 5, Цел(([ЦенаПоступления]*1.5)/10)*10+8, ?(([ЦенаПоступления]*1.5) % 10 > 3, Цел(([ЦенаПоступления]*1.5)/10)*10+5, Цел(([ЦенаПоступления]*1.5)/10)*10+3)))


Вот, товарищ подсказал.
7. spacecraft 18.08.22 22:19 Сейчас в теме
(5) про конструктор цен должны были догадаться?

(6) повнимательнее потестируйте. Что будет при исходной цене = 100 ?
Не хватает проверки на остаток > 0, чтобы при остатке от деления = 0 не добавлять 3.
ishelper; +1 Ответить
8. user800527 18.08.22 22:22 Сейчас в теме
9. user800527 18.08.22 22:25 Сейчас в теме
(7) Да, вы правы, указал закупочную 100, по идее розничная должны была получиться 150, но посчитало 153.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот