• Sign in to follow this  
    Followers 0

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


    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  
    Followers 0


    User Feedback


    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