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

 

Я установил приложение от DeVLabs - Настройка колонок реестра раздела в разрезе групп (Advanced list setup for Creatio) и последнее время, возможно при работе ТП над какими-то запросами у меня начали слетать настройки при переключении между группами.

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

Помогите разобраться, пожалуйста

Нравится

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

Павел, добрый день!

Вы могли бы предоставить более детальные кейсы или скриншоты, по которым мы могли бы провести тестирование?

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



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

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

Добрый день! Потребовалось встроить Creatio через iframe в кастомное приложение Microsoft Teams, с помощью React, однако Creatio блокирует встраивание через iframe. Возможно ли отключить заголовок X-Frame-Options, если стенд Creatio развернут в облаке?

Нравится

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

Никита, добрый день!

Заголовок X-Frame-Options находится во внешнем web.config приложение. Если сайт находится в облаке, то вы не сможете отключить его (согласно мерам безопасности).



Также хочу заметить, что отключать заголовок X-Frame-Options можно на стороне клиента, то есть за это отвечает браузер, не приложение. Могут быть полезными, например, расширения для браузера. Для Хрома есть вот такие расширения - https://chrome.google.com/webstore/detail/ignore-x-frame-headers/gleekbfjekiniecknbkamfmkohkpodhe/related



Данные аутентификации Вы можете передать с помощью сервиса AuthService.svc. Документация по его использованию предоставлена на Академии: https://academy.terrasoft.ua/docs/developer/integrations_and_api/request_authentication/autentifikaciya_zaprosov#reference-2298

Документация по использованию интеграции с iframe https://academy.terrasoft.ua/docs/developer/interface_elements/page/html_element_iframe#case-3252

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

Подскажите, пожалуйста, можно ли как-то исправить формулу для поля "Стартовать через" в Активности по БП:

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

Формула, которая отрабатывала в версии 7.15 - (DateTime.Now.Date.AddDays(1).AddHours(6) - DateTime.Now).TotalMinutes

Цель - назначить начало Активности на 6.00 следующего дня после создания.

Обновлялись с версии 7.15 сразу до 7.18. Во всех БП появилась ошибка по  Активности с этой формулой - Допущена ошибка в формуле: Невозможно преобразовать тип "Double" в "Int32"

Очень важно, чтобы эта задача попадала именно на 06.00 следующего дня.

Нравится

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

Романова Юлия Александровна, добрый день!

Дело в том, что начиная с версии 7.17.4 преобразования, которые ведут к потере точности, например: "Допущена ошибка в формуле: Невозможно преобразовать тип "Double" в "Int32"" - необходимо выполнять явно. Для решения возникшей ошибки необходимо перед параметром числа двойной точности проставлять признак (Int32). Например: 

​​​​​​​(int)(DateTime.Now.Date.AddDays(1).AddHours(6) - DateTime.Now).TotalMinutes)

Романова Юлия Александровна, добрый день!

Дело в том, что начиная с версии 7.17.4 преобразования, которые ведут к потере точности, например: "Допущена ошибка в формуле: Невозможно преобразовать тип "Double" в "Int32"" - необходимо выполнять явно. Для решения возникшей ошибки необходимо перед параметром числа двойной точности проставлять признак (Int32). Например: 

​​​​​​​(int)(DateTime.Now.Date.AddDays(1).AddHours(6) - DateTime.Now).TotalMinutes)
Показать все комментарии

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



Возникла проблема с установкой пакета с одного приложения на другое. Сама установка проходит без ошибок, однако после установки не появляются новые данные (в частности процесс объекта CGREventLists). Выгружать и обновлять данные пробовал, изменять процесс и устанавливать пакет снова тоже.

Ниже прикрепил лог установки.



Заранее спасибо за помощь.

Прикрепленные файлы

Нравится

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

Я правильно понимаю, не появился встроенный процесс на объекте CGREventLists? Судя по логу, установка и генерация исходного кода схемы прошла успешно, сам пакет в целом установился без ошибок.

 

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

Олег Нефедьев,

спасибо, помогло.

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

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

 

Проблема с ExchangeListener, никак не удаётся победить.

Exchange локальный, все виды авторизации включены.

Сервис ExchangeListener развернут, проверки проходят успешно.

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

При попытке добавить ящик, в интерфейсе вываливается ошибка

"Указан неправильный email или пароль"

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

Пробовал различным образом вводить логин. И полный email, и  domain\username.

В настройке провайдера в блоке Формат логина пробовал и использовать email, и формировать вручную.

Не помогает.

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

