Terrasoft CRM 3.4.1
При синхронизации стало вылезать окно, что запись дублируется:

Идет синхронизация контрагентов по коду и по ИНН, эти поля у записей в 1С и террасофте совпадают, т.е. должно идти обычное обновление/изменение записи.
Но даже если я закрываю появившееся окно, или нажимаю "Сохранить новую запись", новая запись не появляется, а старая спокойно обновляется, т.е. от этого окна мне нет толка. А при автоимпорте точно также вылезает это окно, но так как происходит фоново, то я этого не вижу, а автосинхронизация дальше не идет.
Как сделать чтобы оно не выводилось, т.е. в каком скрипте, какую строчку закомментировать или же можно обойтись нескриптовыми средствами?

Нравится

1 комментарий

Здравствуйте.

В настройках поиска дублей попробуйте удалить правило, которое завязано на раздел "Контрагенты".
В дальнейшем, его, конечно же, можно будет легко и быстро заново создать.

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

Доброго времени суток!

Вопрос по синхронизации с MS Outlook. Заметили тут, что письма синхронизируются с Террасофтом только из папки Входящие, а что если письма сваливаются в другую папку? Можно ли это как-нибудь поправить?

Нравится

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

Дмитрий, приветствую!

Дело в том, смотря как у Вас письма попадают в другую папку.
Если стоит признак в настройках пользователя - [Автопривязка принимаемых сообщений], то при поступлении письма в папку Входящие - оно должно привязываться.

Также, если Вы создадите правило (средствами Outlook) что бы письмо попадало в другую папку, то также привяжется.

Если такие настройки не работают, то укажите, на каком продукте тестируете и какая версия.
Также, каким методом письмо попадает в другую папку.

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Здравствуйте!

Версии продуктов: тестировал на 3.4.0.138, у клиента 3.4.0.54
Автопривязка принимаемых сообщений включена.

В Outlook делал так: создал папку с именем Test --> пришло письмо --> правой кнопкой по письму, создать правило --> поставил фильтрацию по адресу отправителя, поставил галку "переместить в папку" и выбрал свою папку. Теперь все письма с этого адреса попадают в эту папку, но не попадают в Террасофт, причем, другие письма, попадающие в папку "Входящие", в Террасофт попадают без проблем.

Дмитрий, я протестировал у себя на 3.4.0.148 - работает.
Мне кажется, что то письмо, которое Вы присылаете изначально не может привязаться в систему.

Проверьте адрес отправителя, сможет ли по нему письмо попасть в систему?
Также, если добиться результата так и не получиться, то прошу направить на support@terrasoft.ru ссылку на скачивание базы для тестирования.

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

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

Добрый день всем...Проблема такова: нужно сделать кнопку, при нажатии на которую, происходит сканирование на вложенные файлы тех писем что вы выбрали...после сканирование должно автоматически происходить сохранение этих файлов и подкрепление их к контакту...

вот и вопрос: возможно ли производить такие действия или нет?просто я слышал что ТС работает только с заголовками писем и не может сканировать само письмо и тем более на вложенные файлы(тем более что либо потом с ними делать).

Нравится

12 комментариев

Здравствуйте.

Terrasoft работает с MS Outlook через COM объект, соответственно все методы и свойства доступны.

