define("EventTargetDetailV2", ["ServiceHelper", "ProcessModuleUtilities", "EventTargetDetailV2Resources"],
    function (ServiceHelper, ProcessModuleUtilities, resources) {
        return {
            entitySchemaName: "EventTarget",
            messages: {},
            attributes: {
                "IsEditResponseButtonVisible": {
                    dataValueType: Terrasoft.DataValueType.BOOLEAN,
                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
                    value: false
                },
                "EventResponseModalBox": {
                    dataValueType: Terrasoft.DataValueType.LOOKUP,
                    isLookup: true,
                    referenceSchemaName: "EventResponse"
                },
                "NrbEventResponseList": {
                    dataValueType: Terrasoft.DataValueType.COLLECTION,
                    value: Ext.create("Terrasoft.Collection")
                }
            },
            details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "insert",
                    "parentName": "Detail",
                    "propertyName": "tools",
                    "name": "EditResponseButton",
                    "values": {
                        "itemType": Terrasoft.ViewItemType.BUTTON,
                        "caption": { "bindTo": "Resources.Strings.EditResponseButtonCaption" },
                        "click": { "bindTo": "onEditResponseButtonClick" },
                        "enabled": { "bindTo": "isAnySelected" },
                        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
                    }
                }
            ]/**SCHEMA_DIFF*/,
            methods: {
 
                /*
                 * Обработчик нажатия на кнопку Изменения отклика.
                 */
                onEditResponseButtonClick: function () {
                    this.askUserResponseResultMessage(this.callMassiveChangeResponseEventProcess);
                },
 
                /*
                 * Вызывает Бизнес-процесс обновления отклика в мероприяиях.
                 */
                callMassiveChangeResponseEventProcess: function (resultValueId) {
                    let selectedItems = this.getSelectedItems();
                    if (!Ext.isEmpty(resultValueId) && !Ext.isEmpty(selectedItems)) {
 
                        let selectedItemsJson = JSON.stringify(selectedItems);
 
                        let args = {
                            sysProcessName: "NrbMassiveChangeResponseEvent",
                            parameters: {
                                NrbRecordsId: selectedItemsJson,
                                NrbEventResponseId: resultValueId
                            },
                            callback: function () {
                                this.hideBodyMask();
                                this.reloadGridData();
                            },
                            scope: this
                        };
                        ProcessModuleUtilities.executeProcess(args);
                    };
                },
 
                /*
                 * Показывает диалоговое окно для выбора нового отклика.
                 */
                askUserResponseResultMessage: function (callback) {
                    let controlConfig = {
                        EventResponse: {
                            dataValueType: Terrasoft.DataValueType.ENUM,
                            caption: this.get("Resources.Strings.EventResponseComboBoxCaption"),
                            value: { bindTo: "EventResponseModalBox" },
                            contentType: Terrasoft.ContentType.ENUM,
                            customConfig: {
                                list: { "bindTo": "NrbEventResponseList" },
                            },
                        }
                    };
 
                    let inputBoxCaption = this.get("Resources.Strings.EventResponseInputBoxCaption");
 
                    Terrasoft.utils.inputBox(inputBoxCaption,
                        function (buttonCode, controlData) {
 
                            let resultValueId = this.getLookupValue("EventResponseModalBox");
 
                            this.set("EventResponseModalBox", null);
 
                            if (buttonCode !== "ok") {
                                return;
                            }
 
                            if (Ext.isEmpty(resultValueId)) {
                                let errorMessage = this.get("Resources.Strings.EventResponseInputBoxErrorCaption");
                                this.showInformationDialog(errorMessage, function () {
                                    this.askUserResponseResultMessage();
                                });
                                return;
                            }
                            Ext.callback(callback, this, [resultValueId]);
                        },
                        ["ok", "cancel"],
                        this,
                        controlConfig,
                        { defaultButton: 0 }
                    );
 
                     //Подписка биндингов в диалоговом окне (самое важное)
                    Terrasoft.MessageBox.controlArray.forEach(function (item) {
                        item.control.bind(this);
                    }, this);
                },
            }
        };
    });

 

Нравится

Поделиться

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

Добрый день!
Подскажите, есть ли какая-нибудь документация по работе с Комбобоксом в 7.2?
Хочу создать комбобокс с выпадающим списком от 1 до 5. И это значение сохранять в целочисленное поле объекта (таблицы).
Создаю комбобокс через BankModuleUtilities.utils.getComboBox. Но не получается его заполнить.

Нравится

