Вопрос

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

Есть нужда переименовать деталь, изменения ведутся в пользовательском пакете, текущий пакет стоит пользовательский, при попытке переименовать название через мастер раздела, изменения не сохраняются. При текущем пакете Custom, изменения сохранились (те же манипуляции). В чём может проблема? Неправильное наследование пакета? 

Заранее благодарю. 

У меня такой же вопрос

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

Какая версия. если  7,14 , то нужно обратится в техподержку за получением патча (обходного решения)

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

Скорее всего в ней будет написан текст ошибки.

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

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

Григорий Чех,

Уточни, пожалуйста, в версии 7.14 есть какая-то ошибка, связанная с этой функциональностью?

Григорий Чех,

Версия 7.12

А ещё в первую очередь попробовать перезапустить сайт и очистить Redis.

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

Я сейчас в пробной версии работаю, узнаю все. 

Нужно согласовать документ, но доступны разделы "Договор" и "контракт", да и "закупки".

Хотелось бы брать документ для согласования из раздела "Документы".

Как это сделать? Если можно, максимально простыми словами, т.к. в кодах пока еще не разбираюсь.

Спасибо!

У меня такой же вопрос

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

Добрый день!
В bpm'online studio нет раздела "Документы". Вам нужно:
- использоваться bpm'online sales,
- либо ставить дополнение Docs из маркетплейс
- либо самому добавить раздел

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

Terrasoft.Common.DbOperationException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKmCHVieuE4OQALQKNVhLvr9q9YI0". The conflict occurred in database "048295-crm-bundle", table "dbo.Contract", column 'Id'.
The statement has been terminated. ---> System.Data.SqlClient.SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FKmCHVieuE4OQALQKNVhLvr9q9YI0". The conflict occurred in database "048295-crm-bundle", table "dbo.Contract", column 'Id'.
The statement has been terminated.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Polly.Policy.<>c__DisplayClass119_0`1.<Execute>b__0(Context ctx, CancellationToken ct)
   at Polly.Policy.<>c__DisplayClass129_0`1.<ExecuteInternal>b__0(Context ctx, CancellationToken ct)
   at Polly.Policy.<>c__DisplayClass103_0.<NoOp>b__1(Context ctx, CancellationToken ct)
   at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.<>c.<NoOp>b__103_0(Action`2 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.ExecuteInternal[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.Execute[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
   at Polly.Policy.Execute[TResult](Func`1 action)
   at Terrasoft.DB.MSSql.MSSqlExecutor.FailoverExecute[TResult](DbCommand command, Func`1 func)
   at Terrasoft.Core.DB.DBExecutor.ExecuteCommand[TResult](Func`2 commandExecutionCallback, String sqlText, QueryParameterCollection queryParameters, CancellationToken cancellationToken)
   at Terrasoft.Core.DB.DBExecutor.Execute(String sqlText, QueryParameterCollection queryParameters)
   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)
   --- End of inner exception stack trace ---
   at Terrasoft.Core.Entities.Entity.InsertToDB(Boolean skipLookupColumnValues, Boolean validateRequired)
   at Terrasoft.Core.Entities.Entity.InternalSave(Boolean validateRequired, Boolean setColumnDefValue)
   at Terrasoft.Core.Entities.Entity.Save(Boolean validateRequired, Boolean setColumnDefValue)
   at Terrasoft.Core.Process.ProcessEngineImpl.AddProcessListener(Entity entity, Guid processElementUId, String conditionData, String changedColumns, EntityChangeType entityChangeType)
   at Terrasoft.Core.Process.Configuration.ApprovalUserTask.InternalExecute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)

У меня такой же вопрос

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

Здравствуйте. Это ошибка на уровне бд по внешнему ключу ссылающемуся на договор(Contract). Простыми словами нет договора 

Если выбрать все зависимости и отфильтровать по названию ключа, ссылка на договор пыталась добавиться из таблицы ContractVisa (что логично, если сбой в визировании).

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

Всем доброго дня. Версия 7.14.

Клиент хочет добавить свои корпоративные цвета для диаграмм, в идеале - заменить вот эти:

 