try {
	var Outlook = GetObject('', 'Outlook.Application');
} catch (e) {
var Outlook = new ActiveXObject('Outlook.Application');
var ActiveInspector = Outlook.ActiveInspector;
var myItem = ActiveInspector.CurrentItem.Forward;
var myattachments = myItem.Attachments;
var count = myattachments.count;
while(count > 0)
{
myattachments.SaveAsFile('@Path');
count--;
}

у меня все время ругается на ActiveInspector...говорит что он всегда "null" и потом из-за этого "myItem" всегда undifined

Здравствуйте!

Извиняюсь, опечатка. ActiveInspector - это метод (http://msdn.microsoft.com/en-us/library/office/ff863939.aspx).

Вот работающий код:

1

ну это я посмотрел, но проблема у меня в том что ActiveInspector всегда "null" и по какой то причине не видит прикрепленные файлы...и поэтому выдает мне ошибку...вот скрин-может вы увидите мою какую то ошибку?

Здравствуйте!

Откройте какое либо письмо, тогда ошибок не будет. Также Outlook может спросить подтверждения подключения от стороннего приложения.

Если Вам нужно читать вложения без открытия письма, смотрите в эту сторону.

Дмитрий в принципе все нормально доходит до момента сохранения...а вот на сохранении выдает ошибку. Пытался я посмотреть в методах и возможностях 'myattachments' что можно использовать что бы сохранить куда то вложенные файлы, но так и не нашел(( может вы знаете каким образом можно сохранить прикрепленные файлы куда то? вот кстати скрин.

Здравствуйте.

Вот так сохраняет:

function Main()
{
 
try {
        var Outlook = GetObject('', 'Outlook.Application');
} catch (e) {
var Outlook = new ActiveXObject('Outlook.Application');
}
var ActiveInspector = Outlook.ActiveInspector();
var myItem = ActiveInspector.CurrentItem.Forward;
var myattachments = myItem.Attachments;
myattachments.Item(1).SaveAsFile('C:\\Temp\\j_' + myattachments.Item(1).DisplayName);
 
 
}

Кстати, вот пример на VBA как сохранять все вложения писем с папки "Входящие":

Dim myApp As Outlook.Application
Dim myFolder As Outlook.MAPIFolder
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox).Folders("1")
DestFolder = "C:\New"
     For Each Item In myFolder.Items
        For Each Atmt In Item.Attachments
            FileName = Atmt.FileName
                Atmt.SaveAsFile DestFolder + myattachments.Item(1).DisplayName
            End If
        Next Atmt
    Next Item
End Sub

Дмитрий спасибо огромное))все почти работает(немножко осталось поправить в моем коде)...))

Егор, не за что.

Будут дополнительные вопросы - обращайтесь.

Есть наверно по этой теме последний вопрос потому что не могу никак подобрать метод что бы все правильно до конца отрабатывало: в общем получилось так:
1) открывает письмо
2) сканирует на вложенные файлы
3) сохраняет первый файл
4) создает контакт и крепит к нему этот файл и по этому файлу заполняет карточку контакта
5) потом так же со вторым и т.д. по циклу для всех вложенных файлов

теперь не хватает последнего: не закрывается открытое окно письма аутлуковского. Искал методы что бы закрыть, но нашел только кучу методов и функционала только по отношению к основному окну а не открытого письма...что вы думаете по этому поводу?

Здравствуйте!

Нужно закрывать так:

var ActiveInspector = Outlook.ActiveInspector();
ActiveInspector.Close(0);

спс все работает как часы))

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

Доброго времени суток, коллеги!
Недавно столкнулся с задачей: "синхронизировать поля Terrasoft.Обращение и Outlook.Краткое Имя".
Как оказалось взаимосвязи между ними практически нет :smile:

карточка контакта в Outlook

В карточке Outlook "Краткое Имя" - это то, что подставлятся в строку e-mail адреса в формате:
"Краткое Имя" . Пройдя отладчиком по Outlook выявил следующее соответствие полей ("нет" - означает, что в Terrasoft аналог у данного поля отсутствует):

FullName - Фамилия Имя Отчество - tbl_Contact.Name
Birthday - - tbl_ContactAnniversary.AnniversaryDate
Body - Description. - tbl_Contact.Description
BusinessTelephoneNumber - workphone1 - tbl_Contact.Communication1
Business2TelephoneNumber - workphone2 - нет
MobileTelephoneNumber - mobilephone - tbl_Contact.Communication2
BusinessAddress - work address - tbl_Contact.Address
BusinessAddressCity - - tbl_Contact.CityID
BusinessAddressCountry - Россия - tbl_Contact.CountryID
BusinessAddressPostalCode
BusinessAddressPostOfficeBox
BusinessAddressState - work address - tbl_Contact.StateID
BusinessFaxNumber - workfax - tbl_Contact.Communication4 (при условии, что тип средства связи 4 = Fax)
CompanyAndFullName - ООО Название Организации" - tbl_Account.OfficialAccountName
CompanyName - ООО Название Организации"" - tbl_Account.Name
Department - Отдел - tbl_Contact.Department
JobTitle - Должность - tbl_Contact.JobID

