Коллеги, Добрый день, 

 

Пытаемся авторизоваться в демонстрационной версии одного веб-сервиса (Lamoda Fulfilment) из интерфейса Creatio OAUTH 2.0

 

При попытке авторизации в веб-сервисе получаем ошибку

Invalid grant_type parameter or parameter missing



При этом "собранный" запрос с передачей в GET необходимых тех же самых параметров client_id, client_secret и grant_type (даже с redirect_url) в адресной строке и как отдельный метод Creatio возвращает ответ без ошибок.



Дополнительные разрешения / scopes для пользователей веб-сервиса не требуются (это demo версия веб-сервиса, условия самые "лайтовые")

 

В связи с этим вопрос?

Кто-нибудь сталкивался с подобной проблемой и с чем может быть связано ?Изображение удалено.



Спасибо всем ответившим Изображение удалено.

Нравится

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

Александр, здравствуйте.

 

На данный момент такие типы авторизации OAuth 2.0 не поддерживаются. Так как в запрос не добавляется параметр grant_type.

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

Коллеги, Добрый день,



Возможно, кто-нибудь сталкивался с задачей: вывести список доступных для доставки улиц населенного пункта (или как вариант-пунктов самовывоза) при заполнении данных в заказе?



Список улиц / пунктов самовывоза получаем при помощи метода веб-сервиса службы доставки.



Вопрос, каким образом в Sales Creatio можно выполнить обращение к веб-сервису и получить данные для вывода в открывающемся списке в процессе заполнения данных заказа?



Пример интерфейса, возвращающего список улиц или пунктов самовывоза в зависимости от выбранного населенного пункта и способа доставки:

Изображение удалено.





Спасибо всем ответившим Изображение удалено.

Нравится

2 комментария
Лучший ответ

1) Сделать общение в веб-сервис при изменении ключевых полей. В ответе, допустим, возвращается список улиц.

2) Делаем виртуальное enum-поле "Улица". Список формируем "на лету" используя то, что вернул сервис. Пример кода тут (в controlConfig нужен prepareList и list)

1) Сделать общение в веб-сервис при изменении ключевых полей. В ответе, допустим, возвращается список улиц.

2) Делаем виртуальное enum-поле "Улица". Список формируем "на лету" используя то, что вернул сервис. Пример кода тут (в controlConfig нужен prepareList и list)

Большое спасибо за ответ, разобрались с возможной реализацией.

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

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

Аналогия - xml data source в Report Server'e, под которым может лежать всё что угодно. Я, например, вызывал 1С и мержил данные с SQL'ем.

Круто же?

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

Алексей, здравствуйте!



Передали Ваше пожелание аналитикам продукта для рассмотрения такой реализации. 

Спасибо за помощь в развитии функционала!

Алексей, спасибо за пожелание. Зарегистрировали ваше пожелание по развитию приложения. Мы обязательно уведомим, когда оно будет включено в релиз.

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

Добрый день.

Есть некий web-service (wcf и использует wsHttpBinding) и методы для работы с ним.
Необходимо из террасофта работать с данными методами.

Есть понимание как это сделать в Visual Studio например на с#
Для этого к проекту добавляется ServiceReference (с указание ссылки на наш веб-сервис), на его основе создается объект и дальнейшая работа (авторизация и обращение к методам) происходит через этот объект. Примерно так...

SomeServiceReference.ServiceClient client = new SomeServiceReference.ServiceClient();
if (client.ClientCredentials != null)
{
client.ClientCredentials.UserName.UserName = "UserName";
client.ClientCredentials.UserName.Password = "Password";
client.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
}

try
{
return client.InvokeMethod( parameter );
}
catch( Exception ex )
{
client.Abort();
throw ex;
}
finally
{
if( client != null ) client.Close();
}

В с# также есть возможность программно создать экземпляр System.ServiceModel.WSHttpBinding и с помощью него организовать взаимодействие со сторонним веб-сервисом.
А вот как организовать подобную схему из Террасофта не понятно.

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

Спасибо.

Нравится

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

