Подстановка значения в поле-справочник

Добрый день!

Подскажите, пожалуйста, может кто-нибудь сталкивался с такой проблемой..

В системе есть объект Product (Продукт) и Tax (Налог). У продукта есть поле "Тип" (Type), и у налога тоже "Тип продукта" (UsrTypeProduct). То есть налог зависит от типа продукта.

Нам нужно, чтобы при выборе продукта с определенным типом, в поле-справочник (Налог) подставлялся налог, соответствующий этому типу продукции.

Я попробовала сделать следующим образом (с помощью кода подстановки):

                attributes: {
                       
                        "Tax": {
                dependencies: [
                   {
                        columns: ["Product"],
                        methodName: "changeTax"
                   }
                ]
            },
                        "Product": {
                                 lookupListConfig: {
                                        columns: ["Type"]
                                }
                        }
                },
                methods: {
                       
                        changeTax: function() {
                                var Product = this.get("Product");
                                if (Product.Type.displayValue === "Спермопродукция") {
                                        var ProductType=Product.Type;
                                        var esq = Ext.create('Terrasoft.EntitySchemaQuery', {
                                                rootSchemaName: "Tax"
                                        });
                                        var self = this;
                                        esq.addColumn("Id");
                                        esq.addColumn("UsrTypeProduct");
                                        esq.filters.add("Id", Terrasoft.createColumnFilterWithParameter(
                                                Terrasoft.ComparisonType.EQUAL, "UsrTypeProduct", ProductType.value));
                                        esq.getEntityCollection(function(result) {
                                                if (result.success) {
                                                        Terrasoft.each(result.collection.getItems(), function(item) {
                                                                self.set("Tax", item.get("Id"));
                                                        });
                                                }
                                        });
                                }
                        }
                }

Но в поле "Налог" подставляется undefined, он не может однозначно определить налог как я понимаю.

Сюда больше подходит фильтрация скорее всего, но хотелось бы, чтобы сразу подставлялось значение в список.

Нравится

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

Настя, попробуйте добавить в esq вместо колонки "UsrTypeProduct" колонку "Name". Колонку типа продукта добавлять нет необходимости, так как она нужна Вам только для фильтрации.

Результат запроса попробуйте сохранять в атрибут схемы в виде:

self.set("Tax", {
	value: item.get("Id"),
	displayValue: item.get("Name")
});

Спасибо! Так все работает!)

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