Результат выборки
Возможно ли изменять результат выборки в бизнес процессе: например, я добавляю данные в деталь по результату выборки, и мне надо цену уменьшить на 70%. Можно ли как-то дописать туда необходимое значение?
Нравится
NothingHappen,
В таком случае через результат выборки сделать не получится.
Реализуйте копирование в элементе задание-сценарий. Смотрите пример ниже:
var userConnection = Get<UserConnection>("UserConnection");
var oldProjectId = Get<Guid>("OldProjectId");
var newProjectId = Get<Guid>("NewProjectId");
var esqProjectDisease = new EntitySchemaQuery(userConnection.EntitySchemaManager, "BTProjectDisease");
esqProjectDisease.AddAllSchemaColumns();
esqProjectDisease.Filters.Add(esqProjectDisease.CreateFilterWithParameters(FilterComparisonType.Equal,
"EWBProject", oldProjectId));
var projectDiseaseCollection = esqProjectDisease.GetEntityCollection(userConnection);
foreach (Entity projectDisease in projectDiseaseCollection) {
EntitySchema projectDiseaseSchema = userConnection.EntitySchemaManager.GetInstanceByName("BTProjectDisease");
Entity projectDiseaseNewEntity = projectDiseaseSchema.CreateEntity(userConnection);
projectDiseaseNewEntity.SetDefColumnValues();
var newProjectDiseaseId = Guid.NewGuid();
projectDiseaseNewEntity.SetColumnValue("Id", newProjectDiseaseId);
projectDiseaseNewEntity.SetColumnValue("Number", projectDisease.GetTypedColumnValue<string>("Number"));
projectDiseaseNewEntity.SetColumnValue("EWBProjectId", newProjectId);
projectDiseaseNewEntity.SetColumnValue("BTDisease", projectDisease.GetTypedColumnValue<string>("BTDisease"));
projectDiseaseNewEntity.SetColumnValue("BTDiseaseTypeId", projectDisease.GetTypedColumnValue<Guid>("BTDiseaseTypeId"));
projectDiseaseNewEntity.SetColumnValue("BTTherapeuticAreaId", projectDisease.GetTypedColumnValue<Guid>("BTTherapeuticAreaId"));
projectDiseaseNewEntity.SetColumnValue("BTQuote", projectDisease.GetTypedColumnValue<int>("BTQuote"));
var diseaseSubtypeId = projectDisease.GetTypedColumnValue<Guid>("BTDiseaseSubtypeId");
if (diseaseSubtypeId != Guid.Empty) {
projectDiseaseNewEntity.SetColumnValue("BTDiseaseSubtypeId", diseaseSubtypeId);
}
var ageId = projectDisease.GetTypedColumnValue<Guid>("AgeId");
if (ageId != Guid.Empty) {
projectDiseaseNewEntity.SetColumnValue("AgeId", ageId);
}
var genderId = projectDisease.GetTypedColumnValue<Guid>("GenderId");
if (genderId != Guid.Empty) {
projectDiseaseNewEntity.SetColumnValue("GenderId", genderId);
}
projectDiseaseNewEntity.Save();
}
return true;
Попробуйте это сделать с помощью установки значения поля через формулу.
Я беру результаты из продажи и передаю в новую продажу, значение поля через формулу добавляет результаты в существующую, а не в новую...
NothingHappen,
Не совсем понимаю, что Вы имеете ввиду.
Вот таким образом можно добавить нужное значение через формулу:

