11.12.2006, 14:07 | #1 |
Участник
|
Аналитика в DS
Добрый день!
Необходимо, в зависимости от выбраных параметров, либо разрешать пользователю указывать финнансовую аналитику на форме, либо нет. Для первой аналитики запретить выбор помогает: Sales_ds.object(fieldNum(SalesTable, Dimension)).allowEdit(false); Как, для остальных двух аналитик сделать точно такое же? Заранее спасибо. |
|
11.12.2006, 14:09 | #2 |
Участник
|
Если аналитики сделаны автогруппой - то Нет.
Если аналитики вытащить на форму по одной - то Да, но тогда пропадет возможность авторасширения группы. |
|
11.12.2006, 14:16 | #3 |
Участник
|
Ну, вообще-то не совсем так.
X++: CustTable_ds.object(fieldNum(CustTable, Dimension)).allowEdit(false); CustTable_ds.object(fieldId2Ext(fieldNum(CustTable, Dimension), 2)).allowEdit(false); CustTable_ds.object(fieldId2Ext(fieldNum(CustTable, Dimension), 3)).allowEdit(false); |
|
11.12.2006, 14:20 | #4 |
Участник
|
Цитата:
Да, здесь про датасорс. Извините. Был не прав. kashperuk, а есть ли способ добраться до контрола не первой аналитики? Например, как добраться до контрола третьей аналитики (стандартно Цель)? |
|
11.12.2006, 14:26 | #5 |
Участник
|
Ну, к примеру, вот так.
X++: Dimension.controlNum(3).enabled(false); |
|
|
За это сообщение автора поблагодарили: mazzy (20), Red Stranger (1), hated8 (1). |
11.12.2006, 14:28 | #6 |
Участник
|
Можно конечно и без AutoDeclaration, но мне так меньше нравится. - преобразования нужны да и вообще.
X++: FormGroupControl gr;
;
gr = element.control(control::Dimension);
gr.controlNum(3).enabled(false); |
|
|
За это сообщение автора поблагодарили: Hans (1). |
11.12.2006, 14:41 | #7 |
Участник
|
|
|
11.12.2006, 14:43 | #8 |
Участник
|
В крайнем случае можно и так
X++: element.control(control::Dimension+3).enabled(false);
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
11.12.2006, 14:45 | #9 |
Участник
|
Цитата:
Чувствую, что еще многого не знаю в Аксапте... А тогда можно попросить объяснить суть этого хакерского метода? Он всегда будет работать? Почему +3, а не +2? |
|
11.12.2006, 14:47 | #10 |
Участник
|
В частности, что в действительности означает/делает/возвращает конструкция control::myControl ?
Я всегда думал, что конструкция element.control(control::Dimension) является своеобразным макросом, который компилятор обрабатывает специальным образом. А оказывается конструкция control::Dimension имеет самостоятельное значение. Так что это за конструкция и есть ли у нее аналоги? Например, есть ли method::myMethod или что-нибудь в этом духе? |
|
11.12.2006, 14:54 | #11 |
Участник
|
control:imension - это идентификатор (id) контрола группы. При добавлении автогруппы все поля, входящие в нее, получают идентификатор, начиная с id+1 и т.д. Т.е., если это поле-массив, то id+3 - обращение к контролу 3-го элемента этого массива
__________________
Axapta v.3.0 sp5 kr2 |
|
11.12.2006, 15:02 | #12 |
Участник
|
Это уникальная конструкция или есть подобные?
|
|
12.12.2006, 11:17 | #13 |
Administrator
|
Я, конечно, подозреваю, что все участники обсуждения об этом и так знают, но, так сказать, для будущих поколений, думаю, будет не лишним об этом упомянуть.
Если Вы блокируете редактирование для контрола на форме, то вы именно блокируете контрол. Не стоит забывать при этом, что в Аксапте есть такая фича, как пользовательская настройка форм. С помощью нее пользователь может добавлять на форму контролы, в которых будут отображаться произвольные поля датасорсов этой формы (вообще-то эта возможность контролируется свойством AllowAdd у поля датасорса; по умолчанию оно установлено в Restricted, что означает, что если поле было добавлено на форму при разработке, то пользователь может добавить его еще раз). Так вот, если Вы заблокируете редактирование контрола, но при этом по-прежнему будете выводить его на форму, пользователь вполне сможет зайти в настройку формы и добавить еще один контрол, который будет привязан к тому же самому полю. Редактировать этот контрол можно будет свободно, так как редактирование поля разрешено. В общем, вывод: не блокируйте контролы, так как в этом смысла особого нет (впрочем, давайте так, если вы считаете иначе, приведите пример ), блокируйте поля в датасорсе. control - это перечисление, которое автоматически создается при компиляции формы (почти так же, как, например, element или FormDataSource объекты *_ds). Вообще говоря, особой гарантии, что control:: Dimension+1 будет соответствовать полю с аналитикой департамент, нет, хотя обычно это так. В общем, метод действительно хакерский, хотя другого, по-моему, нет. mmm, а может подробнее про задачу расскажете? Настройку проверки аналитики для счетов ГК использовать там точно нельзя?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: mazzy (5), glibs (2), lev (5), Red Stranger (1). |
12.12.2006, 11:31 | #14 |
Участник
|
Да, спасибо - тему тогда эту наверное нужно перенести в Полезное.
Вот еще ссылочка в тему: http://www.systomatics.com/Blog/009P...lay/blog09.htm |
|
12.12.2006, 11:36 | #15 |
Участник
|
2 Maxim Gorbunov
Истину глаголишь. Права доступа на поля формы.
__________________
Axapta v.3.0 sp5 kr2 |
|
12.12.2006, 18:51 | #16 |
Модератор
|
Мда... в 4ке это есть в стандарте...
С Уважением, Георгий |
|
13.12.2006, 10:16 | #17 |
Administrator
|
Георгий, что именно?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: glibs (7). |
13.12.2006, 17:33 | #18 |
Участник
|
Всем огромное спасибо!
Задача большая, так что расписывать наверное не буду, но точно могу сказать, что настройку проверки аналитики не прикрутишь! |
|
Теги |
аналитика, редактирование аналитик |
|
|