Всем привет, пытаюсь уже пару дней решить нерешаемое :) Есть 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}
 

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

Добрый день!

Подскажите, пожалуйста, как перевести стенд в режим разработки в файловой системе в .Net Core 7.18?

Согласно статье Академии для перехода в режим разработки в файловой системе необходимо изменить следующие ключи в web.config
<filedesignmode enabled="true"/>
...
<add key="UseStaticFileContent" value="false"/>

Но в версии web.config для .Net Core нет соответствующих ключей:

.<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\Terrasoft.WebHost.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
    </system.webServer>
  </location>
</configuration>

Нравится

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

Добрый день.
В проекте есть файл app.config, во время билда он превращается в Terrasoft.WebHost.dll.config. Именно в нем можно найти ключи UseStaticFileContent и fileDesignMode.

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

Добрый день.
В проекте есть файл app.config, во время билда он превращается в Terrasoft.WebHost.dll.config. Именно в нем можно найти ключи UseStaticFileContent и fileDesignMode.

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

Если у пользователя нет прав на редактирование карточки Счета, можно ли через программный код дать право на редактирование одного поля в данном объекте. Реализация через код кажется оптимальной , т..к. для настройки прав через стандартный доступ по колонкам в данном сценарии требуется все таки дать пользователю права на редактирование счета, и потом забрать на все остальные, кроме этого одного поля. Но это совсем не оптимальный вариант. Поэтому задумались про реализацию разработкой. Есть ли такой опыт?
 

Нравится

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

Можно. На параметр "enabled": {bindTo: "название функции"} указать функцию в которой проверить текущего пользователя Terrasoft.SysValue.CURRENT_USER.value на вхождение в указанную группу к примеру

Можно. На параметр "enabled": {bindTo: "название функции"} указать функцию в которой проверить текущего пользователя Terrasoft.SysValue.CURRENT_USER.value на вхождение в указанную группу к примеру

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

Добрый день!
Столкнулись с проблемой формирования отчетов по участникам.   
1) Кнопка «Сформировать отчет» до этого не реагировала. Сейчас при нажатии отчёт вроде бы формируется и попадает в уведомления

2) Отображается уведомление, что отчет сформирован

3) При нажатии на уведомление об Отчете – выдает ошибку "Не найдена страница для веб-адреса"

Нравится

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

Что за дополнение используется? Версия системы? Дополнение обновляли?

Алексей Следь,

версия системы 7.17.3. Приложение Advanced excel reports for Creatio

Показать все комментарии
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;connectionStrings&gt;
 
  &lt;add name="redis" connectionString="host=localhost;db=2;port=6379;timeout=20;maxReadPoolSize=10;maxWritePoolSize=500" /&gt;
  &lt;add name="defPackagesWorkingCopyPath" connectionString="%TEMP%\%APPLICATION%\%APPPOOLIDENTITY%\%WORKSPACE%\TerrasoftPackages" /&gt;
  &lt;add name="tempDirectoryPath" connectionString="%TEMP%\%APPLICATION%\%APPPOOLIDENTITY%\%WORKSPACE%\" /&gt;
  &lt;add name="sourceControlAuthPath" connectionString="%TEMP%\%APPLICATION%\%APPPOOLIDENTITY%\%WORKSPACE%\Svn" /&gt;
  &lt;add name="elasticsearchCredentials" connectionString="User=gs-es; Password=DEQpJMfKqUVTWg9wYVgi;" /&gt;
  &lt;add name="influx" connectionString="url=http://10.0.7.161:30359; user=; password=; batchIntervalMs=5000" /&gt;
  &lt;add name="messageBroker" connectionString="amqp://guest:guest@localhost/BPMonlineSolution" /&gt;
  &lt;add name="db" connectionString="Data Source=MSKDTC01-SQL01\CRM; Initial Catalog=ELZTerrasoft; User ID=Terrasoft123; Password=Root123-4;MultipleActiveResultSets=True;Pooling=true;Max Pool Size=100" /&gt;
&lt;/connectionStrings&gt;

выше мой файл настроек

у пользователя есть права владельца 

но при попытке открыть сайт выдает 
 

Security Exception

Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Source Error:
 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:
 

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling, SqlAuthenticationProviderManager sqlAuthProviderManager) +1431
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1085
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +70
   System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +964
   System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection) +109
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal&amp; connection) +1529
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal&amp; connection) +156
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal&amp; connection) +258
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +312
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +202
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +413
   System.Data.SqlClient.SqlConnection.Open() +128
   Terrasoft.Core.DB.DBExecutor.&lt;get_DBConnection&gt;b__14_0() +22
   Polly.&lt;&gt;c__DisplayClass109_0.&lt;Execute&gt;b__0(Context ctx, CancellationToken ct) +23
   Polly.&lt;&gt;c__DisplayClass103_0.&lt;NoOp&gt;b__1(Context ctx, CancellationToken ct) +18
   Polly.NoOp.NoOpEngine.Implementation(Func`3 action, Context context, CancellationToken cancellationToken) +17
   Polly.&lt;&gt;c.&lt;NoOp&gt;b__103_0(Action`2 action, Context context, CancellationToken cancellationToken) +105
   Polly.Policy.Execute(Action`2 action, Context context, CancellationToken cancellationToken) +70
   Polly.Policy.Execute(Action action) +119
   Terrasoft.Core.DB.DBExecutor.get_DBConnection() +238
   Terrasoft.Core.DB.DBExecutor.PingDB(UserConnection userConnection) +47
 
[SecurityException: System login error. Error has been recorded in system log of the server. Please contact your system administrator.]
   Terrasoft.Core.DB.DBExecutor.PingDB(UserConnection userConnection) +240
   Terrasoft.Core.SystemUserConnection.InitializeCurrentUser(String userName, TimeZoneInfo timeZone, String clientIP, String agent, Boolean needRegisterSessionStart) +28
   Terrasoft.Core.SingleInstanceSystemUserConnectionProvider.Initialize(Boolean doLogin) +127
   Terrasoft.Core.AppConnection.InitializeSystemUserConnection(ConfigurationSection schemaManagerProviderConfigurationSection) +51
   Terrasoft.Core.AppConnection.Initialize() +493
   Terrasoft.WebApp.Loader.Global.InitializeAppConnection() +152
   Terrasoft.WebApp.Loader.Global.Application_Start(Object sender, EventArgs e) +230

Нравится

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

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

 

Данная ошибка связана с тем, что возникают проблемы подключения к серверу базы данных SQL с сервера IIS.

С рекомендациями по устранению данных проблемы можно ознакомиться тут 
https://stackoverflow.com/questions/16256533/a-network-related-or-instance-specific-error-occurred-while-establishing-a-conne
и
https://thycotic.force.com/support/s/article/System-Data-SqlClient-SqlException-0x80131904

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

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

Нравится

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

Скорее всего ваш пакет унаследован от множества других пакетов (излишнее наследование) поэтому здесь вы видите названия одного и того же объекта, но замещенных в том или ином пакете соответственно

хорошо, а как найти то где он используется , не по поиску или как либо еще подобное не работает, всегда выдает один экземпляр

Dima Avdoshin,
Попробуйте включить профайлер непосредственно перед вводом искомого поля и посмотрите куда ушли запросы и собственно какие

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