Вопрос

Динамичное изменение справочного поля

Коллеги, приветствую! 

Подскажите как реализовать в коде изменение справочного поля по условию?

С числами и текстом понятно, а вот как это можно со справочниками делать?

Нравится

7 комментариев
Лучший ответ

Установка нового значения справочного поля выполняется таким образом:

this.set("Stage",  {value: "3d7c3c8f-cff2-4291-8f1d-03676dab7cc7", displayValue: "2. Collection"});

Либо, если значение этого справочного поля получается из другого справочного поля, так:

var stage = result.entity.get("Stage");
this.set("Stage", stage);

 

Установка нового значения справочного поля выполняется таким образом:

this.set("Stage",  {value: "3d7c3c8f-cff2-4291-8f1d-03676dab7cc7", displayValue: "2. Collection"});

Либо, если значение этого справочного поля получается из другого справочного поля, так:

var stage = result.entity.get("Stage");
this.set("Stage", stage);

 

Алла Савельева,

Спасибо! Первым способом получилось устанавливать значение справочника.

А второй я не понял.

Если у нас есть два справочника: к примеру: "Type" и "Stage".

Когда у "Type" значение = "Рабочий клиент",

то и у "Stage" значение должно стать = "Рабочий клиент".

В обоих справочниках такие значения есть.

Как тогда использовать второй способ?

SavelyevOll,

Второй используем в том случае, если значение справочного поля получаем из другого объекта. Например, у Вас, есть справочник Type, который содержит поле Stage и карточка редактирования объекта A, в котором должно устанавливаться при определенных условиях значение поля Stage в зависимости от поля Type и еще каких-то дополнительных условий.

Таким образом, если у Вас будет значение поля Type, Вы можете получить запросом на клиенте значение поля Stage и установить его в поле Stage объекта A так, как приведено в примере 2, не прописывая отдельно значения value и displayValue.

Алла Савельева,

Понял, спасибо!

Алла, подскажите еще:

Как проверить значение справочника?

Я использовал такой код: но он не отрабатывает

var type = this.get("Type");
if (type === "d4658c14-ef7f-4e15-9b32-c81b16644ff8"){
console.log("Rabotaet");
}

 

Подозреваю, что он не отрабатывает, поскольку в переменной находится не строка, а объект с двумя полями, вроде упомянутого в первом комментарии. Более точно можно посмотреть в инструментах разработчика в браузере.

Алла Савельева,

Алла, как проверить изменение я понял.

Есть еще один вопрос, подскажите, пожалуйста.



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

Но способом:

this.set("Stage",  {value: "3d7c3c8f-cff2-4291-8f1d-03676dab7cc7", displayValue: "2. Collection"});

В  "2 Collection" - я записываю свое значение, визуально справочник его отображает, но не присваивает, из-за этого стадии кейса не меняются.

Подскажите, как присвоить справочнику значение?



Ниже код для проверки условия:

 

 

var type = this.get("Type");
				type = type.value;
				if (type ==="b8330b25-3aaa-45d4-b6ce-b3979965e85b"){}

 

Коллеги, спасибо за помощь!

Все работает)

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