WebPage - http://webpage.com - нет
IMAddress - instatnmessenger - нет

Email1Address - email1@mail.com - tbl_Contact.Communication3 (при условии, что тип средства связи 3 = Email)
Email1DisplayName - Краткое Имя 1 (email1@mail.com) - нет

Email2Address - email2@mail.com - нет
Email2DisplayName - Краткое Имя 2 (email2@mail.com) - нет

Email3Address - email3@mail.com - нет
Email3DisplayName - Краткое Имя 3 (email3@mail.com) - нет

FileAs - Отчество, Фамилия Имя - нет
FirstName - Фамилия - нет
Gender - - tbl_Contact.GenderID

HomeTelephoneNumber - Homephone1 - нет
Home2TelephoneNumber - Homephone2 - нет
HomeFaxNumber - Homefax - нет
OtherTelephoneNumber - -

HomeAddress - - нет
HomeAddressCity - - нет
HomeAddressCountry - - нет
HomeAddressPostalCode - - нет
HomeAddressPostOfficeBox - - нет
HomeAddressState - - нет
HomeAddressStreet - - нет

OfficeLocation - Комната - нет
OtherAddress - - нет
OtherAddressCity - - нет
OtherAddressCountry - - нет
OtherAddressPostalCode - - нет
OtherAddressPostOfficeBox - - нет
OtherAddressState - - нет
OtherAddressStreet - - нет
OtherFaxNumber - - нет
- - нет
LastName - Фамилия - нет
NickName - Псевдоним - нет

Profession - Проффесия - нет
Suffix - Суффикс - нет
Title - Обращение - нет

В конфигурации Terrasoft логика синхронизации заложена в сервис Common\Tools\Integration\MS Office\MS Outlook\MS Outlook Synchronization Library\scr_MSOutlookContactSynchronization.

Из Outlook в Terrasoft - метод SetContactInfoFromMSOutlook(olContact)
Из Terrasoft в Outlook - метод SetContactInfoToOutlook(olContact, ContactDataset)
Надеюсь, мои наблюдения будут Вам полезны!
Приятной работы!

Нравится

Поделиться

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

День добрый, уважаемые участники интернет сообщества!

Как вы, наверное, все знаете, в Terrasoft существует возможность двусторонней синхронизации задач между MS Outlook и Terrasoft. Хочу рассказать об одной особенности: если выполнять синхронизацию задач из Terrasoft в MS Outlook, то в случае если для задачи в Terrasoft установлен признак "Отображать в расписании", то задача будет интегрирована в MS Outlook как встреча и будет отображена в календаре.
1
В ином случае - задача попадет в меню "Задачи" в папку "Задачи".
2

Эта особенность реализована в скрипте scr_MsOutlookSynchronization:

if (ShowInSheduler) {
         olItem = OutlookSync.OutlookApplication.CreateItem(olAppointmentItem);
} else {
         olItem = OutlookSync.OutlookApplication.CreateItem(olTaskItem);
         }
IsAddUserField = true;
OutlookSync.CreatedItem++;

где
 var ShowInSheduler = (TerrasoftItemDataset.Values('ShowInScheduler') == 1);

Соответственно, Вы можете легко изменить указанную логику, например по типу задачи (если тип: встреча – создаем встречу, в ином случае задачу):

if (IsMeetingOrTask) {
         olItem = OutlookSync.OutlookApplication.CreateItem(olAppointmentItem);
} else {
         olItem = OutlookSync.OutlookApplication.CreateItem(olTaskItem);
         }
IsAddUserField = true;
OutlookSync.CreatedItem++;

var IsMeetingOrTask = (TerrasoftItemDataset.Values('TypeID') == '{63FB4E89-EE75-404F-8352-1E712AC909F6}');

где '{63FB4E89-EE75-404F-8352-1E712AC909F6}' – ID типа задачи «Встреча».

Либо, как другой вариант, в этом участке кода можно настроить синхронизацию таким образом, чтобы создавалась как задача так и встреча, убрав проверку вообще:

