Вопрос

Результат выборки

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

Возможно ли изменять результат выборки в бизнес процессе: например, я добавляю данные в деталь по результату выборки, и мне надо цену уменьшить на 70%. Можно ли как-то дописать туда необходимое значение?

 

Нравится

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

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 записи.

Алла Савельева,

Интересно, спасибо. Попробую на досуге

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