Попытки авторизоваться в exchangeOWA и exchange/ews/exchange.asmx - проходят успешно по базовой авторизации.

В логах на вебе Creatio вижу ошибку, которую отдаёт Exchange. Такое ощущение, что ему прилетает что-то очень неожиданное.

2021-11-01 12:32:04,970 [87] WARN NT AUTHORITY\NETWORK SERVICE IsServerValid - Mailbox maxim.sedov@***.ru didn't pass validation with these credentials, info: Microsoft.Exchange.WebServices.Data.ServiceRequestException: The request failed. Resource temporarily unavailable Resource temporarily unavailable

 ---> System.Net.WebException: Resource temporarily unavailable Resource temporarily unavailable

 ---> System.Net.Http.HttpRequestException: Resource temporarily unavailable

 ---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable

   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)

   --- End of inner exception stack trace ---

   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)

   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)

   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)

   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)

   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)

   at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken)

   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)

   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)

   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)

   at System.Net.HttpWebRequest.SendRequest()

   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

   --- End of inner exception stack trace ---

   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)

   at System.Net.WebRequest.<>c.b__68_2(IAsyncResult iar)

   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)

--- End of stack trace from previous location where exception was thrown ---

   at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse()

   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)

   --- End of inner exception stack trace ---

   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)

   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest()

   at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecuteAsync()

   at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.ExecuteAsync()

   at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder(FolderId folderId, PropertySet propertySet)

   at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToFolder[TFolder](FolderId folderId, PropertySet propertySet)

   at ExchangeListener.EwsApi.ExchangeListenerService.b__5_0() in /src/ExchangeListener/EwsApi/ExchangeListenerService.cs:line 80

   at ListenerBase.Utils.Tracking.TimeElapsedProfiler.MeasureTime(Func`1 action) in /src/ListenerBase/Utils/Tracking/TimeElapsedProfiler.cs:line 23

   at ExchangeListener.EwsApi.ExchangeListenerService.ValidateSynchronizationCredentials() in /src/ExchangeListener/EwsApi/ExchangeListenerService.cs:line 78

   at ListenerBase.Service.Service.Validate() in /src/ListenerBase/Service/Service.cs:line 224

 

Куда рыть?

Идеи уже кончились.

 

Спасибо!

Нравится

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

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



1. Используется ли двухфакторная авторизация для входа в почтовый аккаунт? 

2. Не блокирует ли почтовый сервер адрес Creatio? 

3. Нет ли нюансов по работе с ресурсами в плане SSL? Возможно сервер не может доверять Вашему экземпляру приложения по этой причине.

4. Проверьте доступность к почтовому сервису из микросервиса Exchange listener. Есть несколько вариантов:

 

   - http://cweiske.de/tagebuch/curl-mail.htm (только добавьте аутентификацию)



-v --user "логин:пароль" --login-options AUTH=PLAIN

 

Полный пример:

curl smtps://адрес сервера smtp -v --user "логин ящика:пароль" --login-options AUTH=PLAIN 



    - либо второй вариант:

 

curl адрес почтового сервера.

Максим, добрый день!



Подскажите, пожалуйста, какую версию Creatio Вы используете?

Lev Kuptsov, добрый день! 7.18.4.1532

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



1. Используется ли двухфакторная авторизация для входа в почтовый аккаунт? 

2. Не блокирует ли почтовый сервер адрес Creatio? 

3. Нет ли нюансов по работе с ресурсами в плане SSL? Возможно сервер не может доверять Вашему экземпляру приложения по этой причине.

4. Проверьте доступность к почтовому сервису из микросервиса Exchange listener. Есть несколько вариантов:

 

   - http://cweiske.de/tagebuch/curl-mail.htm (только добавьте аутентификацию)



-v --user "логин:пароль" --login-options AUTH=PLAIN

 

Полный пример:

curl smtps://адрес сервера smtp -v --user "логин ящика:пароль" --login-options AUTH=PLAIN 



    - либо второй вариант:

 

curl адрес почтового сервера.

Максим Седов,

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

Бакалов Павел Вячеславович,

Да, привет! Победили. сервис был развёрнут в кубе. В кубе был неправильно настроен DNS. Сервис ходил не на Exchange, а куда-то еще. Как раз продиагностировали по вышеуказанному мануалу.

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

Всем привет, пытаюсь уже пару дней решить нерешаемое :) Есть api, на который ходит POST request c авторизацией сертификатом:

 

var userConnection = Get<UserConnection>("UserConnection");
 
// переменная для сохранения тестового результат
string httpResponseData = ""; 
 
//тащим из системной настройки с типом "бинарные данные" содержимое сертификата
byte[] _certByte = (byte[])Terrasoft.Core.Configuration.SysSettings.GetValue(userConnection, "UsrIpsmsCertificate"); 
 
//из него реконструируем сертификат
X509Certificate2 _certificate = new X509Certificate2(_certByte);
 
// создаем тело POST запроса
IpSMS _ipSMS = new IpSMS();
_ipSMS.action = "ping";
_ipSMS.baID = "populo";
string output = JsonConvert.SerializeObject(_ipSMS);
 
//инициализируем uri
string uri = "https://www.xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
//определяем протоколы ServicePointManager, не контролируем валидность сертификата
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
	| SecurityProtocolType.Tls11
	| SecurityProtocolType.Tls12
	| SecurityProtocolType.Ssl3;
	ServicePointManager.Expect100Continue = true;
	ServicePointManager.ServerCertificateValidationCallback +=
		(sender, cert, chain, error) => true;
 
//выполняем request
var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Method = "POST";
httpWebRequest.ContentType = "text/json";
httpWebRequest.ClientCertificates.Add(_certificate);
try {
	using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) {
		streamWriter.Write(output);
	}
	var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
	using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
		httpResponseData += streamReader.ReadToEnd().ToString();
	}
} catch (Exception ex) {
	httpResponseData += ex.InnerException == null ? ex.Message : ex.InnerException.Message;
}
 
//как-то выводим httpResponseData 

Результат:

The request was aborted: Could not create SSL/TLS secure channel.

 

на сервере-приемнике:

] AH02261: Re-negotiation handshake failed

 

вот честно скажу, с сертификатами опыта мало, но чисто визуально все ок. И в чем тогда косяк?! 

 

Нравится

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

Дмитрий, добрый день!

Очень похоже на то, что вы используете Apache и его нужно обновить. Рекомендую ознакомится с этим обсуждением.

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

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

как эти же команды реализовать з помощью WorkspaceConsole

Нравится

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

Добрый день, Стас.



Аналога этих команд в WorkspaceConsole нет. Вы можете познакомиться с такой утилитой как clio, в ней реализованы все эти возможности.

https://github.com/Advance-Technologies-Foundation/clio

Добрый день, Стас.



Аналога этих команд в WorkspaceConsole нет. Вы можете познакомиться с такой утилитой как clio, в ней реализованы все эти возможности.

https://github.com/Advance-Technologies-Foundation/clio

Mykhailo Storozhuk,

спасибо

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

Как отследить к примеру , если значение колонки было изменено через к примеру this.set или человек поставил фокус на нее и отредактировал

не могу найти механизма и идей как такое можно отследить нет, по крайней мере адекватных нет

Нравится

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

Не знаю отследит ли this.set, но редактирование поля можно отследить

init: function() {
	this.on("change:Account", function(){	//Account поле которое нужно отследить	
			// код отрабатывающий при изменении поля
	}, this);
}

Надеюсь я правильно понял вопрос.

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

Мне необходимо манипулировать блокированием колонок около 30, но делать кучу бизнес правил или каждому присваивать аттрибут доступности или видимости мне не хочется. могу я сразу получить коллекцию и менять аттрибуты видимости и доступности?

Стандартная настройка прав не подходит для реализации кейса

Нравится

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

Вы можете использовать существующий механизм:

https://academy.terrasoft.ru/docs/node/2846

Вы можете использовать существующий механизм:

https://academy.terrasoft.ru/docs/node/2846

А для видимости придется создавать атрибут, можно один для всех, если условие актуально для них.

Коллекцию колонок можете при этом получить так:

this.entitySchema.columns

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

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

Пользователь при открытии записи заходит в справочник и видит значения - названия контрагентов/компаний. Они в системе есть в карточках контрагентов на русском языке - поле Название(Name) и поле Название ENG (Name eng)

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

В справочнике (скрин) реестр настроен так, что можно видеть поле Название либо Название ENG либо оба

Но вопрос в том, возможно ли осуществить настройку реестра справочника так, чтобы открывая его на рус культуре я видел поле Название, а на английской Название ENG? То есть привязать настройку реестра к культуре?

Нравится

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

если речь о реестре, то нужно переопределить метод openlookup и для конкретного справочника задать конфиг как тут

var config = {

              entitySchemaName: "UsrTest",

              multiSelect: false,

              columns: ["Name","Description"],

              hideActions: false}

 

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