Автоматическое заполнение поля Контакт при открытии формы создания счета
Вопрос такой - как правильно сделать, чтобы при создании Счета (в моем случае из Активности) поле Контакт сразу заполнялось при открытии формы (значение нужно брать из родительского объекта Активность).
Правильно это делать в клиентской части? В каком методе это нужно реализовать?
Может есть примеры кода, мне получается нужно из родительского объекта вытянуть значение поля контакт и заполнить его в счете.
Подход с вычисляемыми полями (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'); }); } });