Jump to content
SpravkaCRM.ru - Ваш справочник по CRM
  • Sign in to follow this  

    В Процессах не работала фиксация изменения поля


    SpravkaCRM.ru

    В модуле "Процессы" в SuiteCRM 7.3.1 (а возможно и в более поздних) если в блоке условий (CONDITIONS) одним из условий указать изменение того или иного поля, то это условие не срабатывает:

    567393ad27774_2015-12-1808-03-11.thumb.p

    При детальном разборе выяснилось, что модуль Процессы (AOW_WorkFlow) срабатывает как "after_save", то есть уже ПОСЛЕ того, как контролируемая запись будет сохранена с новыми значениями:

    5673947c35f28_2015-12-1808-06-15AOW_Work

    В тоже время в месте, где идет проверка того, что поле объекта во время сохранения поменяло своё значение, происходит сравнение текущего значения поля ПОСЛЕ сохранения с значением, указанным в fetched_row (это функция check_valid_bean в файле modules/AOW_WorkFlow/AOW_WorkFlow.php):

    56739dad590f9_2015-12-1808-45-45AOW_Work

    Массив fetched_row конечно очень классный и полезный чтобы понять какое занчение имело то или иное поле до сохранения! Но он содержит предыдущие значения ДО момента сохранения записи. После сохранения все данные в этом массиве затираются на новые, актуальные для текущего, уже сохраненного, объекта. По этому ПОСЛЕ сохранения записи сравнивать текущие значения полей объекта с их значениями в fetched_row лишено смысла: они все будут одинаковыми. 

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

    В data/SugarBean.php добавляем новую переменную fetched_row_before_save:

    56739f1f58907_2015-12-1808-51-34SugarBea

    и определяем эту переменную в функции save() как раз перед тем местом, где оригинальный fetched_row "теряет" необходимые нам значения полей:

    56739fe346db6_2015-12-1808-55-13SugarBea

    Ну а теперь мы можем везде в системе использовать fetched_row_before_save вместо fetched_row, где необходимо определить изменения, произошедшие в полях уже ПОСЛЕ момента сохранения записи. В частности в нашем рассматриваемом случае будет:

    5673a06127164_2015-12-1808-57-27AOW_Work

     

    Теперь модуль Процессы корректно отрабатывает условие любого изменения значения того или иного поля!

    Sign in to follow this  


    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×