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

В итоге вроде с виду выглядит всё как надо, результата нет.
Адреса просто не создаются.
С телефонами выдаёт ошибку.
Ошибка импорта. Could not convert variant of type (OleStr) into type (Boolean). Возникла при импорте записи 1C с именем Нова ОсОО Телефон Мобильный

Ещё конечно порадовало "Добавлен новый Елемент")))

Скрины приложил.

Нравится

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

Сложно сказать о конкретных причинах, не видя Ваши 1С и Terrasoft.
Слово «елемент» можно исправить в 47 строке scr_Dataflow1CConsts. И заодно в другом сообщении в 20 строке scr_MsxmlUtils.dash2
Ошибка «Could not convert variant of type (OleStr) into type (Boolean)» говорит, что пытаетесь загрузить строку в логическое поле.

Да мне то "елемент" не мешает, исправлять это в релизе надо. а не в одной копии программы.

1С и ТС вроде у всех одинаковые. 1С УТ 10.3.35.1. Как посмотреть точную версию ТС не знаю.
От того какие там буковки в адресах и телефонах, по моему ничего не меняется.
А настройки обмена, отборы и сопоставление полей я привел на скринах. По всей видимости проблема в них, но где именно не понятно.

"Корниленко Роман Васильевич" написал: исправлять это в релизе надо. а не в одной копии программы.

Роман, разработка 3.Х прекращена, на ней больше релизов не будет.
1С и ТС вроде у всех одинаковые.

Да нет, вроде, у всех разные.

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

"Зверев Александр" написал:Роман, разработка 3.Х прекращена, на ней больше релизов не будет.

Ну ок.
"Зверев Александр" написал:Да нет, вроде, у всех разные.

Что Вы подразумеваете под разные? Конфигурации совпадают, значит работает одинаково. Даже если есть доработки, то типовых справочников это обычно не касается, да и если добавлен реквизит, разве это что-то изменит, если он не участвует в синхронизации?
Различия могут быть только в данных, но я не вижу как они могут повлиять на это.
Никакие записи нормально не импортируются, все контрагенты, которые создаются, создаются с пустыми полями. Поэтому мне и кажется, что дело в настройке сопоставлений.

"Корниленко Роман Васильевич" написал:Что Вы подразумеваете под разные?

В разных версиях Terrasoft для работы с разными версиями 1С могут потребоваться определённые доработки в конфигурации.

"Зверев Александр" написал:Сложно сказать о конкретных причинах, не видя Ваши 1С и Terrasoft.

"Зверев Александр" написал:В разных версиях Terrasoft для работы с разными версиями 1С могут потребоваться определённые доработки в конфигурации.
Версию 1С я написал, платформа 8.2.19.130, как посмотреть версию ТС просьба подсказать.

Версию ядра Terrasoft можно узнать в свойствах exe-файла.
Конфигурация при этом может быть как более старая, так и более новая, если какие-то доработки переносились вручную.

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

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

Подскажите пожалуйста, если лендинг создан в специальном сервисе создания посадочных страниц вроде Платформа LP, Тильда, LP Generator или Флексби, где исходный код формы изменить нельзя (там где нужно добавить onSubmit="createObject(); return false") то интеграция невозможна?

Так же в исходном коде для полей формы нет ID, а классы для всех полей одинаковые (разные только значения value), как быть в таком случае?

К примеру:

Это вообще предусмотрено?

Нравится

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

Добрый день, Катерина.

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

Готового решения для добавления кода в нерадактируемые формы нет.

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

Добрый день!

Подскажите, можно ли активировать выгрузку реестра в xls-файл (и соответствующую кнопку) при отсутствии Excell в системе?

Terrasoft XRM 3.4.0.114 установлен на виртуальной машине на windows 10 в Parallels Desktop

Excell установлен на хостовой машине с MAC OS 10, на которой установлен Parallels Desktop 12.1.2. Файлы xls из виртуальной машины открываются при помощи Excell for MacOS

Спасибо!

Нравится

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

Логика выгрузки реестра в Excel реализована на уровне ядра и использует COM-объект Excel. Соответственно, если на компьютере нет установленного Excel, то выгрузка работать не будет.

Если у Вас есть время и вдохновение, можно добавить на базовую страницу реестра свою кнопку и написать к ней свой механизм выгрузки в более простые форматы таблиц, не требующие сторонних компонентов, например, текстовый формат CSV.

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

