Цитата:
Сообщение от
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 ) ;
...
}