Можно Вашу разработку на C# переделать в COM-объект. А затем этот объект в Terrasoft 3.Х вызывать из скрипта.

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

Добрый вечер!

Можно ли настроить интеграцию bpm 7.x с помощью: Справочники.Интеграции.Веб-сервисы? Есть-ли какое-то описание? В частности из ЦБ: http://www.cbr.ru/scripts/Root.asp?PrtId=DWS

Нравится

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

Здравствуйте!
Интеграцию при помощи этого справочника настроить нельзя. Данный справочник использовался в версии 7.2.2 для регистрации веб-сервисом, созданных в бизнес процессе при помощи элемента "Веб-сервис". В старших версиях этот элемент отсутствует, однако справочник остался.

Для интеграции с веб-сервисом, используйте следующую инструкцию:
vyzov_metoda_veb-servisa.doc

"Демьяник Алексей Олегович" написал:используйте следующую инструкцию

Алексей, спасибо!
С первого прочтения совсем не понятно. Буду разбираться.

Особенно интересно предложение "Далее следуем по пунктам указанным в статье" - видимо где-то должна быть статья, которой в файле нет :sad:

Добрый вечер!

Данный файл и есть статьей. Имелось в виду следуйте далее по инструкции.

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

Добрый день, коллеги!
Есть BPMOnline On-Demand с простым бизнес процессом который вставляет новый Лид.
Этот бизнес процесс вызывается поверх http с web-портала.
В общем виде, получается пара запросов:

// 1. Авторизация
HttpWebRequest.Create("https://....bpmonline.com/ServiceModel/AuthService.svc/Login?...");
...
// 2. Вызов бизнес процесса
HttpWebRequest.Create("https://....bpmonline.com/1/ServiceModel/ProcessEngineService.svc/ImportExternalLeadProcess/Execute?...");

Столкнулся с проблемой плохой производительности такого решения.
Запрос на авторизацию [1] выполняется стабильно за ~0.5c, а вот вызов БП [2] в первый раз после длительного перерыва (несколько часов) может выполняться 20-30с. При этом все последующие запросы отрабатывают все за те же стабильные ~0.5c.

С чем может быть связана такая деградация производительности?
Возможно есть настройка решающая проблему или есть путь обойти ее?

Нравится

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

В IIS по умолчанию для пула приложений идет таймаут простоя (idleTimeout) 20 минут
Через 20 минут IIS завершит выполнение рабочего процесса (если к нему нету других обращений), и при следующем обращении IIS будет повторно создавать рабочий процесс.
Возможно, вам подойдет увеличить таймаут простоя до большего значения (настройка Пула приложений->Advanced settings->Idle timeout (minutes))

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

При длительном отсутствии обращений к серверу ( 20 минут), сервер переходит в «спящий» режим (Idle). В этом режиме сбрасываются все кэши сервера, а также очищается память от выполненных запросов. При первом запросе сервер переходит в режим Normal (это занимает некоторое время).
2) При первом обращении к разделу или первое открытие карточки, после перехода сервера из режима Idle в режим Normal, приложение обращается к базе данных за необходимыми ресурсами и создает экземпляры классов для страницы, которые в результате сохраняются в кэш (это занимает приблизительно 7 сек. на сервере). При повторном обращении к уже закэшированной странице, она откроется за нормальное время (порядка 2,5-3 секунд), так как большинство необходимых данных берутся из кэша.

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

Для решения проблемы можно увеличить таймаут сервера, к примеру до 24 часов. Если за 24 часа работы с приложением не будет - он перейдет в Idle.

Сообщите название Вашего сайта с приложением (можно в личку) - мы увеличим для Вас таймаут.

Добрый день!
Спасибо большое за разъяснение. Я что-то подобное предполагал.
Увеличьте пожалуйста таймаут до 24 часов для extrimassistance.bpmonline.com

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

Дмитрий, здравствуйте.
Завтра (29.01.2013) в течении дня сайт будет свободен, можно провести необходимые работы.
Спасибо.

Валерий, хорошой.

Сообщу Вам дополнительно после внесения изменений.

Готово.

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

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