Добрый день.

Стоит задача.
Есть сайт. Пользователь сайта, кликая по кнопке на сайте, должен инициировать определенное событие в CRM. Например, должна появиться новая задача (новая запись в таблице Задачи).

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

Спасибо.

Нравится

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

Например, можно запустить из командной строки TSClient с нужными аргументами командной строки, который выполнит нужное и закроется (как тут).
Учтите, что запуская с сайта exe-файл нужно будет соблюдать осторожность, чтобы не получилась уязвимость запуска чего угодно.

Александр, здравствуйте.
Думаю, что такой вариант нам не подойдет. Для его реализации у каждого пользователя сайта должен быть установлен TS клиент, если я правильно Вас поняла. А пользователь сайта - это не сотрудник компании, а наш клиент.

Вопрос в том, как из сторонних систем, сайтов и пр. "стучаться" в CRM, кроме как напрямую в БД?

Нет, не должен. Речь о запуске программы на сервере. Так, как Вы имели в виду с запуском у клиента, тоже можно, но это действительно не для Вашей ситуации.

Как передать произвольные параметры через командную строку — см. тут.

"Зверев Александр" написал:Речь о запуске программы на сервере.

на сервере сайта?

Да, на сервере сайта. Но с осторожностью.

Александр, спасибо. Идея в целом понятна. Каждый раз получая от пользователя сайта нужную команду, на сервере сайта запускаем клиента Террасофт, например, с определенного окна и с набором атрибутов. А на событии OnPrepare() этого окна будет отрабатывать вся необходимая нам логика.

Этот вариант хорош, если нужно разово реализовать подобную функциональность.
Но у нас в скором времени таких вот модификаций данных в срм "извне" планируется много (и не только с сайта, но и из других систем). Потому нужен какой то более гибкий, надежный и безопасный инструмент.

Более гибкий, надёжный и безопасный инструмент — это bpm'online 7.Х. Там есть возможность создавать свои веб-сервисы или запускать БП извне.

:smile: но увы у нас Terrasoft CRM 3.3.2.

На сколько я понимаю настройка веб сервиса доступна и на 3.X?
Здесь нашла примеры работы с веб сервисом из внешних приложений.

Не знаете, насколько это вообще реализуемо на тройке? И стоит ли браться?

Можно попробовать и так, как по ссылке.
Подобным образом работает веб-форма портала самообслуживания в Service Desk 3.Х.

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

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

Подскажите, как можно осуществить проверку наличия таблиц и их колонок БД по именам, используя EntitySchemaManager в веб-сервисе? Чтобы проверить перед внесением изменений в БД.

Нравится

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

В Terrasoft 3.Х нет механизма EntitySchemaManager. Там всё устроено иначе.

"Зверев Александр" написал:

В Terrasoft 3.Х нет механизма EntitySchemaManager. Там всё устроено иначе.


Понял. Спасибо.

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

У нас реализована интеграция 1С и Террасофт. После переезда на другой сервер столкнулась с проблемой, "Невозможно создание объекта сервером программирования объектов".
Новая версия ОС - Windows Server 2012, раньше был Windows Server 2008.
Версия sql не менялась, 2008 R2.
Кроме этого изменилась организация работы: sql находися на одном сервере, а 1С и соответствено запуск интеграции под клиентским приложением - на другом.
Раньше все было на одном сервере.
Как починить интеграцию?

Нравится

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

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

Возможно я плохо объяснила, у нас интеграция средствами Террасофт. Эта же интеграция в коробочной версии 3.4 уже прописана.

См. ответ тут.

1. На том компьютере, с которого Вы пробуете запустить утилиту интеграции, не установлена 1С либо COM-объекты 1С

Я сразу указала , что запускают утилиту там же где стоит 1с, я знаю про эту особенность утилиты.
Как могут не быть установлены СОМ объекты, если 1с стоит и работает? Какие именно сом-объекты?

2. Вами не настроено соответствующим образом подключение к базе данных 1С.

Мною настроено соединение, так как написано в инструкции , и так как оно раньше работало ( конечно,с учетом нового пути к базе 1с)

Возможно все-таки проблемы в отсутствии какой-то зарегистрированной библиотеки в Windows 2012?

"Тихенко Виктория" написал:Возможно все-таки проблемы в отсутствии какой-то зарегистрированной библиотеки в Windows 2012?

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

