По теме из базы знаний
- Округление всегда в меньшую сторону в документе "Зарплата к выплате организаций"
- Остатки отпусков в 1С:ЗУП 2.5
- Округление суммы документа с учетом скидок для конфигурации УТ 11 (версия 11.2 и новее)
- Атол ККТ: Онлайн 54-ФЗ (ДТО 10.4) для 1С 8.1 УТ 10.3, Розница 1, УПП 1.3, без изменения конфигурации
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) adaviya,
Сумма = Окр(Сумма+0.5,0,0);
Сумма = Окр(Сумма+0.5,0,0);
Alex-krk; mikl79; Andrekaa; lolovlol; thethinker; Mishnov; Mahon83; marchel; KAV2; bugromov; native-api; WhiteOwl; AndreySchel; AndrewVVS; user785225; Sejix; LifeRock; aleksey2; user1297929; ONLYTILT; КДЕ; tatoshka0403; Tolpinski; Gendelf; zuxelzz; Kolesonik; noctar; MaZaHacKa_13; Elisey654321; moralex2k; insurgut; user1088651; neo-ti; Dizel; klaus38; Kazaams; ckamakc; Jeka44; zoikins; kirbox; stasdivin; Kordyukov; sertak; Aleksandr_prof; MrTom; wowik; wertep; Tavalik; user949348; Xephone; DreamcastMD; SpartakM; KirinaAS; myjob1c; Merkalov; 02RUSlan; s1koka; Дмитрий74Чел; SagittariusA; rule6; dmitrii665; ShpiN; qwertyk; ger_kar; savauu; Roman_Go; vika64; Ingraf; dsdred; San4ez; Rudakov_D; olenka-ul; ustinov_greendale; ekomova; Insanity; SP2000; greenLiss; HomeInc; MrGreat; nadjav; lshaton; valleha; kihoxef532; etmarket; MrTwisterKRR; MherArsh; bobr_dobr; murza; Dmitrii D; Gureev;
+90
–
Ответить
5
Функция ОкрВсегдаВверх(ВходЧисло, РазрядОкругления)
Возврат ?(ТипЗнч(ВходЧисло) = Тип("Число"), Окр(ВходЧисло + 5 * Pow(10, -РазрядОкругления - 1), РазрядОкругления, РежимОкругления.Окр15как10), Неопределено);
//Если ТипЗнч(ВходЧисло) <> Тип("Число") Тогда
// Возврат Неопределено;
//КонецЕсли;
//
//Прибавка = 5 * Pow(10, -РазрядОкругления - 1); // 5 * 10^(-x - 1)
//Результат = Окр(ВходЧисло + Прибавка, РазрядОкругления, РежимОкругления.Окр15как10);
//
//Возврат Результат;
КонецФункции
Показать
(19) что мешает проверочную обработку написать и удостовериться, что работает:
Сч = 0;
Пока Сч < 24 Цикл
Результат = Окр(Сч + 0.5, 0, РежимОкругления.Окр15как10);
ТекстШаблона = "%1 = %2";
СообщениеПользователю = СтрШаблон(ТекстШаблона, Сч, Результат);
ОбщегоНазначения.СообщитьПользователю(СообщениеПользователю);
Сч = Сч + 0.1;
КонецЦикла;
Показать
(20) что за магия?? %)))
целое число
до 1-го знакак после запятой
до 2-х
длина числа 0.499999.. - зависит от входящего числа
если, например, нужно целое число, а на вход дали 1.001 и написать , но на выходе будет 1, но если написать , то сработает ;))
целое число
Окр(Число + 0.499999)
до 1-го знакак после запятой
Окр(Число + 0.049999, 1)
до 2-х
Окр(Число + 0.004999, 2)
длина числа 0.499999.. - зависит от входящего числа
если, например, нужно целое число, а на вход дали 1.001 и написать
Окр(Число + 0.49)
Окр(Число + 0.499)
(24) в смысле универсальный??
а чем не универсальный??
универсального не будет, так как есть один нюанса и это разрядность
если передавать разрядность, то тогда что-то типа этого
да и в запросах, если нужно целое число, то всегда спасает + 0.499999, так как товар не может быть половинкой
при округлении, например, цены в запросе с 2-мя знаками, то тоже спасает
а какой-то универсальный механизм с каким-то построчным окгруглением число - то это жесть
а чем не универсальный??
универсального не будет, так как есть один нюанса и это разрядность
если передавать разрядность, то тогда что-то типа этого
Окр(Число + 0.4999999999999 / ?(разрядность > 0, 10 * разрядность, 1), разрядность)
да и в запросах, если нужно целое число, то всегда спасает + 0.499999, так как товар не может быть половинкой
при округлении, например, цены в запросе с 2-мя знаками, то тоже спасает
а какой-то универсальный механизм с каким-то построчным окгруглением число - то это жесть
(28) тогда таких людей называют душнилами %))
есть шаблоны корректного решения, а реализации опытный программист сам придумает как использовать метод расчета...
или это будет метод, где подается одно число и параметры, относительно которых нужно расчитать
или это будет использоваться в запросе, где происходят логистические вычисления для планирования
есть шаблоны корректного решения, а реализации опытный программист сам придумает как использовать метод расчета...
или это будет метод, где подается одно число и параметры, относительно которых нужно расчитать
или это будет использоваться в запросе, где происходят логистические вычисления для планирования
(32) "гуру" обосрался %))
садитесь 2
p.s. не способны помочь, то хоть не мешайте остальным помогать
а теперь подумайте о производительности вычисления
и что-то я не увидел универсальности в запросе, не хардкор, а тем более производительности %))
почитайте что такое хардкор, а что не является хардкором
почитайте о тяжелости вычислений... хотя бы про +, -, *, /
p.s. простите, но я не достоен обучаться у такого "гуру"
дискуссия окончена.
садитесь 2
p.s. не способны помочь, то хоть не мешайте остальным помогать
а теперь подумайте о производительности вычисления
и что-то я не увидел универсальности в запросе, не хардкор, а тем более производительности %))
почитайте что такое хардкор, а что не является хардкором
почитайте о тяжелости вычислений... хотя бы про +, -, *, /
p.s. простите, но я не достоен обучаться у такого "гуру"
дискуссия окончена.
(37)
Все работает
На скрине табло с примерами
Окр(10 + 0.5, 0, РежимОкругления.Окр15как10) = 10
Окр(10.01 + 0.5, 0, РежимОкругления.Окр15как10) = 11
Окр(10.99 + 0.5, 0, РежимОкругления.Окр15как10) = 11
Окр(Число + 0.5, 0, РежимОкругления.Окр15как10);
Все работает
На скрине табло с примерами
Окр(10 + 0.5, 0, РежимОкругления.Окр15как10) = 10
Окр(10.01 + 0.5, 0, РежимОкругления.Окр15как10) = 11
Окр(10.99 + 0.5, 0, РежимОкругления.Окр15как10) = 11
Прикрепленные файлы:

Могу предложить свой вариант округления до целого всегда в большую сторону:
В запросе аналогичный алгоритм с помощью ВЫРАЗИТЬ и ВЫБОР...
РезультатОкругления = Окр(Число,0);
Если Окр(Число,1)>Окр(Число,0) Тогда
РезультатОкругления = РезультатОкругления +1
КонецЕсли;
В запросе аналогичный алгоритм с помощью ВЫРАЗИТЬ и ВЫБОР...
На дворе 2025 год а функция округления вверх не завезли :) Чаще всего нужна вот такая без учета знака.
Функция ОкрВ(Число) // Округляет число всегда вверх (без учета знака)
// 0 = 0
// 1 = 1
// 1.0001 = 2
// 1.9999 = 2
// -1 = -1
// -1.0001 = -2
// -1.9999 = -2
Если Число = Цел(Число) Тогда Возврат Число КонецЕсли;
Если Число>0 Тогда
Возврат Цел(Число)+1;
Иначе
Возврат Цел(Число)-1;
КонецЕсли;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот