AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.01.2009, 12:54   #7  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Можно попробывать следующее решение :
В классе SysSetuFormRun пишем метод setAccessDimension(), код которого приведен ниже и вызываем его в методе init() того же класса, аналогично тому как описал petergunn
X++:
void setAccessDimension(SysDimension    _sysDimension, AccessType   _accessType = AccessType::View)
{
    FormBuildDataSource formDataSource;
    FormControl         formControl;
    SysDictTable        sysDictTable;
    SysDictField        sysDictField;
    int                 dimArrayIdx = Dimensions::code2ArrayIdx(_sysDimension);
    FormBuildDesign     design = this.form().design();
    Counter             curControl;
 
    void setSecurityLevelOnDimensions(FormBuildControl _control)
    {
        int                         currentControl;
        FormBuildStringControl      stringControl;
        SysDictField                dictField;
        if (_control.isContainer())
        {
            for(currentControl = 1; currentControl <= _control.controlCount(); currentControl++)
            {
                setSecurityLevelOnDimensions(_control.controlNum(currentControl));
            }
        }
        else if (_control.handle() == classNum(FormBuildStringControl))
        {
            stringControl   = _control;
            if (stringControl.dataField())
            {
                formDataSource  = this.form().dataSource(stringControl.dataSource());
                dictField       = new SysDictField(formDataSource.table(), stringControl.dataField());
 
 
                if (dictField.typeId() == extendedTypeNum(Dimension) && dictField.arrayIndex() == dimArrayIdx)
                {
                    formControl    = this.control(stringControl.id());
                    formControl.userSecurityLevel(_accessType + 1);
                }
            }
        }
    }
    ;
 
    if (design)
    {
        for(curControl = 1; curControl <= design.controlCount(); curControl++)
        {
            setSecurityLevelOnDimensions(design.controlNum(curControl));
        }
    }
}
Преимущество или недостаток данного способа заключается в том, что если после вызова init() формы, написать код, который выставляет в allowEdit(true) для поля типа Dimension, то в отличии от способа предложенного petergunn (пример, вы привели сами - строки журнала ГК), аналитика все равно останется только с тем доступом, который вы установили.
За это сообщение автора поблагодарили: ZVV (1), Sada (3).
Теги
финансовая аналитика

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Аксапта 4.0 - иерархия фин. аналитик. slava09 DAX: Функционал 12 04.07.2006 10:04
Убрать одну из аналитик в отчете DTD DAX: Программирование 2 26.01.2006 16:52
Запрет на редактирование аналитик Deep Dreamer DAX: Программирование 10 17.06.2005 11:52
Ограничение на количество фин. аналитик sever DAX: Программирование 0 13.01.2004 08:03
Совместная работа пользователей на одном рабочем месте Pavlo AKA Panok DAX: Программирование 9 26.11.2003 12:53

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:57.