Нужна помощь по запросам.

В карточке детали, есть справочное поле: UsrParametr (который строится к справочнику: UsrRefParameter, с полями: Name, Description и UsrStatus из справочника UsrRefStatus, с полями: Name, Description).

Как отфильтровать поле UsrParametr, по имени статуса, т.е. по полю UsrStatus из Справочника UsrRefStatus.

Так же, если можно, объясните сам процесс построения запросов, если не затруднит, прокомментируйте построчно приведенный ниже код, а так же, хотелось бы подробного объяснения, для чего используется в запросе " : " и для чего " . "
Заранее спасибо.
Код:

"ActivityCategory": {
     dataValueType: Terrasoft.DataValueType.LOOKUP,
     dependencies: [
      {
       columns: ["ActivityCategory"],
       methodName: "onActivityCategoryChange"
      }
     ]
    },
    "Result": {
     lookupListConfig: {
      filters: [
       function() {
        var type = this.get("ActivityCategory");
        var filterGroup = Ext.create("Terrasoft.FilterGroup");
        filterGroup.add("ActivityCategory",
         Terrasoft.createColumnFilterWithParameter(
          Terrasoft.ComparisonType.EQUAL,
          "[ActivityCategoryResultEntry:ActivityResult].ActivityCategory",
          type.value));
        filterGroup.add("BusinessProcessOnly",
         Terrasoft.createColumnFilterWithParameter(
          Terrasoft.ComparisonType.EQUAL,
          "BusinessProcessOnly",
          0));
        return filterGroup;
       }
      ]
     }
    },

Нравится

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

Здравствуйте!

Детализирую:

"ActivityCategory": {
     dataValueType: Terrasoft.DataValueType.LOOKUP,
     dependencies: [
      {
       columns: ["ActivityCategory"],
       methodName: "onActivityCategoryChange"
      }
     ]
    },

При изменении значения в поле ActivityCategory вызывается метод onActivityCategoryChange. Реализация этого метода:

onActivityCategoryChange: function() {
	var activityCategory = this.get("ActivityCategory");
	if (activityCategory && activityCategory.value === ConfigurationConstants.Activity.ActivityCategory.Meeting) {
		this.set("ShowInScheduler", true);
	}
}

Согласно этому методу в поле ShowInScheduler (Отображать в расписании) устанавливается значение true, если выбранная категория - встреча.

Теперь по второй части кода:

    "Result": {
     lookupListConfig: {
      filters: [
       function() {
        var type = this.get("ActivityCategory");
        var filterGroup = Ext.create("Terrasoft.FilterGroup");
        filterGroup.add("ActivityCategory",
         Terrasoft.createColumnFilterWithParameter(
          Terrasoft.ComparisonType.EQUAL,
          "[ActivityCategoryResultEntry:ActivityResult].ActivityCategory",
          type.value));
        filterGroup.add("BusinessProcessOnly",
         Terrasoft.createColumnFilterWithParameter(
          Terrasoft.ComparisonType.EQUAL,
          "BusinessProcessOnly",
          0));
        return filterGroup;
       }
      ]
     }

Данный код фильтрует значения в поле "Результат". Для выбора доступны значения, для которых:

  1. В справочнике ActivityCategoryResultEntry определяются возможные результаты для разных категорий активности. Добавляется фильтрация значений по категории активности
  2. Также не отображаются результаты, для которых уставлено значение "Использовать только в процессах"

Благодарю.

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