olItem = OutlookSync.OutlookApplication.CreateItem(olAppointmentItem);
olItem = OutlookSync.OutlookApplication.CreateItem(olTaskItem);        
IsAddUserField = true;
OutlookSync.CreatedItem++;

Приятной работы с Terrasoft!

Нравится

Поделиться

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

Подскажите как настроить Terrasoft CRM 3.x для синхронизации контактов с Microsoft Outlook 2007/2010

из террасофта в оутлук сейчас перекидывает, а при попытке перекинуть из оутлука в террасофт, террасофт падает в ошибку.

Общая информация
..........
Исполняемый файл: C:\Program Files\Terrasoft\Bin\TSClient.exe
Версия: 3.3.2.222
Класс исключения: EOleException
Сообщение об ошибке: "undefined" -  есть null или не является объектом

Стек вызова
TSDataset.TTSDataset.RaiseDatasetError (Line 2001, "TSDataset.pas") ()
TSDataset.TTSDataset.DoDatasetError (Line 1452, "TSDataset.pas") ()
TSDataset.TTSDataset.Post (Line 2433, "TSDataset.pas") ()
TSAutomationObject.TAutomationObject.Invoke (Line 316, "TSAutomationObject.pas") ()
TSScript.TScript.ExecuteMethod (Line 1045, "TSScript.pas") ()
TSScriptableService.TScriptableService.ExecuteScriptMethod (Line 466, "..\..\ObjectLibraries\TSObjectLibrary\TSScriptableService.pas") ()
TSWindow.TWindow.ExecuteScriptMethod (Line 2279, "..\..\ObjectLibraries\TSWindowLibrary\TSWindow.pas") ()
TSObjectEventsDispatcher.TObjectEventsDispatcher.AttemptToExecuteScriptMethod (Line 355, "TSObjectEventsDispatcher.pas") ()
TSObjectEventsDispatcher.TObjectEventsDispatcher.Invoke (Line 671, "TSObjectEventsDispatcher.pas") ()
TSConnectionPoints.TConnectionPointDispatcher.Invoke (Line 592, "TSConnectionPoints.pas") ()
Comobj.DispatchInvokeError ()
Comobj.DispatchInvokeError ()
TSWindowControl.TWindowControl.DoClick (Line 379, "..\..\ObjectLibraries\TSWindowLibrary\TSWindowControl.pas") ()
TSButton.TButton.DoClick (Line 197, "..\..\ObjectLibraries\TSWindowLibrary\TSButton.pas") ()
TSDskWindowLibraryCommon.THookControl.OnClickProc (Line 476, "TSDskWindowLibraryCommon.pas") ()
Controls.TControl.DoMouseUp ()
Controls.TWinControl.WndProc ()
Controls.TWinControl.MainWndProc ()
Classes.TDataModule.WriteHeight ()
TntControls.TWinControlTrap.Win32Proc (Line 557, "..\TNT\TntControls.pas") ()
Classes.TDataModule.WriteHeight ()
Forms.TApplication.ProcessMessage ()
TSClient.TSClient (Line 142, "d:\Projects\TerrasoftCRM30\TerrasoftCRM\Src\Desktop\TSCRM\TSClient.dpr") ()

Активные элементы управления
wnd_MSOutlookProgressSynchronization (TInternalWindow)

Нравится

1 комментарий

Данное сообщение - undefined" - есть null, означает, что одно из ключевых полей, на основе которого создается запись в таблице, заполняется пустым значением. Соответсвенно система не может создать запись в Terrasoft.
Проанализируйте контакты MS Outlook - обязательно должны быть заполнены ФИО контакта и e-mail

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

Время от времени возникает ситуация, когда дата документа (ДатаДок) в 1С изменяется, но не выходит за рамки того же года (например, с 12.02.2011 на 14.02.2011). То есть номер документа является уникальным в разрезе одного года, но не уникальным в разрезе всего реестра документов. В таком случае, если использовать стандартную связку по ключевым полям (НомерДок, ДатаДок и объект 1С), такая связка с 1С теряется. Есть ли возможность в текущей утилите синхронизации задавать связку по году, а не по конкретной дате?