Работать с Web-сервисами из сторонних приложений можно двумя способами, все зависит от цели использования и конкретного языка программирования:
1. Работа через COM-объекты Terrasoft
2. Работа с Web-сервисами напрямую

Работа через COM-объекты

Первый вариант наименее трудоемкий и более удобный, но требует, чтобы на клиентской машине были зарегистрированы библиотеки Terrasoft (для использования COM-объектов). При этом вся работа с Web-сервисами будет выполняться COM-объектами Terrasoft, предоставляя доступ к данным и объектам через объектную модель платформы Terrasoft: IDataset, ISelectQuery и т.д.

Для подключения программно нужно выполнить следующий код (пример на Jscript, но это можно реализовать на любом языке, который работает с COM-объектами):

 

         // Создание экземпляров COM-объектов Connector и Configuration
         WSConnector = new ActiveXObject('TSDskObjectLibrary.DskConnector');      // Для версий 3.4.0+ объект создается ActiveXObject('TSObjectLibrary.Connector')
         var WSConfiguration = new ActiveXObject('TSObjectLibrary.Configuration');  
         WSConfiguration.DBExecutorTypeCode = 'WebServices';

         // Кэшироование созданного соединения
         Connector.Attributes('WSConnector') = WSConnector;

         // Установка строки соедения и название конфигурации настроенной на сервере
         WSConfiguration.SetConnectionString(
                   '"URL=http://192.168.227.128/TSWebServicesServerLibrary.dll/soap/IServer"' +
                   ',"ConfigurationName=Dev332"');

         // Открытие конфигурации
         var IsConnected = WSConnector.OpenConfiguration(
                   WSConfiguration,
                   1,           // Тип аутентификации: 0 - Windows Authentication, 1 - Server
                   'ddd',       // Имя пользователя
                   '');         // Пароль

 

После успешного подключения можем обращаться к любым объектам, получать данные и т.д. Например получение данных о контрагентах:

 

         // Получение сервиса ds_Account из коннектора к веб-сервисам
         var AccountDataset = WSConnector.Services.GetSingleItemByUSI('ds_Account');
         
         // Подготовка датасета: закрытие и очистка фильтров
         AccountDataset.Close();
         EnableDatasetFilters(AccountDataset, false);
         
         // Наложение фильтра по ID текущей записи
         ApplyDatasetFilter(AccountDataset, 'ID', dlData.Dataset('ID'), true);
         
         // Открытие датасета
         AccountDataset.Open();
         
         // Считывание данных
         if (AccountDataset.IsEOF) {
                   var Value = '(нет данных)';
                   edtWSName.Value = Value;
                   edtWSOfficialName.Value = Value;
                   edtWSCode.Value = Value;
         } else {
                   edtWSName.Value = AccountDataset.ValAsStr('Name');
                   edtWSOfficialName.Value = AccountDataset.ValAsStr('OfficialAccountName');
                   edtWSCode.Value = AccountDataset.ValAsStr('Code');  
         }
         
         // Закрытие датасета
         AccountDataset.Close();

 

Во вложении полный пример работы с Web-сервисами на Jscript, используя COM-объекты.

Работа с Web-сервисами напрямую

Этот тип работы сложнее, т.к. все запросы к Web-сервисам нужно посылать самостоятельно, а также самому обрабатывать ответ от сервера. При этом не используются COM-объекты Terrasoft, соответственно не нужно устанавливать и регистрировать библиотеки Terrasoft на каждом клиентском компьютере, откуда будут запрашиваться веб-сервисы.

Запросы Web-сервисам можно отправлять исходя из их интерфейса (WSDL) – описания всех методов с параметрами.

Для упрощенной разработки программ для работы с Web-сервисами в некоторых IDE, например Visual Studio, предусмотрен импорт WSDL (Add WebService Reference), при этом сама IDE генерирует оберточные классы для работы с Web-сервисами. Вызывая методы такого класса вы будете упрощенно вызывать соответствующие методы веб-сервиса.

Упрощение заключается в том, что для вызова метода Web-сервиса нужно отправить полный XML запрос, а с помощью оберточных классов – просто вызвать соответствующий метод с параметрами.

