Коротко — потому что у вас в файле только "<?php" и никакой регистрации обработчиков там нет. Но давайте по шагам, что обычно нужно сделать в модуле Bitrix, чтобы событие срабатывало, и пример кода.
1) Убедитесь, что модуль установлен
- Модуль должен быть зарегистрирован в системе (Администрирование → Модули) или вызывать RegisterModule в DoInstall.
2) Зарегистрируйте обработчики событий при установке модуля
- В install/index.php нужно реализовать InstallEvents (и UnInstallEvents) и в ней вызвать RegisterModuleDependences (старый API) или \Bitrix\Main\EventManager->addEventHandler (D7).
Пример (старый API, совместимый с большинством версий Bitrix):
```php
<?php
use \Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
class duplicates_control_contact extends CModule
{
var $MODULE_ID = "duplicates.control.contact";
// ... другие поля
function InstallEvents()
{
RegisterModuleDependences(
"crm",
"OnAfterCrmContactAdd",
$this->MODULE_ID,
"CDuplicatesContactHandler",
"OnAfterCrmContactAdd"
);
RegisterModuleDependences(
"crm",
"OnAfterCrmContactUpdate",
$this->MODULE_ID,
"CDuplicatesContactHandler",
"OnAfterCrmContactUpdate"
);
}
function UnInstallEvents()
{
UnRegisterModuleDependences("crm", "OnAfterCrmContactAdd", $this->MODULE_ID, "CDuplicatesContactHandler", "OnAfterCrmContactAdd");
UnRegisterModuleDependences("crm", "OnAfterCrmContactUpdate", $this->MODULE_ID, "CDuplicatesContactHandler", "OnAfterCrmContactUpdate");
}
// DoInstall / DoUninstall и т.д.
}
```
А сам обработчик (например в /local/modules/duplicates.control.contact/lib/handler.php):
```php
<?php
class CDuplicatesContactHandler
{
public static function OnAfterCrmContactAdd($ID, $arFields)
{
// Ваш код проверки дубликатов
// Для отладки: file_put_contents($_SERVER["DOCUMENT_ROOT"]."/dup.log", "ADD: ".$ID."\n", FILE_APPEND);
}
public static function OnAfterCrmContactUpdate($ID, $arFields)
{
// ...
}
}
```
Пример (D7 EventManager):
```php
\EventManager::getInstance()->addEventHandler(
'crm',
'OnAfterCrmContactAdd',
['\Duplicates\Contact\Handler', 'onAfterAdd']
);
```
и удалить через removeEventHandler / UnregisterModuleDependences при удалении модуля.
3) Проверьте имена событий
- В CRM для контактов обычно используются события OnAfterCrmContactAdd и OnAfterCrmContactUpdate. В зависимости от версии Bitrix имена могут отличаться — проверьте документацию вашей версии или исходники модуля crm (ищите Event::send или addEventHandler('crm', ...)).
4) Отладка
- Убедитесь, что модуль установлен и InstallEvents действительно выполнялась (посмотрите в таблице b_event_site / модуль).
- Логируйте вызов обработчика (file_put_contents, AddMessage2Log), чтобы убедиться, что он не вызывается.
- Очистите кеш (особенно если используете managed cache / autoload).
- Проверьте права на файлы и корректность namespace/автозагрузки, если используете D7-стиль классов.
Если хотите, пришлите:
- Полный код вашего install/index.php,
- Как вы реализовали обработчик (файл),
- Установлен ли модуль в админке,
и я покажу, где именно исправить.