Добрый день!

Подскажите, пожалуйста, как массово у всех пользователей системы проставить галку в поле "Отключить интеграцию с Сontact Сentre" в разделе "Настройка параметров Webitel"?

Заранее спасибо за ответ!

Нравится

2 комментария

Добрый день,

 

Для консультации по продуктам Webitel просим обратиться в службу поддержки support@webitel.com.

 

Если возникнут дополнительные вопросы, мы будем рады помочь.

 

С уважением,

Анастасия

Anastasiia Marushenko,

спасибо за ответ! Но вопрос в том, что интеграции с Weditel нет, а значок телефона на правой панели есть, хочу массово скрыть его у всех пользователей, подскажите, как это сделать?

Показать все комментарии

Версия террасофт 3.3.0
Сервер 2008R2
MS SQL Server 2012 Express
Клиенты работают в режиме сервера терминалов.
Разместили базу на SSD диске, однако, периодически наблюдается подвисание террасофта, монитор ресурсов показывает, что в этот момент система занимается чтением/записью в папки где находятся пользовательские данные типа %appdata%\Terrasoft\3.3.0\Cash, Profiles. Отсюда вопросы:
1. Если выбрать вариант хранение профиля в БД, там будут храниться все данные из папки с пользовательскими данными, или только данные из папки Profiles? И насколько такой вариант избавит от тормозов, если профили пользователей хранятся не на SSD диске?
2. Есть ли возможность хранить папки с пользовательскими данными где-то кроме %appdata%\Terrasoft\, в более поздних версиях есть настройка в файле runsetting.xml типа UserAppDataDirectory="", моем файле runsetting.xml такой настройки - нет.

Нравится

4 комментария

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте.
1. Если выбрать хранение профиля в базе, то в таком случае туда будет помещаться только содержимое папки Profile. На предмет выигрыша в быстродействии однозначно сказать сложно. Здесь присутствует масса таких аспектов, как мощность клиентской машины, количество пользовательских настроек, фрагментация и скорость HDD, нагрузка на БД, оптимальность её структуры (например индексов) и т. д.. Этот механизм (возможность хранения профиля в разных местах) был создан скорее для возможности более гибких настроек. Например, если хранить профиль в базе, тогда пользователь не "привязан" к рабочему месту, но возрастёт нагрузка на базу.
2. В Вашей версии можно изменить только место хранения файла с настройками параметров подключения к базе (configs.xml). Параметр - UserSettingsDirectory.

Есть параметр UseCash в БД в таблице dbo.tbl_DatabaseInfo который я так понимаю отвечает за наличие кэширования ... так как у нас все работают в терминальном режиме на том же сервере, что и БД, особого смысла в размещении кэша на диске нет, тем более сейчас база находиться на SSD носителе... если я этот параметр обнулю?

Здравствуйте.
Действительно, значение поля "UseCache" определяет возможность кэширования данных. Данные кэша хранятся не в базе данных, а в директории профиля пользователя. Включённое кэширование позволяет сократить время отклика системы при однотипных действиях (например, при первом входе в раздел основная информация сохраняется в кэше и в дальнейшем минимизируется время выборки тех же данных).

Показать все комментарии
К темеhttp://www.community.terrasoft.ru/forum/topic/9456 и не только Неплохо бы добавить инструмент в админскую часть клиента для обнуления выборочных\всех профилей пользователей. Не редкая и не специфическая задача. Относится как к BPM так и к 3.х
0 комментариев
Показать все комментарии

документы, договора, счета, задачи - для всех разделов не сохраняется положения фильтра "показать за период" после перезапуска программы

Нравится

3 комментария

Добрый день, Андрей.

Открыв сервисе wnd_* для каждого из указанных разделов, проверьте свойство UseProfile для них:
установите UseProfile = True.

1607-2012-1220.png

Соответсвие сервисов разделам:

  • документы: Documents\General\Main Grid\wnd_DocumentsWorkspace
  • договора: Contracts\General\Main Grid\wnd_ContractsWorkspace
  • счета: Invoices\General\Main Grid\wnd_InvoicesWorkspace
  • задачи: Tasks\General\Main Grid\wnd_TasksWorkspace

включено не помогает :sad:

Андрей, после того, как установили параметр UseProfile, очистите также каталоги Cache и Profile, в которых хранятся временные файлы Terrasoft. По умолчанию путь: %appdata%\Terrasoft\<версия>\",109.237.82.114"

Показать все комментарии

Предлагаю решение несложной, в общем-то задачи: как сохранять и загружать профили пользователей. Скажем, нужно, чтобы один пользователь профиль настроил, а остальные эти настройки себе загрузили. Или, к примеру, существует необходимость работать с разными профилями: в одном видны такие-то поля, в другом - другие. Или... словом, был бы ключ, а дверь найдётся.

