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

Нравится

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

Добрый день, Евгений.

Снизу прикрепил пример, где я добавил конкретный участок кода в исключение при компиляции. В результате warning CS4014 не появился. Можно реализовать не только препроцессором.

Более детально можно найти в официальной документации:

https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/supp…

using System;
using System.Threading.Tasks;
 
public static class Test{
 
	static void CallingMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("  Entering calling method.");
 
		// Call #1.
		// Call an async method. Because you don't await it, its completion
		// isn't coordinated with the current method, CallingMethodAsync.
		// The following line causes warning CS4014.
		#pragma warning disable CS4014
		CalledMethodAsync(millisecondsDelay);
		#pragma warning restore CS4014
	}
 
	static async Task CalledMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("    Entering called method, starting and awaiting Task.Delay.");
 
		await Task.Delay(millisecondsDelay);
 
		Console.WriteLine("    Task.Delay is finished--returning from called method.");
	}
}

 

Добрый день, Евгений.

Снизу прикрепил пример, где я добавил конкретный участок кода в исключение при компиляции. В результате warning CS4014 не появился. Можно реализовать не только препроцессором.

Более детально можно найти в официальной документации:

https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/supp…

using System;
using System.Threading.Tasks;
 
public static class Test{
 
	static void CallingMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("  Entering calling method.");
 
		// Call #1.
		// Call an async method. Because you don't await it, its completion
		// isn't coordinated with the current method, CallingMethodAsync.
		// The following line causes warning CS4014.
		#pragma warning disable CS4014
		CalledMethodAsync(millisecondsDelay);
		#pragma warning restore CS4014
	}
 
	static async Task CalledMethodAsync(int millisecondsDelay)
	{
		Console.WriteLine("    Entering called method, starting and awaiting Task.Delay.");
 
		await Task.Delay(millisecondsDelay);
 
		Console.WriteLine("    Task.Delay is finished--returning from called method.");
	}
}

 

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

Добрый день.

Установил с маркетплейс  приложение  Copy detail records for Creatio https://marketplace.terrasoft.ru/app/copy-detail-records-creatio для возможности копирования содержимого деталей вместе с основной записью, сделал настройки в справочнике Copy Related Object, но детали так и не копируются. Я полагаю что сайт на базе данных PostgreSQL и из-за этого приложение не работает. Может кто-то сталкивался с подобной проблемой? Что нужно сделать чтоб приложение заработало?

Нравится

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

Александр, добрый день!

Вы правы, данное дополнение не поддерживается на PostgreSQL.

На текущий момент адаптировать его для работы с PostgreSQL не планируется.

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

Добрый день.

Для портальных пользователей, при выполнении запроса 

../0/DataService/ssp/json/SyncReply/QuerySysSettings

возвращается код 403, при этом, например, запросы 

../0/DataService/ssp/json/SyncReply/SelectQuery

../0/DataService/ssp/json/SyncReply/BatchQuery

проходят без проблем для этих же пользователей.

Где нужно включить разрешение для выполнения запроса к QuerySysSettings?

Нравится

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

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

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

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

Нравится

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

Добрый день.

1. получить сертификат. Например, на https://letsencrypt.org/ru/

2. Сформировать сертификат с расширением pfx

 

openssl pkcs12 -export -nokeys -in certificate.cer -out certificate.pfx



3. Установить Messaging Service.

4. Разместить pfx его в папке Messaging Service.

5. Прописать параметры pfx в конфиге Messaging Service

<server name="ClientWebSocketService"
serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"
 idleSessionTimeOut="10000" maxCommandLength="4096" security="tls12" > //Заменить tls на tls1.2 
 
   <certificate filePath="certificate.pfx" password="111"></certificate>
</server>

 

Добрый день!

 

Дополню ответ Игоря.

 

Так же кроме всех этих действий необходимо дополнительно в конфигурационном файле в секции <servers> удалить или “закомментировать” следующий конфигурационный блок:

<server name="ClientWebSocketService"

serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"

idleSessionTimeOut="10000" maxCommandLength="4096"

maxConnectionNumber="10000">

</server>

 

А так же после внесения изменений в конфигурационный файл необходимо в системной настройке “Сервер обмена сообщениями“ (код “SysMsgServerNode“) изменить адрес подключения к серверу телефонии с ws:// на wss://.

 

Также подробная инструкция по настройке защищенного соединения wss размещена на Академии: https://academy.terrasoft.ru/docs/user/drugie_reshenija/konnektory_tele…

и не забыть положить файл сертификата в корневой каталог TMS - C:\Program Files (x86)\BPMonline Messaging Service

