У меня в карточке договора есть поле типа "Перечисление". Мне нужно скрывать одно значение в этом поле для определенного типа договора. Как это сделать программно?
Нравится
Андрей, попробуйте использовать подобный код для удаления значения перечисления при определенном типе договора:
[javascript]
var ContrTypeIDDefault = 'Default';
var CurrentContrTypeID = '{3D51B409-B691-4F77-9723-359C65399AB4}';
var Initialized = false;
if (!Initialized) {
var BaseEnum = Services.GetNewItemByUSI('enm_xxx');
var EnumCache = {};
EnumCache.ContrTypeIDDefault = BaseEnum;
var EnumCacheItem = BaseEnum.CreateCopy();
EnumCacheItem.Remove(EnumCacheItem.ItemsByCode('Code'));
EnumCache.CurrentContrTypeID = EnumCacheItem;
Initialized = true;
}
var Item = EnumCache.CurrentContrTypeID;
if (Assigned(Item)&&(Dataset.Values('ContractTypeID') == CurrentContrTypeID)) {
edtEnumControl.DataField.Enum = System.EmptyValue;
edtEnumControl.DataField.Enum = Item;
} else {
edtEnumControl.DataField.Enum = System.EmptyValue;
edtEnumControl.DataField.Enum = EnumCache.ContrTypeIDDefault;
}
[/javascript]
Спасибо, Наталья :twisted:. Ключевым для меня в вашем ответе было то, что нужно присваивать значение System.EmptyValue перед изменением списка значений в поле типа "Перечисление".