3 комментария
define('ContactPersonalInfoModuleITS', [
        'ext-base', 'terrasoft', 'sandbox', 'ContactPersonalInfoModuleITSResources',
        'ViewUtilities', 'BaseProcessViewModelClass', 'ProcessHelper', 'BankModuleUtilities', 'BankConfigurationConstants',
        'KFClientConsts', 'MaskHelper'],
    function(Ext, Terrasoft, sandbox, resources, ViewUtilities, BaseProcessViewModelClass, ProcessHelper,
             BankModuleUtilities, BankConfigurationConstants, KFConsts, MaskHelper) {
 
        var bankModuleUtils = BankModuleUtilities.utils;
        var bankModuleMethods = BankModuleUtilities.methods;
        var lc = resources.localizableStrings;
        var viewModel;
 
        function getView(processData) {
            ...
            var clientInfoGroup = bankModuleUtils.getControlGroup('ClientInfo',
                lc.ITSAdditionalInformationGroupCaption);
            clientInfoGroup.items = [
                bankModuleUtils.getLabel(lc.ITSFromOneToFiveLookupCaption, '', {id: 'FromOneToFiveLookupControlLabel'}),
                bankModuleUtils.getComboBox('FromOneToFiveLookup')
            ];
   ...
        }
 
        function getViewModel() {
            return Ext.create('Terrasoft.BaseProcessViewModel', {
                values: {
                    fromOneToFiveLookupList: new Terrasoft.Collection()
                },
                methods: {
                    getFromOneToFiveLookupList: function(filter, list) {
                        bankModuleMethods.fillListBySchemaName(list, 'FromOneToFiveLookup');
                    }
                },
                columns: {
                    FromOneToFiveLookup: {
                        dataValueType: Terrasoft.DataValueType.ENUM,
                        isRequired: false
                }
            });
        }
 
        function render(renderTo) {
            var processData = ProcessHelper.getProcessElementData(sandbox);
            var view = getView(processData);
            if (!viewModel) {
                viewModel = getViewModel(renderTo);
                viewModel.sandbox = sandbox;
                viewModel.processData = processData;
                viewModel.onLoad();
            }
            view.bind(viewModel);
            view.render(renderTo);
            document.getElementById('MaritalStatus-el').focus();
        }
 
        return {
            render: render
        };
    });

Вам надо создать справочник (в моем примере FromOneToFiveLookup) в котором будут значение 1 - 5

Спасибо!
А можно как-то без создания справочника обойтись?

bankModuleMethods.fillListBySchemaName
Посмотрите как заполняет список этот метод и сами вручную заполните свой список

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

Здравствуйте!
Добавил в деталь Платежные реквизиты, свойство "Основной", чтобы в Счете при выборе Контрагента по умолчанию подставлялся реквизит с признаком Основной.
Как получить я понял:

var esq = Ext.create('Terrasoft.EntitySchemaQuery', {
                                                rootSchemaName: "AccountBillingInfo"
                                        });
                                        esq.addColumn("Account");
                                        esq.addColumn("qrtIsMain");
                                        esq.addColumn("Name");
                                        esq.filters.add("AccId", Terrasoft.createColumnFilterWithParameter(
                                                Terrasoft.ComparisonType.EQUAL, "Account", this.get("qrtAccount").Id));
                                        esq.filters.add("IsMain", Terrasoft.createColumnFilterWithParameter(
                                                Terrasoft.ComparisonType.EQUAL, "qrtIsMain", true));
                                        esq.getEntityCollection(function(result) {
                                                if (result.success) {
                                                        Terrasoft.each(result.collection.getItems(), function(item) {
                                                                //self.set("qrtClientBilling", item.get("Id"));
                                                                //self.setValue("qrtClientBilling", item.get("Id"));
                                                        });
                                                }
                                        });

А как установить значение (то есть выбрать из существующих программно) ComboBox'а не пойму, подскажите, пожалуйста

Нравится

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

Для того чтобы установить новые значения для колонки записи (объекта) из клиентской части приложения необходимо использовать Terrasoft.InsertQuery. К сожалению, статьи по добавлению данных в конфигурационных схемах в документации разработчика пока нет.
Единственный пример, который может вам помочь, приведен в статье по созданию детали с выбором из справочника. Правда здесь используется пакетный запрос, аггрегирующий несколько запросов InsertQuery.
Стаья находится здесь:
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/sozdanie-detal…

Обратите внимание на этот кусок кода из примера

                // Добавление выбранных продуктов.
                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("Order", item.OrderId, this.Terrasoft.DataValueType.GUID);
                    insert.setParameterValue("Document", item.DocumentId, this.Terrasoft.DataValueType.GUID);
                    return insert;
                },

Всем спасибо за помощь, всё получилось...

"Владимир Соколов" написал:

Здесь я давал решение:

http://www.community.terrasoft.ua/forum/topic/21807

... отдельное спасибо за пример

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

Добрый день! Коллеги, поскажите пожалуйста, как можно получить значения выпадающего списка (comboBox).
Список значений формировался не через связь со справочником, а добавлением значений вручную, методом

AddItem()

например:

Page.usrComboBox.AddItem("test1","test1");
Page.usrComboBox.AddItem("test2","test2");
...

вопрос - где в Page.usrComboBox хранятся эти данные?
Спасибо!

Нравится

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

Влад,

Текущее значение можно получить так:

Page.usrComboBox.Value

Или Page.usrComboBox.SelectedItem, а точнее его ключ и значение:
Page.usrComboBox.SelectedItem.Text
Page.usrComboBox.SelectedItem.Value
Плюс отвечая на вопрос по поводу хранения всех данных, если вы не используете источник данных и добавляете значения в ручную, можно их кешировать в какой-то переменной для последующего использования. А выбранное пользователем значение читается как описано выше.

Спасибо за ответы! Еще один уточняющий вопрос.
список ComboBox заполняется несколькими значениями, по нажатию на кнопку, методом AddItem. Если нажать на кнопку, соответственно значения добавятся опять(задвоятся). Вот для того чтобы сделать проверку и избежать задвояния, меня и интересовало наличие метода, который возвратит список всех текущих значений списка ComboBox(не выбранного а всего списка).

usrComboBox.value 

- в данном случае выбрасывает искючение (изза того что value - не uid а string)

Вопрос решен, спасибо!

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