19.12.2002, 07:27 | #1 |
Участник
|
Проблемы в dialog
Имеется контрол в диалоге типа Dimension, надо по какому-то условию делать эти контролы недоступны.
метод: PHP код:
Есть у кого-нибудь какие мысли? |
|
19.12.2002, 16:11 | #2 |
Участник
|
Может попробовать поработать с dialog.formRun() ? Вытащить соответствующий formControl и сделать с ним всё, что нужно...
|
|
20.12.2002, 15:58 | #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 я такой функции не нашел :-( |
|
20.12.2002, 17:46 | #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 |
|
20.12.2002, 18:24 | #5 |
Участник
|
Размер массива в ЕДТ dimof()
|
|
20.12.2002, 18:28 | #6 |
Участник
|
Да.
DimOf |
|
23.12.2002, 12:03 | #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 |
|
16.01.2003, 16:43 | #8 |
Участник
|
Привет Алексей!
Dimension вставлять в группу. И изменять значение для группы. Это вариант решения проблемы. А вот почему - я не знаю. |
|
11.10.2007, 16:32 | #9 |
Участник
|
|
|
11.10.2007, 17:37 | #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.10.2007, 17:46 | #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.10.2007, 12:38 | #12 |
Участник
|
Цитата:
Частично проблема решается созданием ArrayElements с нужными relations. НО в начале списка всегда будет первая аналитика (Отдел), какое значение Dimensions.DimensionCode ни задавай для самого EDT - такое ощущение, что значение всегда = 0. |
|
12.10.2007, 14:37 | #13 |
Moderator
|
Если все делаете правильно (как советовал Peter Savintsev), то нормально создается и работает EDT для любой аналитики.
MyDimensionPurpose == Dimensions.Num 2 == Dimensions.DimensionCode Единственное, я не наследовал от SysDim.
__________________
Андрей. |
|
|
За это сообщение автора поблагодарили: Qaz Qwerty (1). |
12.10.2007, 14:46 | #14 |
Участник
|
Сорри, ошибся. Действительно, надо наследовать не от SysDim, а от SysGroup. Для SysDim используется своя lookup-форма, которая не очень корректно работает в данном случае.
|
|
|
За это сообщение автора поблагодарили: Qaz Qwerty (1). |
12.10.2007, 16:54 | #15 |
Участник
|
Спасибо!!! Всё получилось
|
|