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

Доброго времени суток коллеги. Имею справочник "Тип документа", при выборе определенного значения в логическом поле "Резидент" нужно автоматический проставляться галочка.

 Попробовал через this.set("UsrTypeDoc").value, не получается. Прощу направить на верный путь. Спасибо

Нравится

7 комментариев
Лучший ответ
Если я вас правильно понял, вы хотите при изменении значения в поле "Тип документа" == "Биом паспорт"
Установить в поле Резидент = true, в противном случае false
 
Если так, то решение для вас будет такое:
 
В атрибутах:
UsrTypeDoc: {
	dataValueType: Terrasoft.DataValueType.LOOKUP,
	dependencies: [
		{
			columns: ["UsrTypeDoc"],
			methodName: "onChangeUsrTypeDoc"
		}
	]
},
 
в методах:
 
onChangeUsrTypeDoc: function() {
	var type = this.get("UsrTypeDoc");
	if (type && type.value === "уникальнынй идентификатор из БД равный значению Биом паспорта")
	{
		this.set("Резидент(указать на англ)", true);
	}
	else
	{
		this.set("Резидент(указать на англ)", false);
	}
}
 
 
Если же вы хотите при установке в поле Резидент галочки, изменить поле "Тип документа".
 
То решение будет аналогичным, но в обратном виде:
Резидент(указать на англ): {
	dataValueType: Terrasoft.DataValueType.BOOLEAN,
	dependencies: [
		{
			columns: ["Резидент(указать на англ)"],
			methodName: "onChangeResident"
		}
	]
},
 
в методах:
 
onChangeResident: function() {
	var resident = this.get("Resident");
	if (resident)
	{
		this.set("UsrTypeDoc", {value: "здесь ID из БД которое равно Биом паспорту", displayValue: "а здесь значение поля Name из БД"});
	}
	else
	{
		//очистить или установить другое значение, смотря что нужно в данном случае
	}
}

 

Если я вас правильно понял, вы хотите при изменении значения в поле "Тип документа" == "Биом паспорт"
Установить в поле Резидент = true, в противном случае false
 
Если так, то решение для вас будет такое:
 
В атрибутах:
UsrTypeDoc: {
	dataValueType: Terrasoft.DataValueType.LOOKUP,
	dependencies: [
		{
			columns: ["UsrTypeDoc"],
			methodName: "onChangeUsrTypeDoc"
		}
	]
},
 
в методах:
 
onChangeUsrTypeDoc: function() {
	var type = this.get("UsrTypeDoc");
	if (type && type.value === "уникальнынй идентификатор из БД равный значению Биом паспорта")
	{
		this.set("Резидент(указать на англ)", true);
	}
	else
	{
		this.set("Резидент(указать на англ)", false);
	}
}
 
 
Если же вы хотите при установке в поле Резидент галочки, изменить поле "Тип документа".
 
То решение будет аналогичным, но в обратном виде:
Резидент(указать на англ): {
	dataValueType: Terrasoft.DataValueType.BOOLEAN,
	dependencies: [
		{
			columns: ["Резидент(указать на англ)"],
			methodName: "onChangeResident"
		}
	]
},
 
в методах:
 
onChangeResident: function() {
	var resident = this.get("Resident");
	if (resident)
	{
		this.set("UsrTypeDoc", {value: "здесь ID из БД которое равно Биом паспорту", displayValue: "а здесь значение поля Name из БД"});
	}
	else
	{
		//очистить или установить другое значение, смотря что нужно в данном случае
	}
}

 

С точки зрения дальнейшей поддержки правильнее сделать в справочнике "тип документа" логическое поле "резидент". Затем создать БП (в 7.17 такое уже есть). Пример тут. У меня поля "Комплект" - логическое.

Литвинко Павел,

Спасибо

Трефилов Павел Сергеевич,

У меня версия 7.13

Трефилов Павел Сергеевич,Где  можно посмотреть пример?

Ислам, пример настройки такого бизнес-правила есть тут. Но в 7.13, насколько помню, оно ещё не поддерживалось. Значит, нужно кодом, как выше предложили. Либо, если мгновенное изменение в уже открытой карточке не важно, поле можно заполнять в бизнес-процессе (отдельном или встроенном в объект).

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