Коновалов Игорь, К сожалению, по вашему мануалу не получилось.  На http всё работает. 

Сертификат сгенерированный таким образом (без ключа) TMS не принимает:

----

2022-06-16 15:37:57,624 [4] ERROR ClientWebSocketService - Failed to parse 'Tls1.2' to SslProtocol!

2022-06-16 15:37:57,624 [4] ERROR DefaultBootstrap - Failed to setup server instance!

----

Свой pfx сертификат, которым подписан сайт в err.log выдаёт:

----

2022-06-16 15:23:55,676 [15] ERROR ClientWebSocketService - Session: ef6bdf3c-7488-45ea-93ae-05cd0d4a59bb/192.168.2.75:49881

Unexpected error

System.IO.IOException: Сбой операции дешифрования, см. внутреннее исключение. ---> System.ComponentModel.Win32Exception: При обработке сертификата произошла неизвестная ошибка

   --- Конец трассировки внутреннего стека исключений ---

   в System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)

   в SuperSocket.SocketEngine.AsyncStreamSocketSession.OnStreamEndRead(IAsyncResult result)

----

 

В конфиг файле закомментировал строку без SSL, раскомментировал с ssl как в инструкции:

 

----

<servers>

      <!--

      <server name="ClientWebSocketService" serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"

      idleSessionTimeOut="10000" maxRequestLength="4096" maxCommandLength="4096" maxConnectionNumber="10000" SendTimeOut="30000">

      </server>-->

       <!--Support for WebSocket secure connection. Replace previous and set correct certificate name and password. -->

           <server name="ClientWebSocketService" serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"

        idleSessionTimeOut="10000" maxRequestLength="4096" maxCommandLength="4096" security="Tls12">

            <certificate filePath="cert-domain.pfx" password=""></certificate>

        </server>

----

Явно проблемы в связке сертификата и его скармливанием ТМСу, но что делать не пойму. Если исправить Tls12 на Tls1.2 получаю такую ошибку в err.log:

----

2022-06-16 15:30:08,380 [6] ERROR ClientWebSocketService - Session: 4ba204cb-1f12-4925-933f-547e63fe4ea8/192.168.2.75:49894

Unexpected error

System.IO.IOException: Сбой операции дешифрования, см. внутреннее исключение. ---> System.ComponentModel.Win32Exception: При обработке сертификата произошла неизвестная ошибка

   --- Конец трассировки внутреннего стека исключений ---

   в System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)

   в SuperSocket.SocketEngine.AsyncStreamSocketSession.OnStreamEndRead(IAsyncResult result)

2022-06-16 15:30:16,231 [4] ERROR ClientWebSocketService - Failed to parse 'Tls1.2' to SslProtocol!

2022-06-16 15:30:16,231 [4] ERROR DefaultBootstrap - Failed to setup server instance!

 

 

 

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

Коллеги, нужна помощь, необходимо отобразить записи из журнала изменений (изменяемые значения полей) в детали в карточке "Конфигурации", при этом необходимо обойтись без предложенного решения (приложения) от Самарасофт.

На данный момент был создан объект в БД на основе объекта ChangeLogEntity (скриншот прикладываю).

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

 

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

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

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

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

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

Нравится

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

Вам надо создавать не новый объект, а замещающий объект, чтобы он наследовал весь функционал

Владимир Соколов,

Создал замещающий объект, в нём добавил колонки из конфигураций, затем в дизайнере страницы по существующему созданному объекту, который замещает ChangeLogEntity, создаю деталь. по итогу результат следующий (колонки перенастраивал - не помогает, всё равно не отображается):

При этом у всех колонок в детали и в объекте Конфигураций включено логирование.

 

 

 

Алекс Донкор,

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

 

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

 

Вижу следующие варианты решения:

1. Создать в базе данных VIEW (представление), а на его основе уже свой объект и деталь.



2. Создать trial, установить на него расширение с Marketplace, и ознакомиться с механикой его работы.

 

Уточнение по п.1:

 

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



В нём необходимо продублировать те колонки журнала изменений, которые необходимы вам в детали, плюс id. Также укажите в этом объекте признак "Представление в базе данных".



Далее в конфигурации необходимо добавить sql-сценарий создание view VwChangeLog, который будет брать значения из таблицы ChangeLog. Важно чтобы названия колонок в нём совпадали с кодами соответствующих колонок в объекте VwChangeLog.

 

При обращении к объекту VwChangeLog система будет использовать этот sql-сценарий и, в итоге, получать значение таблицы ChangeLog через него.

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

