Подстановка мультисправочного поля

Всем доброго времени суток.

Версия 7.9 sales.

Стоит задача - при создании счёта из лида автоматически подставлять в поле Клиент значение Контакта связанного лида, если есть конечно.

Делается это стандартным запросом:

var $this = this;
var leadEsq = Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "Lead"});
                                       
                                        leadEsq.addColumn("QualifiedContact");
                                        leadEsq.addColumn("QualifiedAccount");
                                       
                                        leadEsq.getEntity(this.get("UsrLead").value, function(result) {
                                                if (!result.success) {
                                                        console.log("Ошибка запроса данных");
                                                        return;
                                                }
                                               
                                                if (result.entity.get("QualifiedContact")){
                                                        $this.set("Contact",result.entity.get("QualifiedContact"));
                                                } else {
                                                        if (result.entity.get("QualifiedAccount")){
                                                                $this.set("Account",result.entity.get("QualifiedAccount"));
                                                        }
                                                }
                                               
                                                $this.updateDetail({
                                                        detail: "Client"
                                                });
                                               

                                        }, this);

Данные приходят, но подстановки именно в поле клиента не происходит. Обновление по типу обновления детали тоже не помогло.

$this.set("Client",result.entity.get("QualifiedAccount")); - то же самое.

Как автоматически подставлять значение Клиента?

Нравится

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

Заметил, что какая-то подстановка всё же происходит - в частности, меняется иконка у поля Клиента.

Но сохранить страницу всё равно нельзя.

Здравствуйте,
Как при программной установке обычного лукапа, что бы узнать какую структуру должен иметь объект второго параметра this.set("колонка", значение), достаточно в init закешировать скоуп, и в консоли сделать this.get("имя-колонки"), и Вы узнаете правильную структуру, вроде этой:
{ value: "a7c4c271-22e4-44b0-b037-00045bd579ae", displayValue: "Name 1" }
Так и для мультилукапа можно его значение получить через this.get к примеру клиент из продажи это мультилукап, и структура будет следующей:
{ Name: "Name 1", Email: "", Id: "a7c4c271-22e4-44b0-b037-00045bd579ae", Photo: "", value: "a7c4c271-22e4-44b0-b037-00045bd579ae", displayValue: "Name 1", column: "Contact" }

Не вся из этой информации обязательна для заполнения, к примеру, можно установить значения клиента и таким кодом:

var val = {
Id: "bb7442b1-c8a1-43fc-b5b0-004bcc91fa5b",
value: "bb7442b1-c8a1-43fc-b5b0-004bcc91fa5b",
displayValue: "Name 3",
column: "Contact"
}
document.testscope.set("Client", val);

где document.testscope переменная в которой закеширован скоуп карточки. Для вас это просто this.set("Client", val); если Вы пишете код в методах карточки.
При чем, в этот момент установится и значение для колонки «Contact».

Ну или если проставляете аккаунта, то column: "Account".
Вот таким нехитрым способом можно установить програмно значение мультилукапа, чем клиент и является.

Максим, спасибо!

Помогло.

Короче, подстановка делается таким же способом, как и для обычной справочной колонки, только добавляется параметр column.

Максим, спасибо!

Помогло.

Короче, подстановка делается таким же способом, как и для обычной справочной колонки, только добавляется параметр column.

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