Автоматическое заполнение поля Контакт при открытии формы создания счета
Вопрос такой - как правильно сделать, чтобы при создании Счета (в моем случае из Активности) поле Контакт сразу заполнялось при открытии формы (значение нужно брать из родительского объекта Активность).
Правильно это делать в клиентской части? В каком методе это нужно реализовать?
Может есть примеры кода, мне получается нужно из родительского объекта вытянуть значение поля контакт и заполнить его в счете.
Подход с вычисляемыми полями (https://academy.terrasoft.ru/documents/technic-sdk/7-14/dobavlenie-vych…) тут сработает или нужно по другому? Как правильнее?
Нравится
В вашем случае нужно сделать запрос в базу для получения контакта из активности, а дальше устанавливать это значение
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Activity"
});
esq.addColumn('Contact');
esq.rowCount = 1;
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 'InvoiceId', this.get("Id")));
esq.getEntityCollection(function(response)
{
if(response.success)
{
var entities = response.collection.getItems();
Terrasoft.each(entities, function(item){
var contact = item.get('Contact');
});
}
});
Добрый день!
Правильнее будет сделать заполнение во внутреннем бизнес процессе создания объекта Счет.
Вычислимое поле не подойдет, потому что оно не хранится в базе, а просто отображается на странице. А вам нужно сохранить поле
Сидоров Александр В.,
С БП сложно, нужно будет публиковать сообщение для обновления формы и тп. Думаю мне подойдет вот такой способ -
Только вопрос - как в методе обратиться к родительскому объекту Активность и получить оттуда значение поля контакт. Хотелось бы пример кода.
Или где посмотреть код действия Создать счет на основании заказа, мне бы подошло, логика похожая.
В вашем случае нужно сделать запрос в базу для получения контакта из активности, а дальше устанавливать это значение
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Activity"
});
esq.addColumn('Contact');
esq.rowCount = 1;
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 'InvoiceId', this.get("Id")));
esq.getEntityCollection(function(response)
{
if(response.success)
{
var entities = response.collection.getItems();
Terrasoft.each(entities, function(item){
var contact = item.get('Contact');
});
}
});