Удалось найти, что список цветов задаётся в модуле DashboardEnums. Но добавление новых относится к запрещённому ныне переопределению модулей. Быть может есть всё-таки обходные пути?

У меня такой же вопрос

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

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

В последних версиях bpm'online запрещено замещать базовые модули, это сделано для защиты приложения от потенциальных ошибок, которые могут нарушить базовую логику. 

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

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

Проблемы с отправкой запроса. 
Как убрать из заголовка запроса Expect: 100-continue? 
Вызываем веб-сервис из бизнес процесса. 

У меня такой же вопрос

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

1) В блоке скриптаск самому реализовать на c# работу с вэб сервисом

2) Изменить параметр Максимальное число повторений в свойствах БП ниже названия и пакета (нужно проверить) 

Григорий Чех пишет:

1) В блоке скриптаск самому реализовать на c# работу с вэб сервисом

2) Изменить параметр Максимальное число повторений в свойствах БП ниже названия и пакета (нужно проверить) 

Григорий Чех,

сейчас стоит 5000

Стандартное значение равно 100. Видимо, с какой-то целью увеличивали.

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

Коллеги,

Читаю в документации по бизнес-процессам как можно обрабатывать параметры типа "коллекция". В частности такой фрагмент "...Также обработать параметры типа “коллекция” можно с помощью элемента [Задание-сценарий]. Например, можно использовать сценарий для преобразования коллекций записей в отдельные записи, которые можно передать в другие элементы процесса...". Но, к сожалению, не нашел примеров такого сценария. Не может ли кто-то привести пример кода элемента бизнес-процесса [Задание-сценарий] для работы с параметром типа "коллекция"?

Заранее спасибо.

У меня такой же вопрос

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

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

 

Добрый день!
Пример работы с коллекцией (после элемента "Считать данные"):

var entities = Get<ICompositeObjectList<ICompositeObject>>("ReadDataUserTask1.ResultCompositeObjectList");
 
var result = "";
 
foreach(var entity in entities) 
{
    	var Name = "";
    	if (entity.TryGetValue<string>("Number", out Name))
    	{
    		result = result + Name + ", ";  
    	}
}
 
return true;

 

Григорий Чех,

Большое спасибо.

Сидоров Александр В.,

 Большое спасибо.

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

Добрый день!

Возник вопрос при правке данных сразу после создания записи. Система пишет ошибку и не отрабатывает как ожидалось. БП создает запись и далее сразу же ее пытаюсь изменить в разделе "После добавления записи".

Entity.SetColumnValue("Name","txt1");
Entity.Save();
return true;

Можете подсказать, что не так? GetColumnValue отрабатывает, а вот с изменением и дальнейшим сохранением операция не проходит.

У меня такой же вопрос

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

Сразу же у меня возникли вопросы, какая именно ошибка у вас возникает?

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

Григорий Чех,

Изначально требуется вызывать WS, записи на выходе парсить и создавать/обновлять записи в отдельном справочнике.
На выходе из WS получаем:
{"results":[{"id":"1", "login":"qwe1", "name":"qwe1"},{"id":"2", "login":"qwe2", "name":"qwe2"},{"id":"3", "login":"qwe3", "name":"qwe3"}]}

Если не ошибаюсь, блок по работе с WS в БП не умеет корректно обрабатывать такие ответы.
Во всяком случае видел в Сообществе такого рода комментарии.
Так что сейчас пробую весь ответ внести в промежуточную служебную форму, удалить лишнее, оставив только JSON, и описать парсинг JSON с логикой по созданию/обновлению записей.

На всякий случай сразу уточню. Можно ли без c# только блоками БП настроить парсинг этого дела?
Вариант с зацикливанием проверю дополнительно.

Спасибо!

Александр Кулиш пишет:
На всякий случай сразу уточню. Можно ли без c# только блоками БП настроить парсинг этого дела?

Для работы с данными служит элемент БП «Формула», но там функций работы с текстом минимум, по сути, только слияние строк.

Проще будет записать результат вызова сервиса в строковой параметр, а потом блоком-скриптом его разобрать, записав в другие параметры или сразу создав кодом записи в таблице базы.

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

Александр Кулиш,

