Outlook 2013 завершил работу при отправке письма, terrasoft 3.3.2.145

Добрый день.

Используем в организации terrasoft 3.3.2.145, постепенно переводим наших сотрудников на 2013 офисный пакет и столкнулись с проблемой, что при попытке отправить претензию через Outlook 2013, он (Outlook) вылетает с ошибкой, хотя письмо все же уходит. Проблема не повторяется только в безопасном режиме, но что именно отключается в безопасном режиме и не мешает работе terrasoft пока не пойму.

При закрытии почты, terrasoft выдает такое сообщение:

Класс исключения: EOleException
Сообщение об ошибке: Компьютер удаленного сервера не существует или недоступен



СТЕК ВЫЗОВА
TSScript.TScript.ExecuteMethod (Line 1045, "TSScript.pas") ()
System.@CheckAutoResult ()
TSScriptableService.TScriptableService.ExecuteScriptMethod (Line 466, "..\..\ObjectLibraries\TSObjectLibrary\TSScriptableService.pas") ()
TSWindow.TWindow.ExecuteScriptMethod (Line 2273, "..\..\ObjectLibraries\TSWindowLibrary\TSWindow.pas") ()
TSObjectEventsDispatcher.TObjectEventsDispatcher.AttemptToExecuteScriptMethod (Line 355, "TSObjectEventsDispatcher.pas") ()
TSObjectEventsDispatcher.TObjectEventsDispatcher.Invoke (Line 671, "TSObjectEventsDispatcher.pas") ()
TSConnectionPoints.TConnectionPointDispatcher.Invoke (Line 577, "TSConnectionPoints.pas") ()
Comobj.DispatchInvokeError ()
Comobj.DispatchInvokeError ()
TSWindow.TWindow.DoClose (Line 2196, "..\..\ObjectLibraries\TSWindowLibrary\TSWindow.pas") ()
TSDskWindow.TDskWindow.DoClose (Line 899, "TSDskWindow.pas") ()
TSDskWindow.TInternalWindow.DoClose (Line 536, "TSDskWindow.pas") ()
Controls.TControl.WndProc ()
Controls.TWinControl.WndProc ()
TSDskWindow.TInternalWindow.WndProc (Line 426, "TSDskWindow.pas") ()
Classes.TDataModule.WriteHeight ()
TntControls.TWinControlTrap.Win32Proc (Line 557, "..\TNT\TntControls.pas") ()
Classes.TDataModule.WriteHeight ()
TntControls.TWinControlTrap.DefWin32Proc (Line 609, "..\TNT\TntControls.pas") ()
Classes.TDataModule.WriteHeight ()
Controls.TWinControl.DefaultHandler ()
Forms.TCustomForm.WMSysCommand ()
Controls.TWinControl.WndProc ()
TSDskWindow.TInternalWindow.WndProc (Line 426, "TSDskWindow.pas") ()
Classes.TDataModule.WriteHeight ()
TntControls.TWinControlTrap.Win32Proc (Line 557, "..\TNT\TntControls.pas") ()
Classes.TDataModule.WriteHeight ()
TntControls.TWinControlTrap.DefWin32Proc (Line 609, "..\TNT\TntControls.pas") ()
Classes.TDataModule.WriteHeight ()
Controls.TWinControl.DefaultHandler ()
Controls.TWinControl.WndProc ()
TSDskWindow.TInternalWindow.WndProc (Line 426, "TSDskWindow.pas") ()
Classes.TDataModule.WriteHeight ()
TntControls.TWinControlTrap.Win32Proc (Line 557, "..\TNT\TntControls.pas") ()
Classes.TDataModule.WriteHeight ()
Forms.TApplication.ProcessMessage ()
TSClient.TSClient (Line 131, "d:\Projects\TerrasoftCRM30\TerrasoftCRM\Src\Desktop\TSCRM\TSClient.dpr") ()

АКТИВНЫЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ
tvMain (TTSCStringTree)
grdData (TfrmDataGrid)
wnd_AccountClaimsGridArea (TInternalWindow)
pgClaims (TInternalPage)
pcDetails (TInternalPages)
fmClient (TTSCPanel)
wnd_AccountsWorkspaceTInternalFrameSetC7680CC9F1624A9BB84C5CE4BAFEBDC5 (TInternalFrameSet)
wnd_AccountsWorkspace (TInternalWindow)
wnd_Main (TInternalWindow)

