Статья раскрывает следующие вопросы:
- Как добавить деталь в карточку
- Как фильтровать значения детали
- Выбор из справочника
- Вызов из детали
- Пример фильтров для детали
Для того, чтобы добавить деталь в карточку нужно:
В объект details карточки добавить объект, имя которого - это имя детали:
details: {
...
Activities: {
// имя схемы детали
schemaName: "ActivityDetailV2",
// настройки простой фильтрации по родительскому полю
// если masterColumn "Id" - можно не указывать
filter: {
masterColumn: "Id",
detailColumn: "Contact"
},
// filterFunctionName - имя метода который используется для формирования фильтра.
// (Реализация данного метода должна находиться в блоке "methods" карточки).
// Метод должен возвращать фильтр.
// Используется если нужна сложная фильтрация, имеет более высокий приоритет, чем настройки фильтрации по родительскому полю
//
filterMethod: "filterFunctionName"
// значения по умолчанию
// каждое свойство представляет собой объект, у которого должно быть свойство value или masterColumn
// value - константное значение,
// masterColumn - имя колонки родительской записи, из которой берется значение
defaultValues: {
Title: {
masterColumn: "Name"
},
Priority: {
value: "D625A9FC-7EE6-DF11-971B-001D60E938C6"
}
},
// метод, который будет вызван при изменении (добавлении, изменении, удалении) данных на детали
// args - объект {action: "", rows: []}
// action - "add", "edit", "delete"
// rows - массив идентификаторов
subscriber: function(args) {
}
}
...
}
Выбор из справочника (Lookup)
У базовой детали с реестром (BaseGridDetail) появилась функциональность для выбора из справочника:
openLookup
openLookup: function(config, callback, scope);
Пример вызова из детали:
var callback = function() {
debugger;
};
var config = {
entitySchemaName: "Contact",
multiSelect: true,
columnName: "Name",
columnValue: null,
searchValue: null,
filters: null
};
this.openLookup(config, callback, this);
Пример filterMethod - фильтр для детали email (модуль ActivityPageV2)
/**
* Функция создания фильтров детали email
* @protected
* @returns {createFilterGroup}
*/
emailDetailFilter: function () {
var recordId = this.get("Id");
var filterGroup = new this.Terrasoft.createFilterGroup();
filterGroup.add("ActivityConnectionNotNull", this.Terrasoft.createColumnIsNotNullFilter("ActivityConnection"));
filterGroup.add("ActivityConnection", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "ActivityConnection", recordId));
filterGroup.add("ActivityType", this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Type", ConfigurationConstants.Activity.Type.Email));
return filterGroup;
}