Пример на C# :

// Создание клиента Web-сервиса
        ws.IServer sc = new ws.ServerClient(); // ws.IServer – оберточный класс для работы с Web-сервисами Terrasoft
        ws.OpenConfigurationRequest rqOpenConfiguration = new ws.OpenConfigurationRequest(); // Запросы для открытия конфигурации
        ws.OpenConfigurationResponse rsOpenConfiguration = new ws.OpenConfigurationResponse();

// Открытие конфигурации
rqOpenConfiguration.ACompressionLevel = 0; //Without compression (zip)            
         rqOpenConfiguration.AConfigurationName = Configuration;
         rqOpenConfiguration.ADBExecutorTypeCode = "MSSQL";
         rqOpenConfiguration.AUserName = UserName;
         rqOpenConfiguration.AUserPassword = Password;
         rsOpenConfiguration = sc.OpenConfiguration(rqOpenConfiguration);

 

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

Во вложении полный пример работы с Web-сервисами на C#.

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

Приятной разработки:)

Нравится

Поделиться

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

Александр, здравствуйте.

Подскажите:
1) Доступна ли настройка веб сервиса на версии Terrasoft CRM 3.3.2.X ?
2) Приходилось ли применять какой то из способов на практике?

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

1. Возможность настройки веб-сервиса на версии Terrasoft CRM 3.3.2 доступна.
2. Приведенные примеры взяты с реальных практических решений.

Простите, а нельзя ли прислать на почту neveryes@bk.ru полный пример работы с Web-сервисами на C#.

Потому что вложения как такового нет((

и на почту qart2003@gmail.com 

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

Вложения можно скачать тут и тут. Обратите внимание, это всё о Terrasoft 3.Х.

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

Думаю не для кого не секрет, что на Windows Server 2008R2 повышенная политика безопасности. Столкнулся с задачей настройки подключения к веб-сервисам из Terrasoft на этой ОС. Соединение не устанавливалось, хотя из других ОС к этим же веб-сервисам коннект проходил нормально.
Перепробовал много различных способов: отключение брандмауэра, отключение UAC, мониторинг запросов в реестр/файловую систему, анализ недостающих библиотек. Но потом нашел интересную статью по этой теме:
http://stackoverflow.com/questions/2485578/incompatibilities-between-indy-9-and-windows-server-2003
Причиной всему оказался включенным системный Data Execution Prevention (DEP). Добавил в список его исключений приложение TSClient.exe и соединения к веб-сервисам стали происходить нормально.
Для русской Windows 2008R2 эта настройка находиться "Компьютер" -> "Свойства" -> "Дополнительные параметры системы" -> закладка "Дополнительно" -> Быстродействие "Параметры" -> закладка "Предотвращение выполнения данных". Выберите "Включить DEP только для основных программ и служб Windows" или добавьте в список исключения необходимые программы (TSClient.exe, TSAdmin.exe ...)

Нравится

Поделиться

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

Непомогло. Как выходила ошибка так и выходит.

В ходе удаленного соединения оказалось, что соединение с машины Windows Server 2008 происходило нормально, а вот с Windows XP - та же проблема. Добавили Terrasoft в список исключений DEP и все заработало.

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

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

Недавно, разрабатывая модуль отображения продуктов из TerrasoftCRM на сайте Заказчика, я решил попробовать проинтегрироваться с Веб-сервисами :)
Конечно, доставать данные напрямую из базы проще, но имея класс для интеграции с Веб-сервисами TerrasoftCRM, мы уже можем говорить о полноценной интеграции на уровне приложений! Вот и решил я написать такой класс :)

Язык программирования PHP ( >= 5.2.0 )
Представляю Вашему вниманию первые наработки в этом направление (будет востребовано - продолжу разработку).

Как же без примеров :)

Создаем объект и заполняем переменные:

$ws = new itsTerrasoftWS();
$ws->set_Host('http://10.10.10.10:81/crm/TSWebServicesServerLibrary.dll/wsdl/IServer');
$ws->set_Username('Supervisor');
$ws->set_MaxPackageSize($ws->get_MaxPackageSize() - 558);
$ws->set_wsClient();

