Как можно сделат так что бы, при нажатие кнопки "Сервис" на карточки активности, открылся справочник "Сервис" с филтрацией с полем "Тип обращения"? (прик. файл)
Заранее большое спасибо.
Нравится
Активность по инциденту?
Если да, то аналогично этому, но сначала получаем значение IncidentId у задачи. Если оно заполнено, то вытягиваем тип этого обращения при помощи функции GetEntityTypedColumnValue и по этому типу и фильтруем.
В обработчике события ServiceEdit процесса страницы карточки задача добавила следующий код:
Page.ServiceEdit.PrepareLookupFilter += delegate(object sender, LookupEditEventArgs e) {
/*var typeOfServiceRequestIncidentId = (Guid)Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "TypeOfServiceRequestIncident");
var typeOfServiceRequestServiceCallId = (Guid)Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "TypeOfServiceRequestServiceCall");
var typeOfServiceRequestMassIncidentId = (Guid)Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "TypeOfServiceRequestMassIncident");*/
var currentTypeId = Page.DataSource.ActiveRow.GetTypedColumnValue("SubTypeId");
//currentTypeId = currentTypeId == typeOfServiceRequestMassIncidentId ? typeOfServiceRequestIncidentId : currentTypeId;
//if (currentTypeId == typeOfServiceRequestIncidentId || currentTypeId == typeOfServiceRequestServiceCallId) {
e.Filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "TypeOfServiceRequest"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object [] {currentTypeId}}
});
};
Но к сожалению не зарабола.. (( Где я ошиблась?
Такой код нужно размещать на Init, а не в обработчике нажатия.
Начинает выдавать следующую ошибку при выборе справочника "Сервисы" на карточки активности: (прик. файл)
Date: 05.08.2015 15:12:11
Date (UTC): 05.08.2015 10:12:11
Exception Message: Значение с именем "SubTypeId" не найдено
Exception Type: Terrasoft.Common.ItemNotFoundException
Exception Source: Terrasoft.Core
Значит, у Вас в объекте «Активность» нет поля «SubTypeId» или оно не так называется.
Но вам же надо не тип активности, а тип обращения, по которому эта активность.
Вычитайте Id обращения, а потом с помощью функции GetEntityTypedColumnValue получите её тип.
Что-то у меня не получилась(( Не могли бы пожалуйста если не трудно подробно объяснит куда и что нужно добавит?
Заранее большое спасибо.
Но я же не знаю структуры Вашей базы и как называются поля.
Что-то вроде:
var serviceRequestId = Page.DataSource.ActiveRow.GetTypedColumnValue("ServiceRequestId"); var subTypeId = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue<Guid>(UserConnection, "ServiceRequest", "SybType.Id", serviceRequestId);