Добрый день!

Необходима помощь знающих людей в следующем вопросе:

на карточке редактирования есть два поля. Первое поле типа справочник. При выборе значения в первом поле необходимо заполнить выпадающий список для второго поля, что бы пользователь смог выбрать только определенные значения. Значения для списка второго поля вычисляются в коде. Они не постоянны, поскольку один из элементов вычисления имеет переменное значение.
Идеальным вариантом был бы мемори датасет, но не получилось привязать его к контролу EnumDataControl.
Так же есть идея заполнять сервис Enum динамически в коде, возможно ли это?
Или есть другой вариант решения задачи?

Заранее благодарю!!!

Нравится

14 комментариев

http://terrasoft.com.ua/sdk/
IEnumExample.js - пример динамического заполнения перечисления.

спасибо!

Подскажите, пожалуйста, а можно добавлять/удалять элементы у сервиса Enum через код перед его открытием (ShowSelectEnumItemWindow(EnumUSI))? Мне это сделать не удалось. Наверно, что-то не так делаю.

www.informicus.ru

Конечно можно, IEnum в SDK посмотрите.
Что именно не удалось ?

1) Создала сервис Enum без значений.
2) далее заполняю и вызываю его следующим образом в коде:

var enm_ShowsForDay = Services.GetNewItemByUSI('enm_ShowsForDay');
	for (var i = 1; i <= 13; i++) {
	    var EnumItem = enm_ShowsForDay.CreateItem();
	    EnumItem.ID = EnumItem.Code = 'TranslationsPerBlock_' + i;
	    EnumItem.Caption = i;
	    enm_ShowsForDay.Add(EnumItem);
	}
 
	try{
		var TrsPerBlock = parseInt((ShowSelectEnumItemWindow('enm_ShowsForDay')).ResultValue.Caption);
	}
	catch (e){
		return false;
	}

но список оказывается пустым при открытии перечисления.

www.informicus.ru

Разобралась сама.
В функции ShowSelectEnumItemWindow просто заново объект создавался.

var Enum = Services.GetNewItemByUSI('EnumUSI');

создала рядом копию функции,но без вышеуказанной строки.

www.informicus.ru

Кстати перечисления кажется по GetSingleItemByUSI получать надо.

"Underscore a.k.a. _" написал:Кстати перечисления кажется по GetSingleItemByUSI получать надо.

Почему?
GetSingleItemByCode ()
Services.GetNewItemByUSI()

"Раловец Ольга" написал:Почему?
GetSingleItemByCode ()
Services.GetNewItemByUSI()

Прошу прощения, я Вас не совсем понял :)
Я хотел сказать что перечисления как и таблицы получаем с помощью метода GetSingleItemByUSI объекта Services.

Я всегда считала, что правильно Services.GetNewItemByUSI(), но похоже и Services.GetSingleItemByUSI() тоже работает.

:redface:

Но я надеюсь Вы осознаете и исправитесь :) На самом деле немного стыдно, два раза подряд Вас так ткунуть. Но это было сильнее меня :)

"Underscore a.k.a. _" написал:На самом деле немного стыдно, два раза подряд Вас так ткунуть

Что Вы, напротив, я ценю конструктивную критику.

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