Отзовитесь у кого такая проблема тоже возникала. Если я не один такой, возможно, стоит добавить такую функциональность в базовую утилиту синхронизации с 1С (если таковой функциональности еще не сделали).

Нравится

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

Здравствуйте, Андрей.

Доработка утилиты интеграции подобным образом является очень трудоемокой.

Предлагаю для решения данной проблемы добавить еще одно ключевое поля для синхронизации и исключить дату документа.

В частности, добавить в конфигурацию 1С поле TSID, передавать в него при синхронизации соответствующий идентификатор записи в Terrasoft.

"Alimova Anna" написал:В частности, добавить в конфигурацию 1С поле TSID, передавать в него при синхронизации соответствующий идентификатор записи в Terrasoft.

Спасибо, тоже вариант.

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

Время от времени возникает ситуация, когда код записи в 1С изменяется на другой. При этом, если настраивать синхронизацию справочников по двум ключевым полям (коду и названию объекта), то такая связка будет утрачена. Есть ли возможность использовать в качестве ключевого поля ID записи в 1С, которая не изменяется и всегда является идентифицирующей уникально конкретную запись в диапазоне одной таблицы?

Нравится

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

В случае если Вы используете тилиту синхронизации из каталога расширений:
http://www.community.terrasoft.ru/catalog/3796

В данноей утилите есть возможность выбора сопоставления Uuid(со стороны 1-C) и UuiD-1C(Terrasoft).
Установите данные поля как уникальные.

Спасибо :twisted:

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

Посоветуйте, как реализовать работу в TCRM двух удаленных офисов, пусть даже находящихся в одном городе? Что для этого требуется?

- В каждом офисе по 20 сотрудников. Будет ли приемлемой скорость работы программы с БД, находящимся в другом офисе?
- Какова должна быть скорость канала?
- Есть ли примеры такой работы среди ваших клиентов?
- Если скорость будет неприемлема, как решается данная проблема? Интересует синхронизация данных между офисами в реальном времени.
- Есть ли требования к типу БД, сервера?

Софт на сервере планируется FreeBSD + Firebird.

Нравится

5 комментариев

Касательно Ваших вопросов:
1.Удаленный доступ к базе данных можно предоставить несколькими способами:
а. Настройка web-сервисов Terrasoft (настройка web-сервера для доступа к конфигурации по сети Internet) – самый оптимальный вариант. Плюсы – хорошая скорость при наличии широкого Internet-канала, после настройки требует минимума администрирования, не требует дополнительных настроек на клиентском ПК после настройки конфигурации, пользователь просто открывает клиентское приложение у себя на ПК и в качестве конфигурации выбирает web. Для работы web-сервисов необходимо наличие клиентской части приложения на пользовательском ПК.
Рекомендации по настройке web-сервисов доступны в руководстве администратора Terrasoft, а также тут.

б. Настройка репликации – обмен данными между несколькими точками, на каждой из которых хранятся копии базы данных. Довольно сложна в настройке и администрировании. Плюсом является то, что пользователю нет необходимости постоянно быть подключенным к сети Internet. Минусы: необходимо хранить часть базы данных (а также SQL сервер) непосредственно на пользовательском ПК, что увеличивает аппаратные требования к клиентскому ПК, в случае большого объема данных синхронизация может проходить довольно долго.
в. Настройка удаленного подключения путем администрирования сервера (по протоколу rdp – стандартный удаленный рабочий стол, либо настройка терминального доступа путем настройки терминального сервера) – задача системного администрирования. Плюсы – простота в настройке и администрировании, при использовании терминального доступа клиентское приложение выполняется полностью на стороне сервера. В этом случае хранить клиентское приложение на пользовательском ПК нет необходимости. При использовании VPN неплохое шифрование данных.

2.
Скорость работы зависит от нескольких факторов:
- аппаратные характеристики сервера и клиентских ПК
- скорость и стабильность интернет соединения

Прикрепляю к данному сообщению документ, в котором описаны аппаратные требования и требования к ширине канала.

