Добрый день.

Есть самописный модуль, в параметры которого необходимо передать filterGroup для выполнения фильтрации внутри модуля.

Пробовал передать просто объект filterGroup - параметр с объектом не передается в модуль.

Пробовал передать 

filterGroup.serialize() 

- при десериализации строки получаю совершенно другую структуру объекта

Terrasoft.deserialize(filterGroup)

При добавлении этого фильтра в ESQ-запрос

происходит ошибка:

"Uncaught TypeError: a.on is not a function"

Подскажите, как корректно:

1. передать объект в параметры модуль?

2. провести сериализацию группы фильтров с последующим 



 

Нравится

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

ага. упирался уже в данный нюанс. Не могу найти пример с проекта, но фишка в serializationInfo. Вот пример из дефолтной конфигурации:

var serializationInfo = sectionFilters.getDefSerializationInfo();
serializationInfo.serializeFilterManagerInfo = true;
var deserializedFilters = Terrasoft.deserialize(sectionFilters.serialize(serializationInfo));

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



В консоли по быстрому накидал. Посмотрите, как различаются 2 результата десериализации (в моём примере v=Terrasoft.createFilterGroup()):

Варфоломеев Данила,

Огромное спасибо! Всё получилось.

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

На форуме не нашел, решил написать.
Проблема такая:
-В расширенном модуле AccountSectionV2 нужно по нажатию кнопки еще проставлять true на галку.
При создание нового account(а именно на page) все без проблем "завелось", проблема встала именно на section, при редактирование из клиентской части уже имеющегося юр.лица.

Как я понял нужно использовать esq, т.к. this.set("bool",true); не работает, но не нашел как устанавливать значения через esq. Быть может надо по другому. Помогите пожалуйста.

define("AccountSectionV2", [],
        function() {
        return {
                entitySchemaName: "Account",
            // Коллекция методов модели представления страницы редактирования.
            methods: {
                                getChainCardModuleSandboxId: function(typeColumnValue) {
                                        return this.getCardModuleSandboxId() + "_chain" + typeColumnValue;
                                },
                                showExistingRecordSaveButton: function() {
                                        this.set("IsSendToFlextera", true);
                                        return this.get("IsCardInEditMode") && this.get("ShowSaveButton");
                                       
                                },
                                onClickSaveToFlex: function() {
                                   this.set("IsSendToFlextera", true);
                                        var tag = arguments[0] || arguments[3];
                                        this.sandbox.publish("OnCardAction", tag, [this.getCardModuleSandboxId()]);
                                       
                                }
                        },
                               
                        diff: [
                {
                                        "operation": "insert",
                                        "name": "FlexsaveRecordButton",
                                        "parentName": "CombinedModeActionButtonsCardLeftContainer",
                                        "propertyName": "items",
                                        "values": {
                                                "itemType": Terrasoft.ViewItemType.BUTTON,
                                                "caption": {"bindTo": "Resources.Strings.SaveToFlexteraCaption"},
                                                "click": {"bindTo": "IsSendToFlextera"},//"onClickSaveToFlex"},
                                                "visible": {"bindTo": "showExistingRecordSaveButton"},
                                                "classes": {"textClass": ["actions-button-margin-right"]},
                                                "tag": "save"
                                        }
                                }
            ]
                 
         };
        });

Нравится

1 комментарий

Максим, добрый день!

Если колонка, для которой необходимо установить значение, есть среди колонок активной строки, можно попробовать сохранять активную строку:

var activeRow = this.getActiveRow();
activeRow.set("YourColumnName", columnValue);
activeRow.saveEntity();

Для работы этого кода необходимо, чтобы в коллекции activeRow.columns была колонка с названием YourColumnName и типом Terrasoft.ViewModelColumnType.ENTITY_COLUMN (данная константа равняется 0).

Также обновление значения можно выполнить через запрос примерно так:

var updateQuery = this.Ext.create("Terrasoft.UpdateQuery", {
	rootSchemaName: "EntitySchemaName"
});
var filters = updateQuery.filters;
filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
	this.Terrasoft.ComparisonType.EQUAL, "Id", currentRecordId));
updateQuery.setParameterValue("YourColumnName", columnValue);
updateQuery.execute(callbackFunction, this);
Показать все комментарии