Добавление детали
Статья раскрывает следующие вопросы:
-          Как добавить деталь в карточку
-          Как фильтровать значения детали
-          Выбор из справочника
-          Вызов из детали
-          Пример фильтров для детали 
Для того, чтобы добавить деталь в карточку нужно:
В объект 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;
}
