Проблема оказалась в том, что в моей версии [I]1С-Битрикс: Управление сайтом 6.5.0[/I] не оказалось поддержки события [B]onAfterResultAdd[/B]. Я это выяснил, выполнив поиск слова '[I]onAfterResultAdd[/I]' по коду проекта.
Тем не менее для решения задачи я нашел два варианта:
[B]
1 вариант.[/B] Внедрить самому обработчик события в код.
Для этого в кастомизированный компонент, расположенный по адресу \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]\component.php
можно добавить обработчик, который будет исполнять все навешанные на событие [I]onAfterResultAdd[/I] обработчики:
[CODE]$events = GetModuleEvents("form", "onAfterResultAdd");
while ($arEvent = $events->Fetch()) {
ExecuteModuleEvent($arEvent, $arParams["WEB_FORM_ID"], $RESULT_ID);
}[/CODE]Т.е. здесь для каждого события [I]onAfterResultAdd[/I] модуля [I]form[/I] достаются обработчики, определенные в файле [I]mysite/bitrix/php_interface/init.php[/I].
Обратите внимание, я не стал делать правки в компоненте ядра битрикса: www\bitrix\components\[B]bitrix[/B]\[B]form.result.new[/B]\component.php.
Вместо этого я скопировал папку компонента[B] form.result.new[/B] в папку моего сайта и назвал ее по-иному: \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]
После этого я уже стал редактировать файл: \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]\component.php
[B]2 вариант.[/B] В кастомный компонент подключить файл, где по id формы после ее отправки будут происходить определенные действия.
Вот часть кода кастомного компонента \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]\component.php:
[CODE]// add result
if($RESULT_ID = CFormResult::Add($arParams["WEB_FORM_ID"], $arResult["arrVALUES"]))
{
//На данном этапе форма уже сохранена в базу. Мы имеем $RESULT_ID результата.
//Подключаем файл, в котором будем выполнять действия над введенными пользователем данными
include_once($_SERVER['DOCUMENT_ROOT'].'/util/form_handler.php');
...
}
[/CODE]Вот примерное содержимое файла-обработчика [I]util/form_handler.php[/I]:
[CODE]<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die('prolog');?>
<?if (!CModule::IncludeModule("form") || !$RESULT_ID) die('form');
switch ($arResult['arForm']['SID']
{
case 'my_form_id':
//действия над формой.
//К примеру, получим значения, введенные пользователем в форму:
$arValues = CFormResult::GetDataByIDForHTML($RESULT_ID, "Y");
//...
break;
default:
CFormResult::Mail($RESULT_ID);
}
[/CODE]
Тем не менее для решения задачи я нашел два варианта:
[B]
1 вариант.[/B] Внедрить самому обработчик события в код.
Для этого в кастомизированный компонент, расположенный по адресу \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]\component.php
можно добавить обработчик, который будет исполнять все навешанные на событие [I]onAfterResultAdd[/I] обработчики:
[CODE]$events = GetModuleEvents("form", "onAfterResultAdd");
while ($arEvent = $events->Fetch()) {
ExecuteModuleEvent($arEvent, $arParams["WEB_FORM_ID"], $RESULT_ID);
}[/CODE]Т.е. здесь для каждого события [I]onAfterResultAdd[/I] модуля [I]form[/I] достаются обработчики, определенные в файле [I]mysite/bitrix/php_interface/init.php[/I].
Обратите внимание, я не стал делать правки в компоненте ядра битрикса: www\bitrix\components\[B]bitrix[/B]\[B]form.result.new[/B]\component.php.
Вместо этого я скопировал папку компонента[B] form.result.new[/B] в папку моего сайта и назвал ее по-иному: \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]
После этого я уже стал редактировать файл: \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]\component.php
[B]2 вариант.[/B] В кастомный компонент подключить файл, где по id формы после ее отправки будут происходить определенные действия.
Вот часть кода кастомного компонента \www\bitrix\components\[I]mysite[/I]\[B]form.result.new.my[/B]\component.php:
[CODE]// add result
if($RESULT_ID = CFormResult::Add($arParams["WEB_FORM_ID"], $arResult["arrVALUES"]))
{
//На данном этапе форма уже сохранена в базу. Мы имеем $RESULT_ID результата.
//Подключаем файл, в котором будем выполнять действия над введенными пользователем данными
include_once($_SERVER['DOCUMENT_ROOT'].'/util/form_handler.php');
...
}
[/CODE]Вот примерное содержимое файла-обработчика [I]util/form_handler.php[/I]:
[CODE]<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die('prolog');?>
<?if (!CModule::IncludeModule("form") || !$RESULT_ID) die('form');
switch ($arResult['arForm']['SID']
{
case 'my_form_id':
//действия над формой.
//К примеру, получим значения, введенные пользователем в форму:
$arValues = CFormResult::GetDataByIDForHTML($RESULT_ID, "Y");
//...
break;
default:
CFormResult::Mail($RESULT_ID);
}
[/CODE]