define("UsrSchema042ca8fbDetail", ["ConfigurationEnums"],
function(configurationEnums) {
return {
entitySchemaName: "UsrCourierCertInOrder",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
{
/* Тип операции — слияние. */
"operation": "merge",
/* Название элемента схемы, над которым производится действие. */
"name": "DataGrid",
/* Объект, свойства которого будут объединены со свойствами элемента схемы. */
"values": {
"rowDataItemMarkerColumnName": "UsrDocumentLookup"
}
},
{
/* Тип операции — слияние. */
"operation": "merge",
/* Название элемента схемы, над которым производится действие. */
"name": "AddRecordButton",
/* Объект, свойства которого будут объединены со свойствами элемента схемы. */
"values": {
"visible": {"bindTo": "getToolsVisible"}
}
}]/**SCHEMA_DIFF*/,
methods: {
//Возвращает колонки, которые выбираются запросом.
getGridDataColumns: function() {
return {
"Id": {path: "Id"},
"Document": {path: "UsrDocument"},
"Document.Number": {path: "UsrDocument.Number"}
};
},
//Конфигурирует и отображает модальное окно справочника.
openDocumentLookup: function() {
//Конфигурационный объект
var config = {
// Название схемы объекта, записи которого будут отображены в справочнике.
entitySchemaName: "UsrDocumentLookup",
// Возможность множественного выбора.
multiSelect: true,
// Колонки, которые будут использованы в справочнике, например, для сортировки.
columns: []
};
var OrderId = this.get("MasterRecordId");
if (this.Ext.isEmpty(OrderId)) {
return;
}
// Экземпляр класса [EntitySchemaQuery].
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
// Установка корневой схемы.
rootSchemaName: this.entitySchemaName
});
// Добавление колонки [Id].
esq.addColumn("Id");
// Добавление колонки [Id] из схемы [Document].
esq.addColumn("Document.Id", "DocumentId");
// Создание и добавление фильтров в коллекцию запроса.
esq.filters.add("filterOrder", this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL, "UsrOrder", OrderId));
// Получение всей коллекции записей и отображение ее в модальном окне справочника.
esq.getEntityCollection(function(result) {
var existsDocumentsCollection = [];
if (result.success) {
result.collection.each(function(item) {
existsDocumentsCollection.push(item.get("DocumentId"));
});
}
// Добавление фильтра в конфигурационный объект.
if (existsDocumentsCollection.length > 0) {
var existsFilter = this.Terrasoft.createColumnInFilterWithParameters("Id",
existsDocumentsCollection);
existsFilter.comparisonType = this.Terrasoft.ComparisonType.NOT_EQUAL;
existsFilter.Name = "existsFilter";
config.filters = existsFilter;
}
// Вызов модального окна справочника
this.openLookup(config, this.addCallBack, this);
}, this);
},
// Обработчик события сохранения страницы редактирования.
onCardSaved: function() {
this.openDocumentLookup();
},
//Открывает справочник документов в случае если страница редактирования заказа была ранее сохранена.
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.openDocumentLookup();
},
// Добавление выбранных продуктов.
addCallBack: function(args) {
// Экземпляр класса пакетного запроса BatchQuery.
var bq = this.Ext.create("Terrasoft.BatchQuery");
var OrderId = this.get("MasterRecordId");
// Коллекция выбранных в справочнике документов.
this.selectedRows = args.selectedRows.getItems();
// Коллекция, передаваемая в запрос.
this.selectedItems = [];
// Копирование необходимых данных.
this.selectedRows.forEach(function(item) {
item.OrderId = OrderId;
item.DocumentId = item.value;
bq.add(this.getDocumentInsertQuery(item));
this.selectedItems.push(item.value);
}, this);
// Выполнение пакетного запроса, если он не пустой.
if (bq.queries.length) {
this.showBodyMask.call(this);
bq.execute(this.onDocumentInsert, this);
}
},
//Возвращает запрос на добавление текущего объекта.
getDocumentInsertQuery: function(item) {
var insert = Ext.create("Terrasoft.InsertQuery", {
rootSchemaName: this.entitySchemaName
});
insert.setParameterValue("UsrOrder", item.OrderId, this.Terrasoft.DataValueType.GUID);
insert.setParameterValue("UsrDocument", item.DocumentId, this.Terrasoft.DataValueType.GUID);
return insert;
},
//Метод, вызываемый при добавлении записей в реестр детали.
onDocumentInsert: 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.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 "UsrDocument";
}
},
};
});
Добрый день, прошу помочь с деталью выборкой из справочника. Не сохраняет значения. Специально использовал все с примера в Академии чтоб понять суть.