Добрый день коллеги, хотелось бы узнать возможно ли вывести раздел "Активности" на портал как раздел или хотя бы Деталь Активности в Обращении. В права на объект Активность добавил All portal users, в справочнике "Список объектов, доступных пользователям портала" объект есть.

Нравится

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

Добрый день, Евгений!



Большинство базовых разделов нельзя вынести на портал. Раздел "Активности" и другие процессы связанные с объектами данного раздела недоступны пользователям с портальными лицензиями. Для работы с данным разделом необходимо иметь полноценную лицензию нашего продукта.

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

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

Спасибо за ответ.

А детали (объекты, на базе которых не зарегистрированы разделы) не считаются в ограничениях?

Владимир Соколов, добрый день!



В зависимости от конфигурации портала возможности управления разделами различаются.

На клиентском портале можно добавить до 3 пользовательских разделов. На страницу раздела можно добавить объекты системы, например, детали, поля и т. д. Количество объектов зависит от конфигурации портала и регулируется условиями лицензии. Например, на портале самообслуживания можно добавить на страницу не больше 25 объектов, на пользовательском порталене больше 125.



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



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



С уважением,

Станислав

 

 

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

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

Нравится

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

Добрый день, у нас есть чистая версия service 7.18.4 на Centos, которая работает через docker. При первой компиляции уже есть желтые предупреждения, весь лог предупреждений будет ниже. В поддержке ответили что это не влияет на систему, но мы выяснили что все таки влияет. Далее опишу БП в котором это не работает, у нас есть кубик с вопросом пользователю, если добавить только его в систему то все работает и сохраняется. Окей, дальше мы добавляем сценарий у которого есть только return true; и дальше такой процесс не публикуется и выходят те же предупреждения что и при первой компиляции.

Для всех предупреждения

Имя файла: Microsoft.Common.CurrentVersion.targets

Код MSB3277

Строка 2084

Вот описание предупреждений:

Found conflicts between different versions of "System.Resources.ResourceManager" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Collections" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Diagnostics.Debug" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Runtime.Serialization.Xml" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Runtime.Serialization.Primitives" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Linq" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Runtime.Serialization.Json" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Collections.Concurrent" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Threading.Tasks" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Data.Common" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Collections.NonGeneric" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Threading.ThreadPool" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Runtime.InteropServices" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.IO.Compression" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Runtime.Extensions" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Threading" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Text.RegularExpressions" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "netstandard" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Runtime" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.Xml.ReaderWriter" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.IO.FileSystem" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Found conflicts between different versions of "System.ComponentModel" that could not be resolved. These reference conflicts are listed in the build log when log verbosity is set to detailed.

Помню в сборке 7.17.4 мы отключали предупреждения, чтобы оно нормально компилировалось. После этого процессы публиковались. Вы можете попробовать сохранить процесс без публикации, а потом нажать Компилировать в конфигурации. Может, это поможет. Если нет - то добавление ошибки 2084 в исключения компиляции сборки должно помочь.

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

 

Добрый день, в отчёте ошибок компиляции присутствует скролл, скажите нет ли там ошибок, а не предупреждений?

Дима Вовченко,

проверил ещё раз, только предупреждения с кодом 

MSB3277

Евгений Шевченко,

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

Дима Вовченко,

да обращались,уже месяц общаемся пока толку нет

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

Добрый день!

Не отображается  Angular компонент после установки пакета в приложении. 

Компонент был встроен на страницу CallPage и должен отображаться на определенной вкладке. При переходе на вкладку с компонентом, приложение не может найти js файл в файловом контенте, в консоли выводятся соответствующие ошибки: Изображение удалено.

После установки пакета были выполнены полные генерация и компиляция, при этом всё равно приложению не удаётся найти файл компонента.

 

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

После создания папки Files с требуемой структурой, файлами bootstrap в пакете, не получается выполнить команду BuildConfiguration в WorkspaceConsole,  завершается с ошибкой "Object reference not set to an instance of an object.". 

Логи выполнения операции:

[10:26:27] 
=== 04:26:27.4595 (UTC) === 
[10:26:27] Start info: 
[10:26:27] x64 
[10:26:27] 	Help: help 
[10:26:27] 	Operation: BuildConfiguration 
[10:26:27] 	WorkspaceName: Default 
[10:26:27] 	DestinationPath: D:\CreatioInstance\CA_DS_7.18.3.1241\Terrasoft.WebApp 
[10:26:27] 	WebApplicationPath: D:\CreatioInstance\CA_DS_7.18.3.1241 
[10:26:27] 	Force: true 
[10:26:27] 	LogPath: D:\tmp\log 
[10:26:27] 	Assembly version: 7.18.3.1241 
[10:26:27] 	Configuration version: 7.18.3 
[10:26:27] 
 