И в появившемся окне прописать формулу.
Алла Савельева,
Я, наверное, криво объяснил. Я беру данные из одной детали в одной продаже и передаю данные в эту же деталь, только в другой продаже. Если пробовать передать через формулу - то ничего не передается, и по совету с форума я использовал результат выборки - так сработало.
NothingHappen,
В таком случае через результат выборки сделать не получится.
Реализуйте копирование в элементе задание-сценарий. Смотрите пример ниже:
var userConnection = Get<UserConnection>("UserConnection");
var oldProjectId = Get<Guid>("OldProjectId");
var newProjectId = Get<Guid>("NewProjectId");
var esqProjectDisease = new EntitySchemaQuery(userConnection.EntitySchemaManager, "BTProjectDisease");
esqProjectDisease.AddAllSchemaColumns();
esqProjectDisease.Filters.Add(esqProjectDisease.CreateFilterWithParameters(FilterComparisonType.Equal,
"EWBProject", oldProjectId));
var projectDiseaseCollection = esqProjectDisease.GetEntityCollection(userConnection);
foreach (Entity projectDisease in projectDiseaseCollection) {
EntitySchema projectDiseaseSchema = userConnection.EntitySchemaManager.GetInstanceByName("BTProjectDisease");
Entity projectDiseaseNewEntity = projectDiseaseSchema.CreateEntity(userConnection);
projectDiseaseNewEntity.SetDefColumnValues();
var newProjectDiseaseId = Guid.NewGuid();
projectDiseaseNewEntity.SetColumnValue("Id", newProjectDiseaseId);
projectDiseaseNewEntity.SetColumnValue("Number", projectDisease.GetTypedColumnValue<string>("Number"));
projectDiseaseNewEntity.SetColumnValue("EWBProjectId", newProjectId);
projectDiseaseNewEntity.SetColumnValue("BTDisease", projectDisease.GetTypedColumnValue<string>("BTDisease"));
projectDiseaseNewEntity.SetColumnValue("BTDiseaseTypeId", projectDisease.GetTypedColumnValue<Guid>("BTDiseaseTypeId"));
projectDiseaseNewEntity.SetColumnValue("BTTherapeuticAreaId", projectDisease.GetTypedColumnValue<Guid>("BTTherapeuticAreaId"));
projectDiseaseNewEntity.SetColumnValue("BTQuote", projectDisease.GetTypedColumnValue<int>("BTQuote"));
var diseaseSubtypeId = projectDisease.GetTypedColumnValue<Guid>("BTDiseaseSubtypeId");
if (diseaseSubtypeId != Guid.Empty) {
projectDiseaseNewEntity.SetColumnValue("BTDiseaseSubtypeId", diseaseSubtypeId);
}
var ageId = projectDisease.GetTypedColumnValue<Guid>("AgeId");
if (ageId != Guid.Empty) {
projectDiseaseNewEntity.SetColumnValue("AgeId", ageId);
}
var genderId = projectDisease.GetTypedColumnValue<Guid>("GenderId");
if (genderId != Guid.Empty) {
projectDiseaseNewEntity.SetColumnValue("GenderId", genderId);
}
projectDiseaseNewEntity.Save();
}
return true;
NothingHappen,
Ниже пример того же кода, но реализованный по-другому и поэтому компактнее:
var userConnection = Get<UserConnection>("UserConnection");
var oldProjectId = Get<Guid>("OldProjectId");
var newProjectId = Get<Guid>("NewProjectId");
var esqProjectDisease = new EntitySchemaQuery(userConnection.EntitySchemaManager, "BTProjectDisease");
esqProjectDisease.AddAllSchemaColumns();
esqProjectDisease.Filters.Add(esqProjectDisease.CreateFilterWithParameters(FilterComparisonType.Equal,
"EWBProject", oldProjectId));
var projectDiseaseCollection = esqProjectDisease.GetEntityCollection(userConnection);
foreach (Entity projectDisease in projectDiseaseCollection) {
Entity projectDiseaseNewEntity = (Entity)projectDisease.Clone();
projectDiseaseNewEntity.SetDefColumnValues();
projectDiseaseNewEntity.SetColumnValue("Id", Guid.NewGuid());
projectDiseaseNewEntity.SetColumnValue("EWBProjectId", newProjectId);
projectDiseaseNewEntity.SetColumnValue("TotalCollected", 0);
projectDiseaseNewEntity.SetColumnValue("TotalQCApproved", 0);
projectDiseaseNewEntity.SetColumnValue("Difference", 0);
projectDiseaseNewEntity.SetColumnValue("Efficiency", 0);
projectDiseaseNewEntity.Save();
}
return true;Обратите внимание, что, если использовать такой вариант реализации, то обязательно нужно указывать новое значение Id записи.