Получаем маcсив с доступными конфигурациями:

$wsConfigurations = $ws->get_wsConfigurations();

Устанавливаем Соединение:

$ws->set_Configuration($wsConfigurations[1]);
$ws->OpenConfiguration();

Создаем XML-ый запрос и выполняем:

$SQL = "select [OfficialAccountName] from tbl_Account where ID = :AccountID ";

$ws->CreateXML($SQL);

$ws->CreateParam();
$ws->AddDBParam("AccountID", "1", "1", "0", "{DFC26A8C-C284-4FBF-9DE2-39E8D77F1915}");

$ws->ExecuteSQL();

Получаем XML-ый ответ, выводим и закрываем соединение

$xml = DOMDocument::loadXML( $ws->get_XMLResult() );
$params = $xml->getElementsByTagName('R');
$k=0;
foreach ($params as $param)
{
   echo $params->item($k)->getAttribute('F0')."
"
;
   $k++;
}
$ws->CloseConfiguration();

Надеюсь, что мой труд кому-то еще пригодится :)

Код класса itsTerrasoftWS выкладываю под MIT лицензией

Нравится

Поделиться

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

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

Вы работали с веб-сервисами Terrasoft?

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Добрый день, Виталий!



Отличная новость. Уверен что многим участникам Community это поможет в реализации Web интерфейса.



По поводу окон, и остальных комментариев Underscore a.k.a. _. К счастью Вы ошибаетесь. Все эти вопросы не проблемы для наших Web сервисов, хотя есть другие вопросы.

Да, Сергей, не все там еще учтено... это пробные наработки, но уже работоспособны! :)
Вот пример:
http://community.terrasoft.ua/blogs/3522

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Прошу прощения, я почему-то упустил, что это WEB-сервисы :)

"Underscore a.k.a. _" написал:Прошу прощения, я почему-то упустил, что это WEB-сервисы :)

Интересно, а что тогда? :)

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Я думаю что Underscore a.k.a. имел в виду, что в принципе можносуществует и еще два варианта

  1. Работа с БД напрямую (что в этом случае схоже с Web сервисам)
  2. Работа с COM объектами Terrasoft, но тут могут возникнуть вопросы с PHP, и те проблемы, о которых писал Underscore a.k.a.

Понятно...
я же просто думаю о клиентах с UNIX-хостингом :)
Работать на прямую с базой хорошо, но когда база и хостинг на разных серверах... Появляется много вопросов о безопасности прямых запросов и защите.

А Web-сервисы - это HTTPS ;)

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Относительно

"Карло Сергей" написал:Работа с COM объектами Terrasoft

Тогда (как и с ASP.NET) мы опять себя ограничиваем только Windows-хостингом

--
www.it-sfera.com.ua
Terrasoft Solution Partner

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

"Карло Сергей" написал:Работа с COM объектами Terrasoft

Я действительно подумал об этом. Какие же диалоги, если работаем с WEB-сервисом.

Продолжая тему OpenSource :)
Открыт доступ к SVN данного класса! Все желающие всегда смогут скачать последнюю версию:

https://it-sfera.com/svn/itsPHPts/

Если Вы используете в своих PHP решениях интеграцию с веб-сервисами Terrasoft и хотите помочь в развитие данного класса - обращайтесь в личку, открою для Вас полный доступ к данному SVN ;)

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Спасибо за пример.

Вопрос скорее к сотрудникам Terrasoft.

Скажите, а подобное подключение потребует отдельной лицензии?

Открывая конфигурацию используя веб-сервисы Террасофт, Вам необходимо указать пользователя лицензированного в Террасофт...

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Пример для последней версии класса.

--
www.it-sfera.com.ua
Terrasoft Solution Partner

"Виталий Ковалишин" написал:example.zip 2.37 кб

Что-то этот файлик уже не доступен, да и ссылка на SVN на работает...

Коллеги приветствую,

Неможем скачать example.zip.
Продолжение по ссылке: http://www.community.terrasoft.ru/forum/topic/11126#comment-50135

Спасибо

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