Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Як можна провести округення суми з кратністю до 10 копійок?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
kostya77
Добрий день. підкажіть. як можна провести округення суми з кратністю до 10 копійок?
CobraS
kostya77 @ Сегодня, 13:25 необходимо зарегистрироваться для просмотра ссылки ,
Мені б було навіть соромно таке запитувати.
Напр.: ОКР(Сумма,1)
kostya77
CobraS @ Сегодня, 14:55 необходимо зарегистрироваться для просмотра ссылки ,
не правильно поставив запитання. Наприклад, якщо 0,42 то потрібно округлити до 0,5
CobraS
kostya77 @ Сегодня, 14:02 необходимо зарегистрироваться для просмотра ссылки ,
ОКР(Сумма+0.09,1,1)
Sharzem
kostya77 @ 28.10.24, 13:25 необходимо зарегистрироваться для просмотра ссылки ,
Можна й порозважатися:
Функция ОкруглитьЦены(прЦенаРозн,прСпособ)
    //прСпособ = Варианты: 5,10,25,50,1
    //прЦенаРозн = Число;
    
    лпЦенаРозн = прЦенаРозн;
    
    лпСпособ = прСпособ;
    лпКопейки=лпЦенаРозн-Цел(лпЦенаРозн);
    
    Если лпКопейки=0 Тогда
        Возврат лпЦенаРозн;
    КонецЕсли;
    
    лпДециКопейки=лпКопейки*10;
    лпДельта=лпДециКопейки-Цел(лпДециКопейки);
    ~Метка:
    Если лпСпособ = 5 Тогда
        Если лпДельта > 0.7 Тогда //округляем до десяти
        лпКопейки=(Цел(лпДециКопейки)+1)/10;
        ИначеЕсли лпДельта > 0.2 Тогда//округляем до пяти
            лпКопейки=(Цел(лпДециКопейки)+0.5)/10;
        Иначе
            лпКопейки=(Цел(лпДециКопейки))/10;
        КонецЕсли;
    ИначеЕсли лпСпособ = 10 Тогда
        лпКопейки=Окр(лпДециКопейки,0)/10;
    ИначеЕсли лпСпособ = 25 Тогда
        Если лпЦенаРозн < 1.75 Тогда
            лпСпособ = 5;//Нет смысла меньше 1,75
            Перейти ~Метка;
        КонецЕсли;
        Если лпКопейки > 0.85 Тогда
            лпКопейки = 1;
        ИначеЕсли лпКопейки > 0.60 Тогда
            лпКопейки = 0.75;
        ИначеЕсли лпКопейки > 0.35 Тогда
            лпКопейки = 0.50;
        ИначеЕсли лпКопейки > 0.10 Тогда
            лпКопейки = 0.25;
        Иначе
            лпКопейки = 0;
        КонецЕсли;
    ИначеЕсли лпСпособ = 50 Тогда
        Если лпДельта < 0.75 Тогда
            лпКопейки = 0.50;
        Иначе
            лпКопейки = 1;
        КонецЕсли;
    ИначеЕсли лпСпособ = 1 Тогда
        Если лпКопейки < 0.5 Тогда
            лпКопейки = 0;
        Иначе
            лпКопейки = 1;
        КонецЕсли;
    КонецЕсли;

    лпЦенаРозн=Цел(лпЦенаРозн)+лпКопейки;
    Возврат лпЦенаРозн;
КонецФункции // ОкруглитьЦены
Profi_1C77
Sharzem @ Вчера, 17:30 необходимо зарегистрироваться для просмотра ссылки ,
Зачем такое - проще с умножением и на 100 к примеру , округление и сравнение с целочисленным делением, и тд.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.