Изначально думал, что фаерволл блокирует работу, судя по сообщению "Компьютер удаленного сервера не существует или недоступен", но позже выяснилось, что он тут не при чем.

Через дебаг проверил, что почта вылетает на этом моменте:

function SendMailMessageToResponsibleDeparment(Dataset)
{
        var compName = Dataset.ValAsStr('AccountName');
        var todayDate = DateToStr(GetLocalDate());
    var claimsMaxDate=DateToStr(Dataset.ValAsDateTime('MaxEndingDate'));
        var claimsNumber =  Dataset.ValAsInt('Number');
        var cretedEmployeName =  GetContactNameByID(Connector.CurrentUser.ContactID);
        EmailDescriptionRichDataControl.DatasetLink.Dataset.Open();
        debugger;
        var cliemsTest = System.RTFToText(EmailDescriptionRichDataControl.DataField);
        if(cliemsTest == '' || cliemsTest == null) cliemsTest = dlData.Dataset.ValAsStr('ProblemDescription');
        var bodyMess = FormatStr('текст сообщения',todayDate,compName,claimsNumber,cretedEmployeName,claimsMaxDate,cliemsTest);
    var mailAdres = GetDepartmentManagersEmail(Dataset.ValAsGUID('ResponsibleDivision'));
    mailAdres.Mail[mailAdres.Mail.length] = "mail address";
    debugger;
   
    SendEmail({Address: mailAdres.Mail,
                Subject: FormatStr("Тема письма",compName),Body: bodyMess,AutoSend: true,SendImmediately: true,
                BodyFormat: 1});
}

А именно при попытке отправки письма:

  SendEmail({Address: mailAdres.Mail,
                Subject: FormatStr("Тема письма",compName),Body: bodyMess,AutoSend: true,SendImmediately: true,
                BodyFormat: 1});

Или же вызове следующей функции:

function GetContactMailForID(ContactID)
{    
        return GetContactMail(GetContactInfo(ContactID));      
}

function GetContactTitle(ContactDataset)
{
debugger;
   if(ContactDataset.State == dstInactive)
                    ContactDataset.Open();
        if(ContactDataset.ValIsNull('JobID'))
                return '';
        var jobID = ContactDataset.ValAsGUID('JobID');
        var jobDS = Services.GetNewItemByUSI('Contacts\\Dictionaries\\Job\\ds_Job');
        ApplyDatasetFilter(jobDS, 'ID', jobID, true);
        jobDS.Open();
        var res = jobDS.ValAsStr('Name');
        jobDS.Close();
        return res;
}

После того, как скрипт отработает, почта закрывается и создается новое сообщение.

Нравится

4 комментария

Попробовал еще запускать Outlook в разных безопасных режимах:

/safe

Starts Outlook without the Reading Pane or toolbar customizations. Both native and managed Component Object Model (COM) add-ins are turned off.

/safe:3

Both native and managed Component Object Model (COM) add-ins are turned off.

Я так и не понял, как Outlook отключает add-ins, если после запуска почты они все равно работают. Возможно он отключает какие-то записи отдельные в реестре.

Добрый день!
Трудно сказать в чем может быть причина, ведь Outlook 2013 гораздо старше 3.3.2. Вопрос с Office 2013 полностью решен в 3.4.1. Можете попробовать продебажить метод SendEMail (находится в scr_MailUtils) и определить в какой момент происходит свал

"Артем Гура" написал:

Добрый день!

Трудно сказать в чем может быть причина, ведь Outlook 2013 гораздо старше 3.3.2. Вопрос с Office 2013 полностью решен в 3.4.1. Можете попробовать продебажить метод SendEMail (находится в scr_MailUtils) и определить в какой момент происходит свал

Прошу прощения за долгий ответ.

А нет ли возможности скачать версию 3.4.1? Найти ее к сожалению не смог. Или она только под заказ доступна? И нужно ли будет переделывать что-то со стороны серверной части?

Добрый день!

По вопросам приобретения продукта Вам необходимо обращаться к ответственному менеджеру.

Показать все комментарии