3. СУБД Вы можете использовать любую, из доступных (MS SQL, Firebird, Oracle). Вслучае использования Firebird, ОС FreeBSD вполне может быть использована в качестве сервера СУБД. Но стоит учитывать тот факт, что web-сервер (при использованиии web-сервисов) должен быть под управлением ОС семейства Windows, т.к. на данном сервере должна быть преднастроена конфигурация клиентского приложения Terrasoft (для возможности подключения к БД посредством web-сервисов), которое, как известно, работает исключительно на ПК под управлением операционных систем семейства Widnows.
В случае настройки VPN Firebird на FreeBSD также может использоваться.

Влад, спасибо за развернутый ответ.

Если офисы связаны VPN-соединением и как бы находятся в одной локальной сети, тогда по идее, удаленный клиент будет соединяться с базой как локальный, и ничего дополнительно настраивать не нужно, я правильно понимаю? В таком режиме можно работать 20-ти удаленным сотрудникам при достаточной ширине канала?

В чем преимущества web-сервисов перед VPN-соединением, что они из себя представляют?

Да, при VPN соединении клиентское приложение соединяется с БД также, как и в локальной сети.

В преимущества web-сервисов следует выделить следующее:
1. Удаленному пользователю нет необходимости дополнительно настраивать VPN-соединение, соединяться с VPN-тунелем для подключения.
2. Сравнительно легкая настройка
3. Простота в администрировании
Однако все эти преимущества относительны. В основном выбор основывается на предпочтениях администратора. Хочу заметить, что в случае, если критическим для Вас является защищенность (шифрование) данных, то VPN обеспечивает большую степень защиты чем web-сервисы, даже при условии использования https (ssl-сертификатов).

Большое спасибо, Влад. Удачной работы! :)

Хотелось бы заметить что требования касаются коробочной версии, а в случае самостоятельного изменения клиентской части требования могут возрасти...Так что сразу нужно ориентироваться не на минимальные, а на рекомендуемые значения...

Из личного опыта доработанной конфигурации.

Вопрос:
"Какие требования к аппаратной части сервера Terrasoft CRM?
- размер базы 15-40ГБ
- количество клиентов до 30
А также рекомендованные параметры клиентской системы?
"
Комментарии после ответа:
"Далее, можно отказаться от использования фильтрации, сортировки, и т.д., что облегчит выполнение запросов к базе данных. В принципе, такие вопросы рассматриваются комплексно. Анализируется, что является причиной возникновения проблем (нехватка ресурсов, медленная обработка запросов и т.д.).

Также при больших объемах данных, а также в случае, если количество пользователей системы превышает 10, мы крайне рекомендуем не использовать Firebird, а советуем обратить внимание на Express (бесплатную) версию MS SQL 2008.

данное поведение системы довольно нестандартно и требует детального изучения. Однако в любом случае, при работе с БД такого объема и при Вашем количестве пользователей, Firebird использовать не рекомендуется."

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

Здравствуйте!
Встала такая проблема - синхронизируется большой справочник номенклатуры с 1С (TS3.3.2, 1С7.7), порядка 38 тысяч наименований. При этом изменять данные в справочнике могут как и из ТС, так и в 1С. При этом, насколько мне известно, в 1С не ведется поле, фиксирующее момент последнего изменения записи, то есть получается каждый раз из 1С надо импортировать весь справочник целиком, так как мы не знаем, какие записи подверглись изменениям, что занимает очень продолжительное время. Есть ли какие-нибудь варианты по оптимизации процесса?

Нравится

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

Единственный пришедший в голову вариант - добавлять реквизит в нужные данные в 1С - "Дата изменения", прикручивать обработчик и вести собственно нужный лог в этой дате, что позволит создать фильтр при импорте из 1С и фильтровать только изменившиеся записи.

Если бы вы работали в 1С 8 можно было бы использовать "План обмена", но так как вы работаете с версией 1С 7.7 то возможно предложенный вами вариант, самый рациональный. На сколько мне известно в 1С 7.7 есть некоторая трудность при передаче фильтра даты и времени, получиться только по дате, возможно это будет приемлемо, если данных за день не так много.

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