Каталог, где хранится профиль пользователя, можно получить используя свойство Connector.ProfileDirectory. В этом каталоге находится набор файлов *.dat, где и записаны настройки. Таким образом, переброска профиля сводится, в первом приближении, к копированию и перезаписи этих файлов. Стоит также принять во внимание, что при выходе из программы профили автоматически перезаписываются (сохраняются текущие настройки), поэтому после загрузки профиля следует предусмотреть отключение этой перезаписи.

Для решения задачи я создал два дополнительных действия (ActionMenuItem) в wnd_Main, назвав их amiProfileLoad и amiProfileSave с понятными пользователю заголовками. По событию OnExecute в scr_Main выполнялись следующие действия:

function amiProfileLoadOnExecute(ActionMenuItem, Sender) {
//Загрузка профиля из каталога
        var DirName = System.CreateObject('TSObjectLibrary.Value');    
        if (!(System.selectDirectory('Открыть папку, где хранится профиль', '', DirName))) {
           return;     
        }
        var SelectedDirName = new String(DirName.Value);//Здесь имя выбранной папки
        var ProfileDir = new String(Connector.ProfileDirectory);//Здесь имя папки, где хранится профиль
        ProfileDir = ProfileDir.slice(0, ProfileDir.length-1);
        //Копируем из этой папки всё в папку профиля
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        fso.CopyFolder (SelectedDirName, ProfileDir);
        ShowInformationDialog('Профиль загружен успешно. \nЧтобы изменения вступили в силу, необходимо перезапустить программу.')
        Self.Attributes('ProfileLoaded') = true; //Чтобы при выходе загруженный профиль не затирался текущим
}

function amiProfileSaveOnExecute(ActionMenuItem, Sender) {
// Выгрузка профиля в каталог каталога  
    var DirName = System.CreateObject('TSObjectLibrary.Value');
        if (!(System.selectDirectory('Открыть папку, куда следует поместить текущий профиль', '', DirName))) {   
           return;     
        }
        var SelectedDirName = new String(DirName.Value);//Здесь имя выбранной папки
        var ProfileDir = new String(Connector.ProfileDirectory);//Здесь имя папки, где хранится профиль
        ProfileDir = ProfileDir.slice(0, ProfileDir.length-1);
        //Копируем из этой папки всё в папку профиля
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        fso.CopyFolder (ProfileDir, SelectedDirName);
        ShowInformationDialog('Профиль сохранён в каталоге \n'+SelectedDirName);       
}

Чтобы при выходе загруженный профиль не затирался текущим, надо в функции того же скрипта поставить проверку значения присвоенного атрибута:

function CloseMainForm() {
        Timer.IsEnabled = false;
        Self.Attributes('CallCentreClientWindow') = null;
        CollectGarbage(0.001);
        WinCache_Clear();
        ReleaseMailUtils();
        wndWorkspace.Window = System.EmptyValue;
        if (!Self.Attributes('ProfileLoaded')){//--Добавлено         
                var Keys = (new VBArray(Main.Workspaces.Keys()).toArray());
                for (var i in Keys) {
                        var Key = Keys[i];
                        var Workspace = Main.Workspaces(Key);
                        if (Workspace) {
                                Services.SerializeItemToProfile(Workspace, EmptyStr);
                        }
                }
        } else {//--Добавлено
                Self.Attributes('ProfileLoaded') = false;//--Добавлено
        }//--Добавлено
        ClearTemporaryFiles();
        Self.Attributes.Clear();
}

Предлагаемое решение не обладает "дуракоустойчивостью", и если пользователь при загрузке выберет "не тот" каталог, то его содержимое всё равно будет пернесено в каталог профиля. Благо, на нормальной работе это, по-видимому, не отразится, так как старый профиль не будет затёрт.

Нравится

Поделиться

2 комментария

Я решил эту задачу проще - состряпал дополнительный "сервис". Всё ясно по исходникам, просто как грабли. wnd_Main и scr_Main приведены для примера встраивания сей поделки в общий интерфейс.Можно сделать красивей, но лень...cloneprofile.zip

"Никиреев Сергей" написал:Можно сделать красивей, но лень

Спасибо, Сергей, за выложенные исходники.
Сделал красивей + кое-что подрихтовал (как для себя сделал), прикрепил в архиве сервисы.

Внешний вид:
внешний вид

Вызов:

function amiCloneProfileOnExecute(ActionMenuItem, Sender) {
	if ((Connector.CurrentUser.IsAdmin || Connector.CurrentUser.IsSysAdmin)) {
	 	var UsersWindow = Services.GetNewItemByUSI('wnd_CloneProfile');
		UsersWindow.Prepare();
		UsersWindow.Show();
	}
	else {
	   ShowWarningDialog('У Вас нет прав для выполнения этого действия!');
	}
}

У меня работает на версии 3.4.1.

Показать все комментарии