поле "Сервис" на карточки активности

Как можно сделат так что бы, при нажатие кнопки "Сервис" на карточки активности, открылся справочник "Сервис" с филтрацией с полем "Тип обращения"? (прик. файл)

Заранее большое спасибо.

Нравится

8 комментариев

Активность по инциденту?
Если да, то аналогично этому, но сначала получаем значение 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);
Показать все комментарии