Показать сообщение отдельно
Старый 25.12.2008, 17:53   #9  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
smmBusRelTable
Цитата:
Сообщение от mdconsult Посмотреть сообщение
Да, кстати, не указал, что меня интересует подобное разграничение на таблицу smmBusRelTable. Чтобы "Деловые отношения" модуля CRM менеджеры просматривали все, а редактировали только свои.
Если речь идет о форме smmBusRelTable то тогда понятно о каком поле "Ответственный" шла речь - smmBusRelTable.MainContact, код сотрудника из EmplTable? В таком случае необходимо модифицировать метод active() источника данных smmBusRelTable.

Можно предварительно сохранить в переменную код текущего сотрудника при открытии формы:
ClassDeclaration формы:
X++:
class FormRun extends ObjectRun
{
    ...
    EmplId  currentContactId ;
    ...
}
в методе init() формы:
X++:
void init()
{
    ...
    currentContactId = smmUtility::getCurrentContact() ;
    ...
}
Если речь идет о DAX 4.0 и предположения о том что пользователь может править "своих" (при условии что связь userId->EmplId определена) клиентов и тех у которых поле 'Ответственный' не задано (иметь возможность сделать ранее введенную запись 'своей') то примерно так:

X++:
#Admin
int active()
{
    boolean allowEdit ;

    ...
    allowEdit = UserInfoHelp::userInUserGroup( curUserId(), #AdminUserGroup ) || // администраторы могут править все?
                ( currentContactId && ( smmBusRelTable.MainContact == currentContactId
                                        // если возможность править записи с неуказанным ответственным не нужна - закоментировать строку ниже
                                        || !smmBusRelTable.MainContact                 
                ) ) ;
    smmBusRelTable_ds.allowEdit( allowEdit ) ;
    ...
}
В Axapta 3.0 по-моему при открытии формы требовалось что бы пользователь был связан с сотрудником (связь userId->EmplId будет гарантирована), поэтому часть условия (currentContactId) можно опустить:
X++:
#Admin
int active()
{
    boolean allowEdit ;

    ...
    allowEdit = UserInfoHelp::userInUserGroup( curUserId(), #AdminUserGroup ) || // администраторы могут править все?
                ( smmBusRelTable.MainContact == currentContactId
                  // если возможность править записи с неуказанным ответственным не нужна - закоментировать строку ниже
                  || !smmBusRelTable.MainContact                 
                ) ;
    smmBusRelTable_ds.allowEdit( allowEdit ) ;
    ...
}
За это сообщение автора поблагодарили: mdconsult (1).