Вообще -то я имела ввиду библиотеки Windows, но террасофт на всякий случай перерегистрировала тоже. Не помогло.

Значит, действительно что-то не то в Windows или 1С.

Может быть есть какие-то идеи что именно не так? Библиотеку зарегистрировать не сложно , знать бы какую

Я бы начал с регистрации 1С-овской comcntr.dll в папке bin установленной 1с на той машине, где стартует интеграция.
А вообще неплохо бы посмотреть в каком скрипте возникает ошибка и какой объект пытается кто создать.
ps здесь читали /это в тему поиска проблемного скрипта?

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

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

Здравствуйте! Подскажите пожалуйста, можно ли сделать двухстороннюю синхронизацию контактов gmail с террасофт и каким путем идти? Версия террасофт 3.4.0. Синхронизация контактов outlook и gmail работает через стороннее приложение, так что думаю на крайний случай можно подтягивать для синхронизации outlook. Спасибо!

Нравится

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

В Terrasoft есть интеграция контактов с Outlook. Как её настроить и использовать, см. обе инструкции на стр. 133.

спасибо! А именно для gmail есть варианты?

Есть интеграция с Outlook, а что там используется для наполнения контакктов, Gmail или Exchange — разницы нет.
Прямая интеграция с контактами Google есть только в полностью новой версии 7.Х (видео).

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

Добрый день!

Возникла нужда интегрировать Terrasoft XRM Professional Services v3.3.2.292 с сервисом ExpertSender. Этот сервис имеет собственный API, который работает через POST и GET запросы.Ранее мы уже проводили интеграцию данного сервиса с BPM'online. Для этого мы создавали бизнес-процесс, который запускался как только в CRM добавлялся новый Лид. У этого Лида считывался email-адрес, после чего запускался скрипт, который отправлял на сервис ExpertSender API-запрос, в котором содержался считанный email. Таким образом, мы добавляли новых Лидов в сервис ExpertSender, который работает через API.

Теперь же нужно то же самое воссоздать в Terrasoft XRM. Мы смогли создать новый процесс, в нем создали скрипт, который отправляет POST-запрос на ExpertSender. Но вот как сделать, чтобы процесс запускался автоматически, когда добавляется новый Лид, и как у конкретно этого нового Лида считать email - разобраться так и не удалось. Возможно, кто-то здесь подскажет, что можно сделать?

Нравится

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

Здравствуйте, Александр Николаевич!

Для решения Вашей задачи Вы можете использовать функцию WFStartByID(WorkflowID, ParamNames, ParamValues). В качестве параметров, в которую передаются WorkflowID - ID сервиса Вашего процесса, ParamNames - массив имен параметров Вашего БП, для которых Вы хотите передать начальное значение, ParamValues - массив значений параметров.

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

Доброго дня!
Подскажите пожалуйста, стоит задача сделать кнопку для импорта из excel файла в деталь раздела
Я вроде нашел пример, но пока что ничего не получается. Не могу понять в чем проблема, поскольку проходит все без ошибок, но позиции не импортируются.

function importQuote()
{

        var FileName = GetNewValue();
        if (!(System.OpenDialog(FileName, '*', EmptyStr, EmptyStr, EmptyStr))) {
                return;
        }
       
        var ExelApp = new ActiveXObject("Excel.Application");
        var WorkBook = ExelApp.Workbooks.Open(FileName.Value);
        var Sheet = WorkBook.ActiveSheet;
       
        var startRow = 2;
        var currentRow = startRow;
        var rate = Sheet.Cells(2, 12).Value;
       
        var OfferingInContractDS =  GetSingleItemByCode('ds_OfferingInOrderX',  'OfferingInOrderX');
        EnableDatasetFilters(OfferingInContractDS,  false);
        OfferingInContractDS.Open();

        var offeringsNotFound = 0;
        try {
                while(Sheet.Cells(currentRow, 12).Value != null)
                {
                        OfferingInContractDS.Append();
                        var num = Sheet.Cells(currentRow, 12).Value;
                        OfferingInContractDS('Name') = num;
                        var partNumber = Sheet.Cells(currentRow, 12).Value;
                        OfferingInContractDS('Description') = partNumber;
                       
                        OfferingInContractDS.Post();                                                   
                        currentRow++;
                }
        } finally {
                OfferingInContractDS.Close();    
        }
        dlData.Dataset.Close();
        dlData.Dataset.Open();
        WorkBook.Close();
       
        ShowWarningDialog('Загружено: ' + (currentRow - startRow));
}

