Здравствуйте,
В карточке редактирования записи на одном из полей висит перечисление.
Оно заполянется только при наличии значения в другом поле, а иначе пустым остается.
Когда я создаю первую запись (первый раз открываю карточку редактирования), преречисление заполянется верно и по умолчанию в поле появляется первое значение из перечисления. Когда же я открываю карточку для создания второй записи, то у меня стоит в поле с перечислением значение предыдущего перечисления, даже если оно было перезаполнено новыми значениями. Не пойму, как можно обновить его.
Заранее спасибо!!!
Нравится
"Kat" написал:Оно заполянется только при наличии значения в другом поле, а иначе пустым остается.
"Оно" это поле или перечисление?
Если перечисление, то попробуйте у контрола филд сбросить в null, а потом востановить. Если не поможет, дополнительно сбросьте в null енум у филда.
А может сделать как в карточке задачи - на спровочниках.
Оно - это про перечисление.
при создании новой записи, вроде, Enum обнуляю (enmTranslations.Enum = System.EmptyValue), но значение в поле остается старое. Такая же ситуация и при открытии записи. При первом открытии все ок, отображается нужное значение, при последующих отображается значение первой открытой записи.
DataField у EnumControl нет, поэтому я его обнулить не могу, вот это:
enmTranslations.Value.Caption = ''
не помогает :(
Вот мой код:
[javascript]
function wnd_ShowTimeEditOnPrepare(Window) { //debugger;
scr_BaseDBEdit.wnd_BaseDBEditOnPrepare(Window);
enmTranslations.Enum = System.EmptyValue;
var IntervalID = dlData.Dataset('IntradayIntervalID');
var ShowID = dlData.Dataset('ShowID');
var Translations = dlData.Dataset.ValAsInt('Translations');
if (IntervalID != null){
var Enum = FillEnum(IntervalID, ShowID);
enmTranslations.Enum = Enum;
}
if (!IsZeroValue(Translations)){
enmTranslations.Value = Enum.ItemsByCaption(Translations.toString()); // присваивается нужное значение, но в поле все равно старое
}
}
[/javascript]
как на справочниках - не получится, наверно. Enum создается и заполяняется в коде при изменении значения другого поля и потом просто переприсваиваю заново контролу:
//функция создания и заполения перечисления
[javascript]
function FillEnum(IntervalID, ShowID){
var BlocksPerInterval = CalcBlocksPerInterval(IntervalID, ShowID);
var Enum = Services.CreateItem(EnumCode);
for (var i = 1; i < 11; i++) {
var EnumItem = Enum.CreateItem();
EnumItem.ID = EnumItem.Code = 'BlocksPerInterval_' + i;
EnumItem.Caption = BlocksPerInterval * i;
Enum.Add(EnumItem);
}
return Enum;
}
[/javascript]
Добрый день!
Для решения возникшей у Вас проблемы могу порекомендовать немного видоизменить Ваш скрипт (вставить проверку на null, поменять местами строки условия), а именно:
[javascript]
function wnd_ShowTimeEditOnPrepare(Window) { //debugger;
scr_BaseDBEdit.wnd_BaseDBEditOnPrepare(Window);
enmTranslations.Value = System.EmptyValue;
enmTranslations.Enum = System.EmptyValue;
var IntervalID = dlData.Dataset('IntradayIntervalID');
var ShowID = dlData.Dataset('ShowID');
var Translations = dlData.Dataset.ValAsInt('Translations');
if (IntervalID != null){
var Enum = FillEnum(IntervalID, ShowID);
enmTranslations.Enum = Enum;
if (!IsZeroValue(Translations)){
enmTranslations.Value = Enum.ItemsByCaption(Translations.toString());
}
}
}
[/javascript]
Желаю удачи!
Мельникова Екатерина