Подскажите, пожалуйста, что я не так делаю.
Я в Таблицу Активностей (Activity) добавил поля. При формировании счета есть необходимость при определенных условиях вносить в эти поля данные, чтобы они отобразились в счете. Делаю я это при помощи Задания-сценария:
(код приблизительный)
var list = Get>("ReadDataUserTask9.ResultCompositeObjectList");
foreach (ICompositeObject item in list) {
item.TryGetValue("UsrFloat1", out decimal uf1);
item.TryGetValue("UsrFloat2", out decimal uf2);
item.TryGetValue("Id", out Guid id);
if ( UsrFloat1 > UsrFloat2 ) {
new Update(UserConnection, "Activity")
.Set("UsrFloat1CAP", Column.Parameter(uf2))
.Set("UsrFloat2CAP", Column.Parameter(uf1))
.Where("Id").IsEqual(Column.Parameter(id))
.Execute();
}
}
return true;
Может я что-то не дочитал, т.к. я новичек в этой системе, но ничего не происходит.
Буду благодарен любой подсказке в каком месте я не туда "копаю"...
Нравится
Добрый день,
А Вам точно нужно использовать для этого задание - сценарий? И еще: Вы каждый раз будете отправлять в БД update запрос в foreach для каждого элемента в списке, если UsrFloat1 больше UsrFloat2. Это нагрузит БД, приложение будет работать медленно + очень вероятно, что это загрузит и процессор Web-сервера. Нужно изменить подход в реализации логики. Например все приготовления сделать до изменения данных, записать результат в параметры процесса через Set<> (тут примеры), а потом простым элементом Modify data проставить активности значение в нужной колонке.
Демчук,
Это сообщение не может возникать в коде, что Вы предоставили. Очень похоже на то, что процес вместо Set в UpdateQuery где-то прописан еще и процесс пытается проставить значение параметру процесса, которого не существует и отдает это сообщение об ошибке. В стэке или в журнале процессов в экземпляре процесса с ошибкой не указано на каком элементе свал?