Сложная фильтрация детали

Добрый день!
Версия BPMOnline 7.2.0.942
Есть необходимость добавить деталь "продукты в счете" в раздел контрагенты, чтобы видеть все продукты клиента в его счетах.
При добавлении детали проблем не возникло, а с фильтрацией сложности.
Пробовал так:

{
   name: 'product',
   schemaName: 'ProductDetail',
   type: Terrasoft.ViewModelSchemaItem.DETAIL,
   filterPath: 'Invoice',
   filterValuePath: '[Invoice:Account].Id',
   caption: resources.localizableStrings.ProductDetailCaption,
   visible: true,
   collapsed: false,
   leftWidth: '60%',
   rightWidth: '40%',
  wrapContainerClass: 'control-group-container'
}

Выводятся все продукты без какой-либо фильтрации.
Буду благодарен за помощь..

Нравится

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

Здравствуйте, Иван!
Таким образом не получится сложную фильтрацию сделать, так как генератор модели представления детали позволяет накладывать фильтры только для колонок, которые доступны по прямому ключу в модели детали.
Лучше сделать отдельную деталь (или заместить существующую), в которой определить метод "applyFilter", и в нем накладывать фильтрацию.
Аналогичный пример в "ActivityDetail":

var parentApplyFilter = this.methods.applyFilter;
			this.methods.applyFilter = function(select, args) {
				var filterPath = this.filterPath;
				var filterValue = this.filterValue;
				if (args) {
					filterPath = this.filterPath = args.filterPath;
					filterValue = this.filterValue = args.filterValue;
				}
				if (args.filterPath === 'Participant') {
					select.filters.add('participiantdetailFilter', Terrasoft.createColumnFilterWithParameter(
						Terrasoft.ComparisonType.EQUAL,
						'[ActivityParticipant:Activity].Participant.Id', args.filterValue));
					return false;
				}
				else {
					parentApplyFilter.apply(this, arguments);
					return true;
				}
			};

Спасибо Андрей, получилось сделать описанным вами способом!

Добрый вечер,
Подскажите как данный код приспособить к 7.4? Необходимо добавить деталь Продукт в продаже в карточку Контакта, чтобы вывести все продукты которые привязаны к продажам связанным с контактом. С добавлением проблем нет, а вот с фильтрацией ничего не получается, пробовал так

"OpportunityProduct": {
	"schemaName": "OpportunityProductDetailV2",
	"entitySchemaName": "OpportunityProductInterest",
	"filter": {
		"masterColumn": "Id",
		"detailColumn": "Opportunity.UsrContact"
	}
}

выводит ошибку:

Uncaught Terrasoft.UnsupportedTypeException: null is unsupported type

Здравствуйте, Олег!
Попробуйте настроить колонки для детали. Скорее всего, ни одна колонка не добавлена.

Андрей, спасибо огромное, действительно колонки всего лишь надо было настроить

Аналогичная проблема при добавлении в новый раздел стандартных деталей Счета и Активности. Внешние ключи в объекты Счет и Активность Добавил, но при открытии Детали стандартные заголовки полей деталей отображаются, а реестр не отрисовывается.
См. скриншот деталей
См. скриншот ошибки в консоли
При настройке колонок ошибка пропадает, но хотелось бы узнать причину этой ошибки.

Также нужно отметить, что при добавлении этих деталей через мастер раздела, после выбора схемы детали мастер зависает намертво, пришлось добавлять детали руками в Page.

Версия 7.8.0.1681. Тройной бандл.

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