Показать сообщение отдельно
Старый 27.10.2004, 10:24   #1  
Vyacheslav is offline
Vyacheslav
Участник
 
8 / 10 (1) +
Регистрация: 09.09.2004
Адрес: Москва
? CRM рассылка сообщений по шаблону
При использовании рассылки 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 или я просто его неправильно понимаю и использую?