Программная сортировка детали и строгое ограничение количества выводимых записей

Здравствуйте.
Подскажите пожалуйста как решить следующую задачу:
Нужно дублировать деталь Активности на вкладку "Основная информация" контрагента, с целью отображения последней активности по контрагенту.

Нравится

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Константин.

Деталь Вы можете повторно через Мастер раздела на нужную Вам вкладку.

Для определения количества записей на детали необходимо на странице детали переопределить метод getRowCount (см. его в GridUtilitiesV2).

Здравствуйте, Андрей.

Если я правильно понял, переопределение метода getRowCount детали Активности, повлияет на работу всех деталей Активности. Следовательно мне нужно создать отдельную схему модели представление детали с реестром, связать ее с объектом Активности, зарегестрировать, добавить на страницу Контрагента через мастер раздела и уже потом переопределять этот метод в новой схеме?

Здравствуйте, Константин!

Не совсем.

Вы можете создать отдельную схему модели представление детали с реестром и унаследоваться от ActivityDetailV2, а там прописать SchemaName того раздела, на которой она будет отображаться. А в схеме карточки раздела Контрагенты добавить эту деталь. При этом в мастере разделов она не будет доступна.
Т.е. регистрировать не обязательно. Это нужно только для мастера раздела. Но т.к. есть несколько деталей, которые ссылаются на один объект, не факт, что получится это сделать корректно. Потому лучше просто добавить без регистрации.

Здравствуйте, Андрей.

Спасибо все получилось.

Не моли бы вы подсказать как отфильтровать эту деталь по полю Activity.StatusId используя константу.

Здравствуйте, Константин!

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

Фильтр по одному значению:

methods: { 
  activitiesDetailFilter: function() {
    var filterGroup = new Terrasoft.createFilterGroup();
    filterGroup.add("ActivityByOpportunity", Terrasoft.createColumnFilterWithParameter(
      Terrasoft.ComparisonType.EQUAL, "Opportunity", this.get("Id")));
    /* Фильтр по одному значению */
    filterGroup.add("StatusFilter", Terrasoft.createColumnFilterWithParameter(
      Terrasoft.ComparisonType.EQUAL,
        "Status", "384d4b84-58e6-df11-971b-001d60e938c6"));
    return filterGroup;
  },
}

Фильтр по нескольким значениям:

methods: { 
  activitiesDetailFilter: function() {
var filterGroup = new Terrasoft.createFilterGroup();
    filterGroup.add("ActivityByOpportunity", Terrasoft.createColumnFilterWithParameter(
      Terrasoft.ComparisonType.EQUAL, "Opportunity", this.get("Id")));
    /* Фильтр по нескольким значениям */
    filterGroup.add("StatusFilter", Terrasoft.createColumnInFilterWithParameters(
      "Status", ["384d4b84-58e6-df11-971b-001d60e938c6", "4bdbb88f-58e6-df11-971b-001d60e938c6"]));
    return filterGroup;
  },
}

При этом, стандартный фильтр связи с разделом необходимо убрать:

"Activity": {
		"schemaName": "ActivityDetailV2",
		"entitySchemaName": "Activity",
		/*"filter": {
			"detailColumn": "Opportunity",
			"masterColumn": "Id"
		},*/
		"filterMethod": "activitiesDetailFilter"
}

Андрей, спасибо.

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