Показать сообщение отдельно
Старый 26.08.2005, 18:42   #2  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Найти нужную запись в таблице SysLastValue и скопировать найденную запись в новую запись, изменив при этом значение поля userId на код нужного юзера.

Скорее всего, это можно сделать только программно, т.к. в поле value содержится контейнер.


Вот пример, который копирует ВСЕ настройки от одного пользователя другому.


PHP код:
static void main(Args _args)
{
    
SysLastValue    sysLastValue;
    
SysLastValue    newSysLastValue;
    
UserId          origUser;
    
UserId          destUser;
    
dialog          dialog = new Dialog("Копирование настроек пользователей");
    
DialogField     f_origUser,f_destUser;
    ;
    
f_origUser dialog.addField(typeid(userId), "Имя пользователя, от которого копировать настройки:");
    
f_destUser dialog.addField(typeid(userId), "Имя пользователя, которому копировать настройки:");
    if (
dialog.run())
    {
        
origUser f_origUser.value();
        
destUser f_destUser.value();

        
delete_from sysLastValue where sysLastValue.userId == destUser;

        
ttsbegin;
        while 
select sysLastValue where sysLastValue.userId == origUser &&
            !
sysLastValue.isKernel
        
{
            
newSysLastValue.clear();
            
newSysLastValue.userId destUser;
            
newSysLastValue.recordType sysLastValue.recordType;
            
newSysLastValue.elementName sysLastValue.elementName;
            
newSysLastValue.designName sysLastValue.designName;
            
newSysLastValue.company sysLastValue.company;
            
newSysLastValue.value sysLastValue.value;
            
newSysLastValue.insert();
        }
        
ttscommit;
        
info("Настройки скопированы.");
    }


Для копирования настроек фильтра нужно модифицировать этот код:
1) определить к какому объекту (форме или отчету) относится фильтр
2) узнать имя этого объекта
3) и модифицировать код так:
PHP код:
delete_from sysLastValue where sysLastValue.userId == destUser &&
            
sysLastValue.RecordType == <Тип объекта> &&
            
sysLastValue.ElementName == <Имя объекта>

;

ttsbegin;
while 
select sysLastValue where sysLastValue.userId == origUser &&
            !
sysLastValue.isKernel &&
            
sysLastValue.RecordType == <Тип объекта> &&
            
sysLastValue.ElementName == <Имя объекта
За это сообщение автора поблагодарили: Atar (2).