← К заметкам

Заметки

Как сделать автозапуск БП только при изменении конкретного поля

Автозапуск БП «при изменении» может сработать на сохранение карточки, которое вообще не затронуло нужное поле. Чтобы реагировать именно на изменение суммы или ответственного, нужны старое и новое значения.

В коробочном обработчике старое значение читают до обновления и сравнивают с новым после нормализации типа. При этом поле может отсутствовать в массиве частичного обновления: отсутствие ключа нельзя принимать за очистку.

В самом БП можно хранить последнее обработанное значение в техническом поле. Первое условие сравнивает его с текущим; при совпадении процесс завершает работу. Это уже сравнение с последним обработанным состоянием, а не точная история всех сохранений.

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