Код схемы детали: 
	 
// Определение схемы и установка ее зависимостей от других модулей.
	define("UsrCaseTestDetail", ["ConfigurationEnums"],
	    function(configurationEnums) {
	        return {
	            // Название схемы объекта детали.
	            entitySchemaName: "UsrCaseTest",
	            // Методы схемы детали.
	            methods: { 
	                //Возвращает колонки, которые выбираются запросом.
	                getGridDataColumns: function() {
	                    return {
	                        "Id": {path: "Id"},
	                        "UsrContact": {path: "UsrContact"},
	                        "UsrContact.Name": {path: "UsrContact.Name"}
	                    };
	                },
	                openContactLookup: function() {
	                    var config = {
	                        entitySchemaName: "Contact",
	                        multiSelect: true,
	                        columns: ["Name"]
	                    };
	                    // Экземпляр класса [EntitySchemaQuery].
	                    var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
	                        // Установка корневой схемы.
	                        rootSchemaName: this.entitySchemaName
	                    });
	                    // Добавление колонки [Id].
	                    esq.addColumn("Id");
	                    // Добавление колонки [Id] из схемы [Document].
	                    esq.addColumn("UsrContact.Id", "UsrContactId");
	                    esq.getEntityCollection(function(result) {
	                        var existsContactsCollection = [];
	                        if (result.success) {
	                            result.collection.each(function(item) {
	                                existsContactsCollection.push(item.get("UsrContactId"));
	                            });
	                        }
	                        // Добавление фильтра в конфигурационный объект.
	                        if (existsContactsCollection.length > 0) {
	                            var existsFilter = this.Terrasoft.createColumnInFilterWithParameters("Id",
	                            existsContactsCollection);
	                            existsFilter.comparisonType = this.Terrasoft.ComparisonType.NOT_EQUAL;
	                            existsFilter.Name = "existsFilter";
	                            config.filters = existsFilter;
	                        }
	                        // Вызов модального окна справочника
	                        this.openLookup(config, this.addCallBack, this);
	                    }, this);
	                },
                // Обработчик события сохранения страницы редактирования.
	                onCardSaved: function() {
	                    this.openContactLookup();
	                },
                //Открывает справочник документов в случае если страница редактирования заказа была ранее сохранена.
	                addRecord: function() {
	                    var masterCardState = this.sandbox.publish("GetCardState", null, [this.sandbox.id]);
	                    var isNewRecord = (masterCardState.state === configurationEnums.CardStateV2.ADD ||
	                    masterCardState.state === configurationEnums.CardStateV2.COPY);
	                    if (isNewRecord === true) {
	                        var args = {
	                            isSilent: true,
	                            messageTags: [this.sandbox.id]
	                        };
	                        this.sandbox.publish("SaveRecord", args, [this.sandbox.id]);
	                        return;
	                    }
	                    this.openContactLookup();
	                },
                // Добавление выбранных продуктов.
	                addCallBack: function(args) {
	                    // Экземпляр класса пакетного запроса BatchQuery.
	                    var bq = this.Ext.create("Terrasoft.BatchQuery");
	                    // Коллекция выбранных в справочнике документов.
	                    this.selectedRows = args.selectedRows.getItems();
	                    // Коллекция, передаваемая в запрос.
	                    this.selectedItems = [];
	                    // Копирование необходимых данных.
	                    this.selectedRows.forEach(function(item) {
	                        item.UsrContactId = item.value;
	                        bq.add(this.getDocumentInsertQuery(item));
	                        this.selectedItems.push(item.value);
	                    }, this);
	                    // Выполнение пакетного запроса, если он не пустой.
	                    if (bq.queries.length) {
	                        this.showBodyMask.call(this);
	                        bq.execute(this.onContactInsert, this);
	                    }
	                },
                //Возвращает запрос на добавление текущего объекта.
	                getDocumentInsertQuery: function(item) {
	                    var insert = Ext.create("Terrasoft.InsertQuery", {
	                        rootSchemaName: this.entitySchemaName
	                    });
	                    insert.setParameterValue("UsrContact", item.UsrContactId, this.Terrasoft.DataValueType.GUID);
	                    return insert;
	                },
                // Метод, вызываемый при добавлении записей в реестр детали.
	                onContactInsert: function(response) {
	                    this.hideBodyMask.call(this);
	                    this.beforeLoadGridData();
	                    var filterCollection = [];
	                    response.queryResults.forEach(function(item) {
	                        filterCollection.push(item.id);
	                    });
	                    var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
	                        rootSchemaName: this.entitySchemaName
	                    });
	                    this.initQueryColumns(esq);
	                    esq.filters.add("recordId", Terrasoft.createColumnInFilterWithParameters("Id", filterCollection));
	                    esq.on("createviewmodel", this.createViewModel, this);
	                    esq.getEntityCollection(function(response) {
	                        this.afterLoadGridData();
	                        if (response.success) {
	                            var responseCollection = response.collection;
	                            this.prepareResponseCollection(responseCollection);
	                            this.getGridData().loadAll(responseCollection);
	                        }
	                    }, this);
	                },
                // Метод, вызываемый при удалении выбранных записей детали.
	                deleteRecords: function() {
	                    var selectedRows = this.getSelectedItems();
	                    if (selectedRows.length > 0) {
	                        this.set("SelectedRows", selectedRows);
	                        this.callParent(arguments);
	                    }
	                },
                // Скрыть пункт меню [Копировать].
	                getCopyRecordMenuItem: Terrasoft.emptyFn,
	                 // Скрыть пункт меню [Изменить].
	                getEditRecordMenuItem: Terrasoft.emptyFn,
	                // Возвращает имя колонки по умолчанию для фильтра.
	                getFilterDefaultColumnName: function() {
	                    return "UsrContact";
	                }
	            },
	            // Массив модификаций.
	            diff: /**SCHEMA_DIFF*/[
	                {
	                    // Тип операции — слияние.
	                    "operation": "merge",
	                    // Название элемента схемы, над которым производится действие.
	                    "name": "DataGrid",
	                    // Объект, свойства которого будут объединены со свойствами элемента схемы.
	                    "values": {
	                        "rowDataItemMarkerColumnName": "UsrContact"
	                    }
	                },
	                {
	                    // Тип операции — слияние.
	                    "operation": "merge",
	                    // Название элемента схемы, над которым производится действие.
	                    "name": "AddRecordButton",
	                    // Объект, свойства которого будут объединены со свойствами элемента схемы.
	                    "values": {
	                        "visible": {"bindTo": "getToolsVisible"}
	                    }
	                }
	            ]/**SCHEMA_DIFF*/
	        };
	    }
	);