Перейти к содержимому
Все статьи
Разработка

Массовое изменение цен: как принять операцию и откат

·27 октября 2026 г.· 7 мин чтения
Сколько будет стоить ваш проект?Рассчитать стоимость

Безопасное массовое изменение цен требует фиксированной выборки, предпросмотра на определённых исходных данных и проверки конфликтов перед применением. Для отката нужно сохранять прежние значения и связь каждой записи с операцией. Обратный процент не восстанавливает исходное состояние, а безусловная запись старой цены может затереть последующую правку другого сотрудника.

Что подтверждает пользователь перед запуском

Фраза «увеличить цены в категории» скрывает несколько решений. Входят ли варианты товара, недоступные позиции и записи на других страницах списка? О какой цене речь: основной, закупочной или сравнительной? В какой валюте и единице она задана? Все эти границы должны быть понятны до подтверждения, а не восстанавливаться после жалобы.

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

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

Предпросмотр проверяет формулу, а не обещает вечную актуальность

Покажите исходную цену, правило изменения, точность округления и ожидаемый результат по каждому выбранному объекту. Ошибки данных нужно отделить от корректных строк. Нулевая цена, отсутствующее значение и запрещённое изменение — разные ситуации; нельзя молча привести их к одному числу, чтобы операция выглядела завершённой.

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

Учебный набор: повышение на 10 процентов

В таблице — вымышленные товары и цены в рублях для проверки функции, не предложение студии и не рыночная стоимость услуги. Выбрано умножение на 1,10 с округлением до копеек по правилу половины вверх. Исходные и текущие версии сравниваются перед применением. Строка с конфликтом пропускается по условию этого учебного сценария.

ТоварЦена в предпросмотреПеред применениемОжидаемый результатСтатус или причина пропускаУсловие отката
А100,00100,00; версия прежняя110,00ПрименитьОткатить до 100,00 только при сохранности результата и версии этой операции
Б200,00230,00; есть чужая правка220,00 по старым даннымПропустить: предпросмотр устарелНичего не откатывать: операция строку не меняла
В399,95399,95; версия прежняя439,95Применить с выбранным округлениемЕсли позже установлено 450,00, автоматический откат не разрешать
Г88,8888,88; версия прежняя97,77Если запись не выполнилась — ошибкаНе сообщать о восстановлении, когда применения не было

Для товара В промежуточное значение равно 439,945, поэтому выбранное правило даёт 439,95. Если в вашей системе принято иное округление, результат необходимо пересчитать до подтверждения. Отдельно проверьте поведение отрицательных значений, допустимые границы и требования учётной системы: учебная формула не определяет их за компанию.

Полный отказ или частичное выполнение

Есть разные допустимые модели: остановить всю операцию при конфликте либо применить независимые корректные строки и явно показать остальные. Выберите одну для конкретного процесса. Не называйте частичное выполнение общим успехом без пояснений. Пользователю нужны перечень изменённых позиций, причины пропуска и действия, которые ещё требуются.

Сохраните для каждой строки исходное значение, ожидаемое новое, фактический результат и диагностическое основание статуса. Если работа выполняется частями, закройте промежуток между записью цены и фиксацией результата так, чтобы после перезапуска можно было установить истину. Конкретная техническая реализация зависит от хранилища и внешних систем; интерфейс обязан честно показывать неопределённый результат, пока сверка не завершена.

Отдельно обозначьте границу внутренних и внешних изменений. Обновление своей базы не доказывает, что цена уже появилась на всех витринах или в выгрузках. И обратный порядок тоже возможен: внешняя система успела принять значение, а локальный экран ещё не обновился. Для таких связок нужен собственный статус распространения и процедура сверки.

Откат не равен вычитанию процента

Если цену 100 увеличили на 10 процентов, получится 110. Уменьшение 110 на 10 процентов даст 99, а не 100. Даже математически обратное преобразование может не восстановить точное значение после округления. Надёжнее хранить исходную цену, но восстанавливать её можно только при соблюдении согласованных условий.

Главная проверка — принадлежит ли текущее состояние результату отменяемой операции и не было ли значимого последующего изменения. Если другой сотрудник уже установил450 вместо439,95, нельзя молча вернуть399,95. Отметьте конфликт и передайте его на разбор. Проверка только совпадения числа ненадёжна без учёта истории и версии записи.

Откат тоже оформляйте отдельной операцией с собственными результатами. Он не отменяет уже оформленные заказы и не гарантирует, что внешняя площадка отзовёт ранее полученную цену. Эти последствия нужно разбирать отдельно. Кнопка должна сообщать, что именно восстановится, какие строки будут пропущены и какие действия необратимы в выбранной цепочке.

Приёмочный прогон операции

  1. Подготовьте небольшой учебный набор: корректные цены, пустое значение, варианты товара и записи вне разрешённой области. Зафиксируйте ожидаемую выборку.
  2. Сверьте формулу и округление независимым расчётом. В предпросмотре должны быть видны исходные значения и причины невозможных изменений.
  3. После предпросмотра измените одну запись другим разрешённым способом. Проверьте согласованную реакцию на конфликт.
  4. Повторите команду запуска и смоделируйте прерывание обработки. Установите фактическое состояние каждой строки без второго повышения.
  5. После применения внесите новую ручную правку, затем запросите откат. Убедитесь, что она не перезаписана молча.
  6. Сверьте журнал, экран результата и связанные витрины в пределах согласованной интеграции. Передайте пользователю понятный перечень исключений.

Такие требования пригодятся при автоматизации товарного учёта, разработке интернет-магазина и интеграции через API. Для постановки задачи достаточно учебной таблицы, формулы и согласованного поведения конфликтов. По ним можно проверить результат точнее, чем по обещанию «цены меняются массово».

Вопросы и ответы

Как работает массовое изменение цен?

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

Чем массовое редактирование товаров отличается от изменения цен?

Оно может затрагивать и другие свойства, поэтому область изменения нужно задавать явно. Изменение одного ценового поля не должно незаметно переписать соседние данные или неподтверждённые товары.

Что предусмотреть для отмены bulk price update?

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

Нужна помощь с проектом?

Обсудим задачу и предложим решение — от сайта до SaaS и защиты.

Связаться