Возможно ли изменять результат выборки в бизнес процессе: например, я добавляю данные в деталь по результату выборки, и мне надо цену уменьшить на 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 записи.