Доброго времени суток!

Есть Бп в кором я выбираю коллекцию записей из Продукт в счете, для того чтоб потом их передать в 1с в формате json. Мне нужно выбрать поле "Code" из Продуктов чтоб потом записать  его отдельно. Выбрать я его смогла, проблема в том что я не понимаю в каком формате его нужно передать (коллекция записей?).  Буду благодарна за помощь.

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

Нравится

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

Добрый день, Анастасия.



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



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



Подготовил несколько полезных ссылок с академии, в которых происходит работа с коллекциями внутри скрипттаски. Вы можете получать две такие коллекции, а потом с помощью C# создать свою коллекцию кастомных объектов(предварительно создав этот объект в конфигурации), где и объединять их. После записать данную коллекцию кастомных объектов в параметр процесса и с него брать значения для сервиса. Таким образом у Вас будет только один источник данных.

Либо же прямо в скрипттаске использовать запросы к БД, например, через EntitySchemaQuery и внутри вызывать веб-сервис с параметрами.



https://community.terrasoft.ru/questions/rabota-s-kollekciyami-v-bp

https://academy.terrasoft.ru/docs/7-16/developer/back-end_development/operatsii_s_dannymi_back_end/dostup_k_dannym_cherez_orm#reference-2158

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

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

Нравится

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

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

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

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

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

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

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

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

Нравится

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);

   }

}

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

Показать все комментарии
Добрый день, подскажите как можно сменить порт 5000 при запуске creatio командой: 
COMPlus_ThreadPool_ForceMinWorkerThreads=100 dotnet Terrasoft.WebHost.dll

Нравится

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

Добрый день

В файле appSettings.json, в корневой папке

Добрый день

В файле appSettings.json, в корневой папке

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

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

Нравится

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

Добрый день, Андрей!

Не совсем понял ваш вопрос, но начиная с версии 7.17.4 можно вызвать веб-сервис с помощью следующего кода:

 

using Terrasoft.Configuration.ServiceSchema;
 
//...
 
try {
    // Создаем экземпляр ServiceSchemaClient
    var client = ClassFactory.Get&lt;IServiceSchemaClient&gt;();
    // Настраиваем параметры вызова
    var parameters = new Dictionary&lt;string, object&gt;() {
        {"id", 1}, {"name", userName}
    };
    // Получаем результат выполнения
    var serviceResponse = client.Execute(UserConnection, serviceName, methodName, parameters);
} catch (Exception e) {
    // Обрабатываем ошибки
}

Также вам может помочь обсуждение тут.

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

Всем доброго времени суток!

Столкнулся с проблемой, при сохранении Entity на событийном слое не срабатывает асинхронные операции.

Сохранение происходит в классе обработчике который подписан на очередь Rabbit

Выдает следующую ошибку:

EntityEventAsyncExecutor SendMessage - OnSavedMyEntityAsyncOperations

System.InvalidOperationException: Не удалось получить контекст выполнения фоновой операции. Для сервисов без авторизации необходимо вызвать Terrasoft.Web.Common.SessionHelper.SpecifyWebOperationIdentity.

   в Terrasoft.Core.ServiceBus.BusUtils.CreateUserContext(String userName, String sessionId, Guid externalAccessId)

   в Terrasoft.WebApp.ActorSystem.UserContextProvider.GetUserContext()

   в Terrasoft.ActorSystem.ActorReference.Tell(AppContextMessage message)

   в Terrasoft.Core.ActorSystem.Entities.EntityEventAsyncExecutor.SendMessage(Object parameters, Type operationType)

Как бороться с такой проблемой, может кто знает?

Спасибо!

Нравится

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

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

 

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

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

Всем привет!

 

Только знакомлюсь с платформой. Получил задачу в рамках которой необходимо написать Excel-файл, переданный в мой веб-сервис. До этого использовал для таких вещей OLEDB. Написал код, скомпилировал и через Postman решил его проверить. Получил только ошибку:

 

The server encountered an error processing the request. The exception message is 'The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.'. See server logs for more details.

 

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

Нравится

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

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

Судя по ошибке можно сделать вывод, что система не поддерживает использование OLEDB. Рекомендую использовать для ваших целей OpenXML.

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

Всем доброго времени суток!

Нужна консультация.

У нас возникла необходимость обрабатывать большие коллекции Entity(изменять значение поля и обновлять) при этом что бы был задействован событийный слой.

Решили данным способом:

var bc = new BlockingCollection<Entity>();
// Наполнение коллекции
.....
Parallel.ForEach(bc, new ParallelOptions {
   MaxDegreeOfParallelism = Environment.ProcessorCount
}, entity => entity.UpdateInDB(false));

Вопрос в следующем будем ли мы ловить локи при использовании UserConnection entity, не создавая нового?

Подобные случаи с локами были на версии 7.8.


 

Нравится

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

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

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

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

Мне нужен фильтр в C# коде

Что-то вроде:

var activity = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Activity"); //Активность
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Equal, "Type",  "id типа")); // тип активности - email
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Recepient",  "my_email@gmail.com")); // кому-мне
 
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_dad_email@gmail.com")); // от отца
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_mum_email@gmail.com")); // от матери
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_sister_email@gmail.com")); // от сестры
activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  "my_brother_email@gmail.com")); // от брата



нужен такой фильтр:

тип активности-email && кому-мне && (от отца || от матери || от сестры || от брата)



Как добавить логические операторы чтобы получить такой фильтр?

Или может быть надо по другому?

Нравится

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

 Что то типо такого?

activity.Filters.Add(activity.CreateFilterWithParameters(FilterComparisonType.Contain , "Sender",  new string[] { "my_dad_email@gmail.com", "my_mum_email@gmail.com", "my_sister_email@gmail.com", "my_brother_email@gmail.com"}));

Колногоров Роман Андреевич,

выдает ошибку 

Условие типа "Contain" не может содержать более одного выражения в правой части

обойтись без Contain не получиться

Попробуйте через createColumnInFilterWithParameters

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

Как вызывать из JS я знаю, но тут понадобилось вызвать из C#

Нравится

4 комментария
var property = "PropertyValue";				
ProcessSchema schema = SystemUserConnection.ProcessSchemaManager.GetInstanceByName("ProcessName");
				bool canUseFlowEngine = ProcessSchemaManager.GetCanUseFlowEngine(UserConnection, schema);
				if(canUseFlowEngine) {
					var flowEngine = new FlowEngine(UserConnection);
					var param = new Dictionary&lt;string, string&gt;();
					param["Property"] = property;
					flowEngine.RunProcess(schema, param);
				} else {
					Process process = schema.CreateProcess(UserConnection);
					process.SetPropertyValue("Property", property);
					process.Execute(UserConnection);
				}

В принципе проверку на canUseFlowEngine можно смело убрать, сейчас все процессы запускаются через FlowEngine.

Трефилов Павел Сергеевич,

Добрый день!

Подскажите почему возникает ошибка.

Pavel Litvinovich,

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

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

Спасибо! Уже разобрался.

 

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