Приветы, в дизайнере страницы добавил "текстовое поле".
Как при выборе из справочника в другой детали (деталь выбор из справочника) значения, чтобы в "текстовое поле" установить значение на основе работы какой-то функции, которая через бд получит значение и запишет в это "текстовое поле"
Нравится
Здравствуйте!
Как вариант - использовать бизнес-процесс, который будет читать данные поля детали и записывать его в поле на странице
Больше информации о настройке бизнес-процессов - на Академии: 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.