Search the Community

Showing results for tags 'процессы'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author



Filter by number of...

Found 2 results

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

    В модуле "Процессы" в SuiteCRM 7.3.1 (а возможно и в более поздних) если в блоке условий (CONDITIONS) одним из условий указать изменение того или иного поля, то это условие не срабатывает: При детальном разборе выяснилось, что модуль Процессы (AOW_WorkFlow) срабатывает как "after_save", то есть уже ПОСЛЕ того, как контролируемая запись будет сохранена с новыми значениями: В тоже время в месте, где идет проверка того, что поле объекта во время сохранения поменяло своё значение, происходит сравнение текущего значения поля ПОСЛЕ сохранения с значением, указанным в fetched_row (это функцияcheck_valid_bean в файлеmodules/AOW_WorkFlow/AOW_WorkFlow.php): Массивfetched_row конечно очень классный и полезный чтобы понять какое занчение имело то или иное поле до сохранения! Но он содержит предыдущие значения ДО момента сохранения записи. После сохранения все данные в этом массиве затираются на новые, актуальные для текущего, уже сохраненного, объекта. По этому ПОСЛЕ сохранения записи сравнивать текущие значения полей объекта с их значениями вfetched_row лишено смысла: они все будут одинаковыми. Таким образом чтобы решить эту проблему нам надо всеже найти значение поля ДО сохранения. Я решил просто в объект ввести еще один массив, аналогичныйfetched_row, но не перезаписывать его во время записи объекта. В data/SugarBean.php добавляем новую переменнуюfetched_row_before_save: и определяем эту переменную в функции save() как раз перед тем местом, где оригинальныйfetched_row "теряет" необходимые нам значения полей: Ну а теперь мы можем везде в системе использоватьfetched_row_before_save вместоfetched_row, где необходимо определить изменения, произошедшие в полях уже ПОСЛЕ момента сохранения записи. В частности в нашем рассматриваемом случае будет: Теперь модуль Процессы корректно отрабатывает условие любого изменения значения того или иного поля! Просмотреть полную запись
  2. В модуле "Процессы" в SuiteCRM 7.3.1 (а возможно и в более поздних) если в блоке условий (CONDITIONS) одним из условий указать изменение того или иного поля, то это условие не срабатывает: При детальном разборе выяснилось, что модуль Процессы (AOW_WorkFlow) срабатывает как "after_save", то есть уже ПОСЛЕ того, как контролируемая запись будет сохранена с новыми значениями: В тоже время в месте, где идет проверка того, что поле объекта во время сохранения поменяло своё значение, происходит сравнение текущего значения поля ПОСЛЕ сохранения с значением, указанным в fetched_row (это функцияcheck_valid_bean в файлеmodules/AOW_WorkFlow/AOW_WorkFlow.php): Массивfetched_row конечно очень классный и полезный чтобы понять какое занчение имело то или иное поле до сохранения! Но он содержит предыдущие значения ДО момента сохранения записи. После сохранения все данные в этом массиве затираются на новые, актуальные для текущего, уже сохраненного, объекта. По этому ПОСЛЕ сохранения записи сравнивать текущие значения полей объекта с их значениями вfetched_row лишено смысла: они все будут одинаковыми. Таким образом чтобы решить эту проблему нам надо всеже найти значение поля ДО сохранения. Я решил просто в объект ввести еще один массив, аналогичныйfetched_row, но не перезаписывать его во время записи объекта. В data/SugarBean.php добавляем новую переменнуюfetched_row_before_save: и определяем эту переменную в функции save() как раз перед тем местом, где оригинальныйfetched_row "теряет" необходимые нам значения полей: Ну а теперь мы можем везде в системе использоватьfetched_row_before_save вместоfetched_row, где необходимо определить изменения, произошедшие в полях уже ПОСЛЕ момента сохранения записи. В частности в нашем рассматриваемом случае будет: Теперь модуль Процессы корректно отрабатывает условие любого изменения значения того или иного поля!