[10:26:27] Configuration build started 
[10:26:27] Error: Object reference not set to an instance of an object.
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.<>c__DisplayClass401_0.<ExecuteBuildOperation>b__0()
   at Terrasoft.Tools.WorkspaceConsole.WorkspaceConsoleApplication.ExecuteWithLogging(Action action)
 
[10:26:27] Utility finished working. 
[10:26:27] 
=== 04:26:27.6535 (UTC) === 

 

Вместо BuildConfiguration мы выполняли операцию Rebuild Workspace.  По описанию данная команда включает в себя генерацию файлового контента. Она завершается успешно, генерируются файлы _FileContentBootstraps.js и _FileContentDescriptors.js.

 

В файле _FileContentBootstraps.js не появляется наш пакет, дописываем вручную. При этом, если сохранить любую схему, запись о дескрипторе нашего пакета удаляется и приходится заново дописывать. В файле _FileContentDescriptors.js подобного не происходит, десктриптор и файловый контент нашего пакета добавляется в этот файл.

 

При встраивании компонента использовались статьи: Файловый контент пакетов | Creatio Academy (terrasoft.ru) и Создать Angular-компонент для использования в Creatio

Нравится

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

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

Убедитесь, что в директории \Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Созданный_пакет\Files

присутствует файл descriptor.json.

Вероятнее всего для файла descriptor указано не верное расширение - js. 

Файл должен называться descriptor.json, поэтому при установке пользовательский пакет и не попадает в  _FileContentBootstraps.js.

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

Убедитесь, что в директории \Terrasoft.WebApp\Terrasoft.Configuration\Pkg\Созданный_пакет\Files

присутствует файл descriptor.json.

Вероятнее всего для файла descriptor указано не верное расширение - js. 

Файл должен называться descriptor.json, поэтому при установке пользовательский пакет и не попадает в  _FileContentBootstraps.js.

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

Всем доброго дня! 

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

Нравится

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

Попробуйте может через CompositeObject получить коллекцию

Get<ICompositeObjectList<ICompositeObject>>("Ваш_параметр.ResultCompositeObjectList")

Литвинко Павел пишет:

Попробуйте может через CompositeObject получить коллекцию

Get<ICompositeObjectList<ICompositeObject>>("Ваш_параметр.ResultCompositeObjectList")

Здравствуйте,  получилось немного не так:

 

var list = Get<ICompositeObjectList<ICompositeObject>>("Units");

foreach (ICompositeObject item in list) {

    

    if (item.TryGetValue<string>("Name", out string value)) {

        Set<string>("ProcessSchemaParameter1", value);

   }

}

Спасибо за помощь!)

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

У продукта есть деталь "Характеристики", где может быть некий набор значений. 

Задача: Найти все продукты с точно таким же набором характеристик через бизнес-процесс. 

Нравится

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

Евгений, попробуйте реализовать задачу с помощью обработки коллекций (элемент БП "Читать данные") и зацикливания процесса (так как количество обрабатываемых продуктов может быть велико, - чтение более 5000 записей может повлиять на производительность системы.).

 

https://academy.terrasoft.ru/docs/user/biznes_processy/spravka_po_eleme…

 

https://academy.terrasoft.ru/docs/user/biznes_processy/ispolzovanie_ele…

 

Но скорее всего более простым и гибким вариантом будет реализация через элемент процесса "Задание-сценарий":

 

https://academy.terrasoft.ru/docs/user/biznes_processy/spravka_po_eleme…

Что сделать с продуктами в итогу, просто найти и вывести ? Или посчитать количество?

Евгений, попробуйте реализовать задачу с помощью обработки коллекций (элемент БП "Читать данные") и зацикливания процесса (так как количество обрабатываемых продуктов может быть велико, - чтение более 5000 записей может повлиять на производительность системы.).

 

https://academy.terrasoft.ru/docs/user/biznes_processy/spravka_po_eleme…

 

https://academy.terrasoft.ru/docs/user/biznes_processy/ispolzovanie_ele…

 

Но скорее всего более простым и гибким вариантом будет реализация через элемент процесса "Задание-сценарий":

 

https://academy.terrasoft.ru/docs/user/biznes_processy/spravka_po_eleme…

"В любой непонятной ситуации используйте VIEW" или хранимую процедуру, которая соберёт любые данные в SQL

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