Outlook цепляется к Террасофт (3.4.0) только при условии, что Outlook был запущен после Террасофт . Из-за этого, а также из-за случайных событий из категории «человеческий фактор» интеграция бывает не включена, из-за чего некоторые письма не цепляются в Террасофт.
Дело в том, что свойство «Автоматическое соединение с активной Terrasoft» дает возможность соединяться только с активной Terrasoft. Если Террасофт не был запущен перед Outlook соединения не будет. Меня в идеале интересует вариант, когда при запуске Outlook происходит имитация нажатия кнопки «Соединить» во вкладке «Надстройки» с автоматическим вводом логина-пароля (которые где-нибудь хранятся – файл, реестр, файл конфига Террасофт) и соединением с базой. Причем, не важно включен сам Террасофт или нет.
Вопрос: возможно ли автоматизировать со стороны Outlook’а – например, при его запуске – процесс соединения с базой (ведь интеграцию можно включить, не запуская Террасофт)
Дело в том, что как наверное Вы заметили, при запуске Outlook и неактивной Terrasoft, для включения интеграции нужно вводить логин и пароль, а также, при существовании нескольких конфигураций - еще выбирать конфигурацию.
Таким образом, вся трудность заключается в том, что бы Outlook-у дать понять, что нужно при запуске сразу запускать событие включение интеграции, вводить нужный логин и пароль, выбирать нужную конфигурацию.
Насколько я уточнял у наших разработчиков, то такую реализацию мы не выполняли.
Также, поймите, что нам интересно, что бы клиент работал в первую очередь с Terrasoft, а потом уже с Outlook :wink: .
Если бы в Террасофт был почтовый клиент наши пользователи там бы уже давно и работали, "однако но".
Кроме вышеуказанной проблемы не-100% подключения интеграции, есть еще такая: у нас существует часть пользователей, которым совершенно нечего делать в террасофт - пока. Однако почта им нужна)
Логин, пароль, название конфигурации можно хранить где угодно, куда дотянется Outlook или плагин Террасофта - не вижу здесь принципиальной проблемы.
Чисто логически вижу два решения:
1. Изменения в плагине для Outlook
2. Навешенный сверху макрос, который бы запускал соединение.
Добрый день! Подскажите пожалуйста у клиента есть автоматически запускаемая интеграция по шаблону из текстового файла. После обновления перестала запускаться автоматом, в ручном режиме все запускается и работает. Кто знает, как CRM запускает автоматом интеграцию и откуда? У клиента CRM 3.4.*
Андрей, возможно, после обновления слетели (перезаписались) настройки для Планировщика заданий. Если все работает вручную, а автоматом не работает -- значит, что-то с ним не так.
посмотреть, как его настраивать, можно здесь либо по ключевому слову поиском по комюнити.
проверьте, запускается ли служка ДжобМенеджер, прописан ли верно путь в файле RunSettings.xml и т.д., исходя из алгоритма настройки Планировщика.
если не поможет -- значит, дело в чем-то другом.
В Террасофт реализован очень удобный механизм привязки и хранения e-mail сообщений - есть в базе такой адрес - подтягивается, отсутствует - не подтягивается. Но не дай Бог вам поставить галочки "игнорировать адрес отправителя\получателя" в настройках пользователя или добавить адрес рабочего мейла в карточку контакта пользователя, а потом проинтегрировать все письма в автоматическом режиме... В нашей компании объем и количество внутренней почты такие же, а то и больше, чем почты внешней.
И периодически то настройки у кого-нибудь слетят, то новый офис-менеджер добавит всем пользователям их рабочие е-мейлы.... В результате база разом увеличивается на всю внутренную переписку пользователя (с вложениями!).
И хотя подчистить не так и сложно (отправитель like %@your_domain.zone AND получатель like %@your_domain.zone), но, во-первых, за этим надо следить, а во-вторых, бывают сложные случаи, когда письмо отправляется (или получается) не только кому-то внутри, но и одновременно наружу:
send to vasya@company.ru, client@somewhere.com
Такие письма приходится искать вручную... Или сделать вид, что их и не было, что не очень хорошо ))
Мне все это немного надоело еще на 2й раз и я, получив несколько левелапов , избавил себя от этой проблемы раз и навсегда.
Для этого я долго скакал по скриптам интеграции в попытке найти оптимальную точку для проверки, поближе познакомился с регэкспами, проникся проблемой валидации е-мейлов и разродился вот такой маленькой доработкой.
Логика:
При автоинтеграции (но не вручную ) письма проверяются на наличие хотя бы одного из отправителя\получателей (отправитель один, получателей - сколько влезет) не из одного и того же домена. Основой для проверки служит адрес отправителя - т.к. он один.
Например:
send from petya@company.ru to vasya@company.ru, client@somewhere.comпройдет
send from petya@company.ru to vasya@company.ru, masha@company.ruне пройдет
Скрипт:
в функцию function SyncronizeMailItem(MailItem, Options) вставить после var MessageID = MapiMessage.GetSMTPHeader('X-TS' + MessageIDUserPropertyName);
if(CheckIsSameDomain(MapiMessage)){// проверяем не внутренняя ли почта, если да - выход return; }
сама функция
function CheckIsSameDomain(MapiMessage){ var SenderAddress = MapiMessage.SenderAddress;
// избавляемся от " в адресах var RecipientAddress =
MapiMessage.GetRecipientList().CommaText.substr(0,249).replace(/"/g,'');//";
// избавляемся от конструкций типа Имя Фамилия> в получателях - услужливый Outlook ставит это ко всем известным ему контактам
RecipientAddress = RecipientAddress.replace(/[^>]+>,?/g,'');
// находим домен отправителя (от @ до конца строки) var SenderDomain =/@.+$/.exec(SenderAddress);
// находим домены получателей (регексп может быть странноватый, но работает) var RecipientDomainAr = RecipientAddress.match(/@\S+(?:(?:\.(?:\S{2,})){1,10})/g); if(!Assigned(RecipientDomainAr)){ returnfalse; } for(var i =0; i = RecipientDomainAr.length; i++){ if(RecipientDomainAr[i]!= SenderDomain){ \\ если отличается выходим из функции returnfalse; } } returntrue; }
ПС. И да - ущерб производительности имеет место, но не сильный
// избавляемся от " в адресах
var RecipientAddress =
MapiMessage.GetRecipientList().CommaText.substr(0, 249).replace(/"/g, ''); //";// избавляемся от конструкций типа <Имя Фамилия> в получателях - услужливый Outlook ставит это ко всем известным ему контактам
RecipientAddress = RecipientAddress.replace(/<[^>]+>,?/g, '');
заменить на
var RecipientAddress = MapiMessage.GetRecipientList(true).CommaText