Обсуждалось тут так же обратите внимание на парсинг Json в c# через Newtonsoft.Json

Григорий Чех,

В первой Вашей ссылке рассмотрен пример.
Попробовал его воспроизвести.
Делаю все по нему и в результате система выдает:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Terrasoft.Common.ReflectionUtilities.GetPropertyValueByPath(Object source, String propertyPath)
   at Terrasoft.Core.Process.ProcessModel.Get[T](String propertyPath)
   at Terrasoft.Core.Process.UsrJira2NvgIntegration3MethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessScriptTask.InternalExecute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

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

var collection = Get<ICompositeObjectList<ICompositeObject>>("WebService1.UsrResult_Out");
var result = new List<string>();
foreach (var row in collection){
    row.TryGetValue("UsrResultsId_Out", out string id);
    row.TryGetValue("UsrResultsLogin_Out", out string login);
    row.TryGetValue("UsrResultsName_Out", out string name);
    result.Add($"{name}:{login}:{id}");
}

Set("Name1", string.Join(" | ", result.ToArray()));
return true;

 

Можете подсказать, в каком направлении при этом стоит копать?

Григорий Чех,

Код успешно компилируется.
В режиме отладки вижу, что первая строка кода:
var collection = Get<ICompositeObjectList<ICompositeObject>>("WebService1.UsrTestResult_Out");
не получает никаких данных.
В чем может быть проблема?

Параметры на выходе блока WS такие

Код сейчас такой использую:

var collection = Get<ICompositeObjectList<ICompositeObject>>("WebService1.UsrTestResult_Out");
var result = new List<string>();
foreach (var row in collection){
    row.TryGetValue("UsrTestResultName_Out", out string name);
    row.TryGetValue("UsrTestResultComment_Out", out string comment);
    result.Add($"{name}:{comment}");
}

Set("Name1", string.Join(" | ", result.ToArray()));
Set("Name2", "qwe");

return true;

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

При установки поля (lookup) в карточки, должны заполняться еще какие-то поля, взятые из этого поля. Как можно это реализовать?

У меня такой же вопрос

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

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

attributes: {
	"Stage": {
				lookupListConfig: {
					orders: [{columnPath: "Number"}],
					columns: ["End", "MaxProbability", "Successful"]
				}
	},
	"Probability": {
		dependencies: [{
			columns: ["Stage"],
			methodName: "onStageChanged"
		}]
	}
},
methods: {
	onStageChanged: function() {
		var probabilityFromLookup = this.get("Stage") && thtis.get("Stage").MaxProbability || 0;
		this.set("Probability", probabilityFromLookup);
	}
}

 

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

attributes: {
	"Stage": {
				lookupListConfig: {
					orders: [{columnPath: "Number"}],
					columns: ["End", "MaxProbability", "Successful"]
				}
	},
	"Probability": {
		dependencies: [{
			columns: ["Stage"],
			methodName: "onStageChanged"
		}]
	}
},
methods: {
	onStageChanged: function() {
		var probabilityFromLookup = this.get("Stage") && thtis.get("Stage").MaxProbability || 0;
		this.set("Probability", probabilityFromLookup);
	}
}

 

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

Для title колонок в объекте у меня отображается три языка, как можно в список добавить еще один язык?

У меня такой же вопрос

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

Посмотрите эту статью на Академии.

Посмотрите эту статью на Академии.

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

Подскажите, кто реально работает с bpm'online и СУБД PostgreSQL? На сколько стабильная работа система с ней и какие есть сейчас ограничения в сравнении с MS Sql? Так же хотел узнать какие сейчас продукты могут работать с этой СУБД и когда по карте будут работать остальные продукты?

Я понимаю что тут ответят так же работники супорта, потому прошу их не писать в рамках вопроса об опыте использования, так как я хочу узнать опыт именно пользователей не компании Террасоф

У меня такой же вопрос

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

Только начинаю изучать, из ограничений (по документации) пока только:

В bpm’online версии 7.13 использование PostgreSQL возможно только для продукта Studio.

Только начинаю изучать, из ограничений (по документации) пока только:

В bpm’online версии 7.13 использование PostgreSQL возможно только для продукта Studio.

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