Технические вопросы
7.x

Обработка событий

Здравствуйте!
Делаю обработку события После сохранения записи (у операции). Необходимо пересчитать сумму в Документе по всем операциям, которые находятся в состоянии Завершена и связаны с этим документом.
Код:

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "UsrOperation");
var documentId = this.Entity.GetTypedColumnValue("UsrContractId");
decimal Summ=0;
var usrPrimaryAmount = esq.AddColumn("UsrPrimaryAmount");
var usrOperationType = esq.AddColumn("UsrOperationTypeId");
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrContract", documentId));
var entityCollection = esq.GetEntityCollection(this.UserConnection);
if (entityCollection.Count > 0) {
foreach(var entity in entityCollection) {
if(entity.GetTypedColumnValue(usrOperationType.Name)=='fd59e0da-6bc3-4259-b17d-593fa62305ae')
{
Summ+=entity.GetTypedColumnValue(usrPrimaryAmount.Name);
}
}
}

var update = new Update(context.UserConnection, "Document")
.Set("UsrRealPayment",Column.Parameter(Summ))
.Where("Id").IsEqual(Column.Parameter(documentId)) as Update;

update.Execute();

В результате выдается ошибка "Превышено допустимое количество символов в строковой константе". Как это исправить?

Нравится

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

Вроде как "fd59e0da-6bc3-4259-b17d-593fa62305ae" вместо 'fd59e0da-6bc3-4259-b17d-593fa62305ae'

Анастасия, GetTypedColumnValue - generic метод, необходимо указывать тип. В ESQ добавляются колонки объектов, если это колонка справочного типа, то постфикс Id не нужен.

var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "UsrOperation");
Guid documentId = Entity.GetTypedColumnValue<Guid>("UsrContractId");
decimal Summ = 0;
esq.AddColumn("UsrPrimaryAmount");
esq.AddColumn("UsrOperationType");
esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "UsrContract", documentId));
var entityCollection = esq.GetEntityCollection(UserConnection);
if (entityCollection.Count > 0) {
	foreach(var entity in entityCollection) {
		if (entity.GetTypedColumnValue<Guid>("UsrOperationTypeId") == new Guid("fd59e0da-6bc3-4259-b17d-593fa62305ae")) {
				Summ += entity.GetTypedColumnValue<decimal>("UsrPrimaryAmount");
			}
	}
}

Замечание Акмаля также верно.

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