Деталь с выборкой из справочника

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";

                                }

                        },

            

    };

});

 Добрый день, прошу помочь с деталью выборкой из справочника. Не сохраняет значения. Специально использовал все с примера в Академии чтоб понять суть.

 

 

 

Нравится

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

Добрый день, не совсем понятно что конкретно вы хотите реализовать, о каком примере вы говорите?

Сложно сказать причину такого поведения смотря только на код.

Для выявления конкретного места стоит провести отладку. Возможно в консоли браузера будет ошибка при попытке работы с этой логикой, что укажет на причину.

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