При использовании рассылки E-mail'ов по шаблону из формы "Кампании" столкнулся со следующей проблемой: при выборе пункта меню "Рассылка --> Интернет" появляется следующее сообщение:
"Необходимо выбрать веб-узел и код пользователя перед настройкой веб-пользователей. Изменить настройки в параметрах модуля CRM."
При анализе кода, оказалось сообщее это появляется при непрохождении такой проверки:
класс smmCampaignBroadcast метод validate
PHP код:
if ((useWebUsers && (!webSiteName || !defaultUserId)) || (useURL && !webSiteName))
{
ret = checkFailed("@GLS3535" + " " + "@GLS30895");
}
переменные useWebUsers, useURL инициализируются в кострукторе класса следующим образом:
PHP код:
if (strFind(campaignTable.EmailBroadcastText, #PersonIDVar, 1, strlen (campaignTable.EmailBroadcastText)) != 0)
{
useWebUsers = true;
}
if (strFind(campaignTable.EmailBroadcastText, #URLVar, 1, strlen(campaignTable.EmailBroadcastText)) != 0)
{
useURL = true;
}
макрокостанты следующие:
#DEFINE.PersonIdVar('%PERSONID%')
#DEFINE.UrlVar('%URL%')
Сомнения вызывает вот эта строка в конструкторе:
if (strFind(campaignTable.EmailBroadcastText, #PersonIDVar, 1, strlen(campaignTable.EmailBroadcastText)) != 0)
Насколько я понима, по замыслу разработчиков данная проверка должна проверять вхождение макроконстанты в шаблон сообщения, НО фнукция strFind, согласно документации, ищет не вхождение подстроки (макроконстанты) , а вхождение символов из макроконстанты в шаблон сообщения.
В итоге в моем шаблоне сообщения не присутствует текст из макроконстант #PersonIdVar и #UrlVar, а проверка if (strFind(campaignTable.EmailBroadcastText, #PersonIDVar, 1, strlen (campaignTable.EmailBroadcastText)) != 0) дает TRUE.

В результате вместо расслки я вижу вышеописанное сообщение об ошибке
Вопрос: стоит ли исправлять код класса smmCampaignBroadcast или я просто его неправильно понимаю и использую?