В активностях, документах и других деталях истории контрагента есть прекрасная возможность включить отображение записей дочерних контрагентов (настроенных через связи)
![]()
Однако в Хронологии такой возможности нет :(
Подскажите, пожалуйста, как бы туда добавить такую же возможность включать записи по дочерним контрагентам? Или вдруг это планируется в ближайших версиях?
![]()
Нравится
Владимир, в обычных деталях, таких как «История», используют логику из 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, добавлять подобную логику проверки и фильтрации.
Если Ваше предложение заинтересует разработчиков системы, они запланируют в новых версиях такую кнопку и логику. Ранее уже была похожая идея, чтобы в хронологии контрагентов показывались все звонки и письма контактов, связанных с этим контрагентом, она тоже пока не реализовывалась.
Зверев Александр пишет:
Если Ваше предложение заинтересует разработчиков системы, они запланируют в новых версиях такую кнопку и логику. Ранее уже была похожая идея, чтобы в хронологии контрагентов показывались все звонки и письма контактов, связанных с этим контрагентом, она тоже пока не реализовывалась.
Думаю, это очень логично, учитывая, что такую логику уже реализовали в деталях.