Преобразования таблицы

Как получить цену с окончанием .99: ближайшее целое минус 0.01

2026-06-20
Задача

В исходной колонке находятся положительные числовые цены без валюты. Нужно получить цену по политике «ближайшее целое минус 0.01», а пустые, нулевые и неверные значения оставить пустыми.

Короткий ответ

Проверьте формат и положительность цены до математических действий, выберите Округлить — в табличном редакторе это действие по умолчанию округляет к ближайшему целому с шагом 1, — вычтите 0.01 и очистите итоговое значение, если результат неположительный.

Как сделать в Eofferix

  1. Добавьте или откройте итоговую колонку price_99 и выберите исходную колонку price. Эти имена — пример; используйте фактические поля своего профиля.

  2. До вычислений добавьте ЛюбоеУбрать пробелы по краям, затем Не регулярное выражение со значением ^\d+(?:[.,]\d+)?$Не загружать поле и Меньше или равно со значением 0Не загружать поле.

    Шесть правил валидации, округления цены и вычитания 0.01
    Неверные и неположительные входные данные оставляют итоговую цену пустой; корректная цена округляется к ближайшему целому и уменьшается на 0.01.
  3. Добавьте ЛюбоеОкруглить. В табличном редакторе это действие по умолчанию округляет к ближайшему целому с шагом 1; затем добавьте ЛюбоеВычесть со значением 0.01, а последним правилом — Меньше или равно со значением 0Не загружать поле.

  4. Примените правила и проверьте в предпросмотре строки с дробными частями .20, .50 и .80, а также ноль и неверный текст. Затем выполните небольшую тестовую выгрузку и откройте скачанный файл. Используйте колонку только если оба результата совпадают с таблицей ниже.

Важно. price и price_99 — примерные имена. Исходное значение должно быть чистым числом без символа или кода валюты. Этот алгоритм не всегда уменьшает цену: при дробной части .50 и выше итог может стать больше исходного значения.

Что получится

Исходная ценаРезультатПочему
1240.201239.991240.20 округляется до 1240, затем вычитается 0.01.
999.50999.99999.50 округляется до 1000, затем вычитается 0.01.
1240.801240.991240.80 округляется до 1241, затем вычитается 0.01.
240.00239.99240 округляется до 240, затем вычитается 0.01.
0пустоНеположительная исходная цена оставляет итоговое значение price_99 пустым до вычислений.
не ценапустоНеверный текст не должен превращаться в -0.01.

Что проверить перед выгрузкой

  • Используется действие Округлить: в табличном редакторе оно округляет к ближайшему целому с шагом 1; отдельные поля режима и шага выбирать не нужно.
  • Валидация стоит до первого математического правила.
  • Ноль, пустое значение и неверный текст остаются пустыми.
  • Итоговая политика цены разрешена вашим бизнесом и соответствует правилам целевого канала.

Ограничения метода

  • Значения с дробной частью .50 и выше могут увеличиться до ближайшего окончания .99.
  • Например, 0.49 после вычисления стало бы неположительным и поэтому очищается, а 0.50 даёт 0.99.
  • Если нужна политика «всегда вниз до .99» или «всегда вверх до .99», это другой алгоритм; его нельзя описывать этой цепочкой.

Обрабатывайте данные быстрее с Eofferix

Создайте бесплатный аккаунт, чтобы автоматизировать каталоги и прайс-листы под ваши правила.

Зарегистрироваться