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