Заранее спасибо!

Нравится

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

Может, у Вас просто Excel «не хочет» работать по ActiveX?
Если пройти пошагово в отладчике, то на какой строке виснет?

Я немного подправил скрипт и теперь вылетает ошибка:
"Ошибка выполнения метода 'btnImportOnClick'. Ошибка сохранения записи. Оригинальное сообщение об ошибке: The statement has been terminated.
Cannot insert the value NULL into column 'SpecificationID', table 'TSXRM3.dbo.tbl_OfferingInOrderX'; column does not allow nulls. INSERT fails «Call Stack»"
Хотя я вроде в эту колонку ничего не импортирую

import_test.xlsx

function importQuote()
{
 
	var FileName = GetNewValue();
	if (!(System.OpenDialog(FileName, '*', EmptyStr, EmptyStr, EmptyStr))) {
		return;
	}
 
	var ExelApp = new ActiveXObject("Excel.Application");
	var WorkBook = ExelApp.Workbooks.Open(FileName.Value);
	var Sheet = WorkBook.ActiveSheet;
 
	var startRow = 12;
	var currentRow = startRow;
	var rate = Sheet.Cells(12, 2).Value;
 
	var OfferingInContractDS =  GetSingleItemByCode('ds_OfferingInOrderX',  'OfferingInOrderX');
	EnableDatasetFilters(OfferingInContractDS,  false);
	OfferingInContractDS.Open();
 
	var offeringsNotFound = 0;
	try {
		while(Sheet.Cells(currentRow, 2).Value != null)
		{
			OfferingInContractDS.Append();
			var num = Sheet.Cells(currentRow, 2).Value;
			OfferingInContractDS('Name') = num;
			var partNumber = Sheet.Cells(currentRow, 3).Value;
			OfferingInContractDS('Description') = partNumber; 
 
			OfferingInContractDS.Post();							
			currentRow++;
		}
	} finally {
		OfferingInContractDS.Close();    
	}
	dlData.Dataset.Close();
	dlData.Dataset.Open();
	WorkBook.Close();
 
	ShowWarningDialog('Загружено: ' + (currentRow - startRow));
}

"Родненок Дмитрий Павлович" написал:Хотя я вроде в эту колонку ничего не импортирую

В том и дело. Вы не заполняете значением обязательное поле.

Понял, спасибо!
Теперь все импортирует!
Есть еще маленький вопрос:
У меня имеется поле с номером, который является автоинкрементом и храниться в системных настройках.
Каким образом я могу проставлять на все импортируемые файлы этот номер +1 и записывать последнее значение в системные настройки?Чтобы каждая позиция имела уникальный номер
И может быть сможете подсказать, как реализовать вложенность при импорте, поскольку деталь древовидная

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

Добрый день, коллеги.
Обнаружили у себя следующую проблему - на событии при создании звонка OnCallCreatedEvent(Call) мы случайным образом время от времени получаем пустые данные в объекте, в частности, не заполняется свойство AbonentCallInfoStr, Number и т.д.
Свойство ID заполнено всегда.
Для нас это является большой проблемой, т.к. по свойству AbonentCallInfoStr определяем идентификатор карточки обращения клиента.
Со своей стороны перебрали кучу возможных случайных вариантов, чтобы получить свойство:
Ожидание этого свойства в цикле while, инициализация карточки через другие события, например, OnStateChangedEvent, и т.д.
Мы всё равно имеем то, что Call обновляется случайным образом, притом, если он на событии инициализации вызова может быть пустым, то, например, на событии OnCommandsStateChangedEvent(Call) он может быть уже заполненным, а может и не быть.
Непонятно, каким образом кэшируется/обновляется объект, т.к. 100% в цикле одной функции при его начальном отсутствии дождаться его невозможно, а на входе другой функции он может появиться.
Прошу помочь разъяснениями тех, кто сталкивался с подобной ситуацией.

Terrasoft 3.4
Infinity 1.15.11.8315

Нравится

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

Добрый день!

К сожалению не смог найти в базовых сервисах описанных Вами событий: OnCallCreatedEvent, OnCommandsStateChangedEvent.

Прикрепите пожалуйста сервис, в котором реализованы данные события.

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