Автоподстановка в деталь

Приветы, в дизайнере страницы добавил "текстовое поле".

Как при выборе из справочника в другой детали (деталь выбор из справочника) значения, чтобы в "текстовое поле" установить значение на основе работы какой-то функции, которая через бд получит значение и запишет в это "текстовое поле"

 

 

Нравится

7 комментариев

Здравствуйте!

Как вариант - использовать бизнес-процесс, который будет читать данные поля детали и записывать его в поле на странице

Больше информации о настройке бизнес-процессов - на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-11/obzor-funkcionalnosti-biznes-processov-v-bpmonline

Одеяненко Юлия,

 

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

QArt,

Алгоритм примерно следующий:

- стартовый сигнал - "Получен сигнал от объекта", какой объект - объект детали, событие - добавление записи (пример - http://prntscr.com/iudrkj)

- элемент "Читать данные", читать данные первой записи объекта детали, сортировка по убыванию колонки "Дата создания", значение только той колонки, которая будет транслироваться (пример - http://prntscr.com/iudxeb)

- элемент "Изменить данные" объекта, в котором нужно автоматически заполнять поле, изменить ту запись, на которой находится деталь, изменить значение Вашего кастомного поля параметром процесса, вычитаном в предыдущем элементе (пример - http://prntscr.com/iudwk1).

Тогда, после обновления страницы, поле в карточке заполнится полем из последней добавленной на деталь записи.

Спасибо. Если мне нужно в деталь "текстовое поле" писать расчетное значение, которое должно рассчитываться на событие "изменение значения в детали". Но в расчете Значение = "значение из детали" + в зависимости от типа указанного в сущности "значение из детали" то есть как-то запросом подгребать. И, увы, в бд поле есть у объекта, а в конструкторе в биз процессе поле выбрать нельзя, хотя деталь есть в интерфейсе пользователя, странно все это... 

 

Может попробовать как-то через атрибуты 

"aMetro": {

                        dependencies: [

                            {

                                columns: [ "WorkAddr" ],

                                methodName: "calcMetro"

                            }

                        ]

                    }

в calcMetro через esq получить метро и вписать его в деталь -  "текстовое поле" можно такой пример?

У меня опыта мало в ковырянии динозавра :)

QArt,

Разобрался, узнаю новое и странное. Почти сделал

getFullAddressFromVacancy: function (Id) {

                        var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                            rootSchemaName: "AccountAddress"

                        });

                        esq.addColumn("Id");

                        esq.addColumn("Address", "Address");

                        esq.addColumn("AccountAddress.SxSubwayStation.Name", "MetroName");

                        esq.addColumn("AccountAddress.City.Name", "CityName");

                        esq.filters.add("VacancyCandidateFilter222", this.Terrasoft.createColumnFilterWithParameter(

                            this.Terrasoft.ComparisonType.EQUAL,

                            "Id", Id));

                        esq.getEntityCollection(function (response) {

                            if (response.success && response.collection.getCount() == 1) {

                                var entity = response.collection.getByIndex(0);

                                var addr = entity.get("Address");

                                var city = entity.get("CityName");

                                var metro = entity.get("MetroName");

                                var add = '';

                                if (city != undefined && city != 'Москва')

                                  add += city + ', ';

                                if (metro != undefined)

                                  add += metro + ', ';

                                if (addr != undefined)

                                  add += addr;

                                this.log('Add = ' + add);

                                this.set("BpMetroAutoFill", add);

                            }

                        }, this);

                }

В консоли хрома вижу что столбцы, кроме Address пишутся isNotFound. 

Делал согласно https://academy.terrasoft.ru/documents/technic-sdk/7-8/poluchenie-rezul…

EntitySchemaQuery умеет довыгребать AccountAddress.SxSubwayStation.Name в таблице AccountAddress есть столбец SxSubwayStationId

Аналогично с City.

Что не так делаю, подскажите плиз?

Добрый день.

Таблицу AccountAddress вы указываете в rootSchemaName. Тоесть, при добавлении колонки из AccountAddress, не нужно указывать название этой таблицы. Нужно указывать именно поле из этой таблицы, например SxSubwayStation.Name.

Demchenko Olha,

Оля, спасибо, помогло! 

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