В конечном итоге механизм по переносу настроек + избранного от одного пользователя другому приобрел вид:
X++:
server static void UserFavoritesAndSettingsTransfer(Args _args)
{
SysPersonalization FromSysPersonalization;
SysPersonalization ToSysPersonalization;
UserId FromUserId='FromUser';// от кого
UserId ToUserId='ToUser'; // кому
SysLastValue sysLastValue;
;
ttsbegin;
// Удаляем Избранное пользователю ToUserId
while select forupdate ToSysPersonalization
where ToSysPersonalization.ElementType==UtilElementType::UserMenu
&& ToSysPersonalization.UserId==ToUserId
{
ToSysPersonalization.doDelete();
}
// Дублируем избранное
while select FromSysPersonalization
where FromSysPersonalization.UserId==FromUserId
&& FromSysPersonalization.ElementType==UtilElementType::UserMenu
{
ToSysPersonalization.data(FromSysPersonalization);
ToSysPersonalization.UserId=ToUserId;
ToSysPersonalization.doInsert();
}
// Удаляем настройки у ToUserId
delete_from sysLastValue
where sysLastValue.UserId == ToUserId;
// пишем настойки пользователю ToUserId такие же как у FromUserId
while select sysLastValue
where sysLastValue.UserId == FromUserId
{
sysLastValue.UserId = ToUserId;
sysLastValue.insert();
}
ttscommit;
}
Проверено на Ax 4.0.