|
|
#1 |
|
Участник
|
Проблемы в dialog
Имеется контрол в диалоге типа Dimension, надо по какому-то условию делать эти контролы недоступны.
метод: PHP код:
Есть у кого-нибудь какие мысли? |
|
|
|
|
#2 |
|
Участник
|
Может попробовать поработать с dialog.formRun() ? Вытащить соответствующий formControl и сделать с ним всё, что нужно...
|
|
|
|
|
#3 |
|
Участник
|
А именно, можно сделать так:
Dialog dialog = new Dialog(); DialogField dfdim; FormRun form; FormDesign design; FormControl control; ; dfdim = dialog.addField(TypeId(Dimension)); dialog.doInit(); form = dialog.formRun(); design = form.design(); control = design.controlName('Fld1_6'); // 1 - номер поля 6 - индекс control.enabled(false); dialog.run(); Интересно, а можно добавить в диалог тоько одну аналитику? Чтобы узнать ID индексного поля есть fieldId2Ext. Для EDT я такой функции не нашел :-( |
|
|
|
|
#4 |
|
Administrator
|
Связанная проблема
А как узнать размер массива, если EDT определен таким образом. Я сделал свой EDT с несколькими Array Elements. Метод arraySize класса DictType всегда возвращает единицу. Кто-нибудь сталкивался?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
|
|
#5 |
|
Участник
|
Размер массива в ЕДТ dimof()
|
|
|
|
|
#6 |
|
Участник
|
Да.
DimOf |
|
|
|
|
#7 |
|
Administrator
|
Супер.
Спасибо
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
|
|
#8 |
|
Участник
|
Привет Алексей!
Dimension вставлять в группу. И изменять значение для группы. Это вариант решения проблемы. А вот почему - я не знаю. |
|
|
|
|
#9 |
|
Участник
|
|
|
|
|
|
#10 |
|
MCTS
|
Ну не знаю...
Одно из решений: допиливание классов DialogField и Dialog Идея: при добавлении поля в диалоге указывать индекс поля (то бишь аналитику) В классе Dialog метод addField() X++: DialogField addField(
int type,
FieldLabel label = '',
FieldHelp help = '',
ArrayIdx idx = 0 //modified for ArrayFields
)
{
DialogField DialogField;
fields += 1;
DialogField = new DialogField(this,type,fields);
this.addCtrlDialogField(dialogField.name());
// dialogField.init(this); //standard
dialogField.init(this, idx);//modified for ArrayFields
if (label)
dialogField.label(label);
if (help)
dialogField.helpText(help);
this.addDialogClass(dialogField);
return dialogField;
}X++: //void init(Dialog dialog)//standard void init(Dialog dialog, ArrayIdx idx=0)//Modified for ArrayFields { .... //Added for ArrayFields --> if((idx)&&(idx<=arraysize)) { f = idx; arraysize = idx; } //Added for ArrayFields <-- while (f <= arraysize) { .... } X++: d.addField(TypeId(Dimension), '', '', 1);
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
|
|
|
#11 |
|
Участник
|
Создаете свой EDT, наследуете его от SysDim. В нем создаете relation на таблицу Dimensionsс двумя значениями:
EDT_Name == Dimensions.Num <номер аналитики> == Dimensions.DimensionCode Например, для выбора Отдела создаете EDT MyDimensionDepartment с realtion: MyDimensionDepartment == Dimensions.Num 0 == Dimensions.DimensionCode Потом просто используете этот EDT при создании диалога: X++: dialogField = dialog.addField(TypeId(MyDimensionDepartment)); |
|
|
|
| За это сообщение автора поблагодарили: Gustav (5). | |
|
|
#12 |
|
Участник
|
Цитата:
Частично проблема решается созданием ArrayElements с нужными relations. НО в начале списка всегда будет первая аналитика (Отдел), какое значение Dimensions.DimensionCode ни задавай для самого EDT - такое ощущение, что значение всегда = 0. |
|
|
|
|
#13 |
|
Moderator
|
Если все делаете правильно (как советовал Peter Savintsev), то нормально создается и работает EDT для любой аналитики.
MyDimensionPurpose == Dimensions.Num 2 == Dimensions.DimensionCode Единственное, я не наследовал от SysDim.
__________________
Андрей. |
|
|
|
| За это сообщение автора поблагодарили: Qaz Qwerty (1). | |
|
|
#14 |
|
Участник
|
Сорри, ошибся. Действительно, надо наследовать не от SysDim, а от SysGroup. Для SysDim используется своя lookup-форма, которая не очень корректно работает в данном случае.
|
|
|
|
| За это сообщение автора поблагодарили: Qaz Qwerty (1). | |
|
|
#15 |
|
Участник
|
Спасибо!!! Всё получилось
|
|
|