Для нормальной работоспособности приложения необходимо, чтобы пул был запущен под пользователем Windows, профиль которого ни в коем случае не должен быть временным.
К тому, что профиль пользователя Windows стал временным могло привести ряд причин - это может быть и проблема с реестром, которая не позволила создать каталог профилей, может быть неправильная настройка групповых политик или обновление Windows, которое может приводить к подобной ошибке.
Для решения проблемы с приложением Creatio, если профиль пользователя Windows, под которым запускается пул, временный, необходимо или исправить это (сделать так, чтобы профиль перестал быть временным), или создать нового пользователя Windows, под которым и запустить пул.
Обратите внимание, что возникновение проблемы с временным профилем пользователя Windows может быть и на Windows 10.
Доброго времени суток. Подскажите как правильно подменить профиль в разделе? Замещал ф-ии getActiveViewSettingsProfileKey
и getProfileKey. Нужный профиль подгружает, но записи не отображаются. В настройках колонок отображаются нужные, и только после сохранения появляется список записей.
В мастере раздела настраивается реестр и сохраняется под другим ключем в SysProfileData.
Первоначальная настройка реестра в моем случае может происходить только в мастере раздела, поэтому стоит задача подменять профиль при определенных условиях, чтобы реестр записей имел другой вид.
Попробуйте при инициализации Вашего раздела получить значение нужного профиля по коду из базы и установить полученное значение в атрибут "Profile" модели раздела. Далее при инициализации колонок реестра (метод initQueryColumns схемы GridUtilitiesV2) вызывается метод getProfileColumns, который должен получить из данного атрибута корректный набор колонок.
Обратите внимание, что перед установкой значения в атрибут "Profile" его необходимо декодировать в объект с помощью Terrasoft.decode.
Попробуйте при инициализации Вашего раздела получить значение нужного профиля по коду из базы и установить полученное значение в атрибут "Profile" модели раздела...
Я использую getActiveViewSettingsProfileKey и getProfileKey, которые возвращают нужный мне ключ, и в Profile попадает нужный мне профиль. Метод getProfileColumns возвращает нужные колонки.
Проблема в columnBindings. Это "Объект, описывающий связи колонок реестра со свойствами или методами модели". И там хранятся связи изначальных колонок. Метод getRow() ("Метод получения данных модели через механизм привязки") пытается получить колонки из columnBindings по названиям колонок из профиля, который я подгружаю. Естественно они не совпадают.
Проблему частично решает метод reloadGridColumnsConfig, если вызвать его в getActiveViewGridSettingsProfile. И тогда в columnBindings попадают нужные связи. Но если зайти в настройки колонок и, не сохраняя их, нажать отмену - раздел не грузится, а в columnBindings снова попадают старые связи.
Олег, свойство columnBindings формируется по конфигурации колонок вью-модели схемы раздела, которая генерируется только один раз в момент инициализации. Поэтому для получения актуальных связей придётся перегенерировать вью-модель. Другого решения я, к сожалению, не нашёл:
init: function(){if(/* условие, по которому необходимо подменять профиль */){this.viewModel= null;}this.callParent(arguments);}
Таким способом решить проблему у меня не вышло. Но благодаря Вам я пошел в нужном направлении (по цепочке генерации вью-модели). В итоге вышел на getProfileKey() в SectionModuleV2, что проблему решило. Спасибо огромное!
Для того, чтобы произвести копирование профиля, который хранится в базе данных, для всех пользователей Вам необходимо:
1) Выгрузить профиль из базы данных в локальную директорию.
2) Скопировать директорию с выгруженым профилем на все компьютеры, на которые необходимо копировать профиль. Директорию Profile следует поместить по пути C:\Documents and Settings\[имя пользователя ОС]\Application Data\Terrasoft CRM\[версия приложения.
3) Далее необходимо загрузить профиль в базу данных для каждого пользователя.
Будем рады ответить на все Ваши дополнительные вопросы.
Копировать профиль можно и непосредственно в базе данных путем копирования строк таблицы tbl_ProfileData.
Вам необходимо сгенерировать новый ID с помощью команды select newid() и присвоить его новой строке таблицы. Значение в колонке UserID необходимо скопировать из соответствующей строки таблицы tbl_AdminUnit.
Будем рады ответить на все Ваши дополнительные вопросы.
INSERT INTO tbl_ProfileData
SELECT NEWID() AS ID, 'ID полязователя из AdminUnit кому копируем' AS UserID, ServiceID, XMLData, [Key]
FROM tbl_ProfileData AS tbl_ProfileData_1
WHERE (UserID ='ID полязователя из AdminUnit с кого копируем')