В активностях, документах и других деталях истории контрагента есть прекрасная возможность включить отображение записей дочерних контрагентов (настроенных через связи)

Однако в Хронологии такой возможности нет :(

Подскажите, пожалуйста, как бы туда добавить такую же возможность включать записи по дочерним контрагентам? Или вдруг это планируется в ближайших версиях?

Нравится

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

Владимир, в обычных деталях, таких как «История», используют логику из BaseGridDetailV2, связанную с состоянием нажатия кнопки RelationshipButton. Если она нажата, через OR добавляется дополнительное условие фильтрации, то есть выбираются записи с детали, связанные не с текущей, а с дочерними.

/**
 * Returns filters collection.
 * @override
 * @return {Terrasoft.FilterGroup} Detail filter group.
 */
getFilters: function() {
	const detailFilters = this.get("DetailFilters");
	const masterColumnFilters = this.get("Filter");
	const serializationMasterColumnInfo = masterColumnFilters.getDefSerializationInfo();
	serializationMasterColumnInfo.serializeFilterManagerInfo = true;
	const serializationDetailInfo = detailFilters.getDefSerializationInfo();
	serializationDetailInfo.serializeFilterManagerInfo = true;
	const deserializedMasterColumnFilters = Terrasoft.deserialize(masterColumnFilters
		.serialize(serializationMasterColumnInfo));
	const deserializedDetailFilters = Terrasoft.deserialize(detailFilters.serialize(serializationDetailInfo));
	if (this.get("IsRelationshipButtonPressed")) {
		const mainFilterGroup = this.getRelationshipFilters();
		mainFilterGroup.logicalOperation = Terrasoft.LogicalOperatorType.OR;
		mainFilterGroup.add("masterRecordFilter", deserializedMasterColumnFilters);
		deserializedDetailFilters.add("mainFilterGroup", mainFilterGroup);
	} else {
		deserializedDetailFilters.add("masterRecordFilter", deserializedMasterColumnFilters);
	}
	return deserializedDetailFilters;
},

Сам фильтр такой:

/**
 * Returns the relationship filter.
 * @protected
 * @return {Terrasoft.FilterGroup} Relationship filter.
 */
getRelationshipFilters: function() {
	const mainFilterGroup = this.Ext.create("Terrasoft.FilterGroup");
	const relationshipFilterGroup = this.Ext.create("Terrasoft.FilterGroup");
	const masterRecordId = this.get("MasterRecordId");
	const detailColumnName = this.get("DetailColumnName");
	const relationTypePath = this.get("RelationTypePath");
	const relationshipPath = this.get("RelationshipPath");
	const relationType = this.get("RelationType");
	if (relationTypePath && relationshipPath && relationType) {
		relationshipFilterGroup.add("relationshipFilter", Terrasoft.createColumnFilterWithParameter(
			Terrasoft.ComparisonType.EQUAL,
			relationTypePath,
			relationType,
			Terrasoft.DataValueType.GUID));
		relationshipFilterGroup.add("relationshipTypeFilter", Terrasoft.createColumnFilterWithParameter(
			Terrasoft.ComparisonType.EQUAL,
			relationshipPath,
			masterRecordId,
			Terrasoft.DataValueType.GUID));
	} else {
		relationshipFilterGroup.add("relationshipFilter", Terrasoft.createColumnFilterWithParameter(
			Terrasoft.ComparisonType.EQUAL,
			this.getDefaultRelationshipPath(),
			masterRecordId,
			Terrasoft.DataValueType.GUID));
	}
	mainFilterGroup.add("subRelationshipFilterGroup", Terrasoft.createExistsFilter(
		detailColumnName,
		relationshipFilterGroup));
	return mainFilterGroup;
},

В хронологии используется другой механизм, не на основе стандартной детали. Видимо, нужно дорабатывать TimelineSchema или TimelineFiltersSchema, добавлять подобную логику проверки и фильтрации.

 

Если Ваше предложение заинтересует разработчиков системы, они запланируют в новых версиях такую кнопку и логику. Ранее уже была похожая идея, чтобы в хронологии контрагентов показывались все звонки и письма контактов, связанных с этим контрагентом, она тоже пока не реализовывалась.

Зверев Александр пишет:
Если Ваше предложение заинтересует разработчиков системы, они запланируют в новых версиях такую кнопку и логику. Ранее уже была похожая идея, чтобы в хронологии контрагентов показывались все звонки и письма контактов, связанных с этим контрагентом, она тоже пока не реализовывалась.

Думаю, это очень логично, учитывая, что такую логику уже реализовали в деталях. 

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