Раздел [Журнал изменений БД] доступен только для пользователя с правами системного администратора, если же Вам необходимо отображать данный раздел для всех пользователей, то Вам необходимо в TSAdmin.exe найти скрипт scr_Main и закомментировать строку, как показано ниже.

//amiToolsDatabaseLog.IsVisible = IsAdmin;

После этого данный раздел будет доступен всем пользователям.

Чтобы для конкретной группы пользователей разрешить доступ к журналу изменений, в скрипте scr_Main закомментируйте строку:
//amiToolsDatabaseLog.IsVisible = IsAdmin;

В скрипте scr_Main реализуйте следующий код:
 
function IsUserInGroupExists(UserID, GroupName) {
         var Dataset = GetSingleItemByCode(UserInGroupDatasetUSI);
         ApplyDatasetFilter(Dataset, 'UserID', UserID, true);
         Dataset.Open();
         try {
                   while (!Dataset.IsEOF) {
                            if (Dataset.Values('GroupName') == GroupName) {
                                      return true;
                            }
                            Dataset.GotoNext();
                   }
         } finally {
                   Dataset.Close();
         }
         return false;
}

amiToolsDatabaseLog.IsVisible = IsAdmin || IsUserInGroupExists(Connector.CurrentUser.ID, 'Менеджеры');;

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

Нравится

Поделиться

1 комментарий

Есть более изящное решение этой задачи.
В scr_Access (по крайней мере, в 3.3.0) есть функция GetIsCurrentUserHas(RecordAdminUnitID), которая определяет вхождение искомого объекта системы (например, группы пользователей) в список объектов системы, с которыми связан текущий пользователь системы.
Входящий параметр - ID объекта системы (группы пользователей) из tbl_AdminUnit. Функция возвращает TRUE или FALSE.
Таким образом, вхождение пользователя в группу можно определить всего двумя строками:

var UserGroup = /* ID группы пользователей из tbl_AdminUnit*/;
var CurrentUserInGroup = GetIsCurrentUserHas(UserGroup);
Показать все комментарии

Доброго времени суток,
При настройке репликации столкнулся с следующей проблемой:
Утилита репликации (RepOffline.exe) при попытке подключения к БД выдаёт ошибку
"[DBNETLIB][ConnectionOpen(InvalidInstance()).] Недопустимое подключение"
Утилита запускается на том же компьютере где запущен MS SQL5. В настройках для входа на сервер пробовал использовать данные как Windows, так и Террасовтовской БД.
Предварительные операции по переносу *.exe,*.dll и *.sql фаилов, библиотек и регистрации сетевых библиотек согласно "Руководству по репликации" выполнены.

Нравится

29 комментариев

Здравствуйте!
Уточните пожалуйста Вы настраиваете или запускаете уже готовую репликацию? Потому как согласно документации RepOffline.exe - это "утилита репликации", настройка производится RepWizard.exe и SetOffline.exe

Добрый день! Уточните, пожалуйста, настраивали ли Вы строку соединения с помощью утилиты SetOffline.exe?

> Уточните пожалуйста Вы настраиваете или запускаете уже готовую репликацию?
Настраиваю.
> Потому как согласно документации RepOffline.exe - это "утилита репликации", настройка производится RepWizard.exe и SetOffline.exe
При запуске RepWizard.exe выдаёт ошибку
"Connection string is not adjusted.
Run SetOffline.exe to set up connection parameters."

*Утилита которая выдаёт ошибку указанную в стартовом сообщении - SetOffline.exe
Ошибка появляется после "Настроить -> Поставщик данных: "Microsoft OLE DB Provider for SQL Server" -> Выбор сервера -> логин//пароль пользователя -> Выбор БД на сервере"

Влияет ли эта ошибка на дальнейшую работу утилиты SetOffline.exe? Если дальнейшая работа возможна, то необходимо перенастроить строку соединения с базой на правильную.

Так ошибку какая утилита выдает? SetOffline.exe? Опубликуйте скриншот пожалуйста.

> Влияет ли эта ошибка на дальнейшую работу утилиты SetOffline.exe?
Влияет. Дальнейшая работа утилиты невозможна.
> Так ошибку какая утилита выдает? SetOffline.exe?
да, SetOffline.exe.
> Опубликуйте скриншот пожалуйста.
http://img377.imageshack.us/img377/2972/reperrormg0.png

Ошибка появляется при выборе БД (непосредственно при запросе списка). Если подключать БД вручную эта же ошибка возникает при проверке подключения:
http://img152.imageshack.us/img152/9238/reperror2ux1.png

Здравствуйте!
1. Какого поставщика данных Вы выбираете?
2. Это сервер или клиентская машина?
3. Сервер COMP доступен? К нему можно подключиться?
4. Какая версия MSSQL? Опубликуйте результат select @@version

> 1. Какого поставщика данных Вы выбираете?
Microsoft OLE DB Provider for SQL Server
> 2. Это сервер или клиентская машина?
Это сервер.
> 3. Сервер COMP доступен? К нему можно подключиться?
Да, доступен. На нем и запущена утилита.
> 4. Какая версия MSSQL? Опубликуйте результат select @@version
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
Oct 14 2005 00:33:37
Copyright (c) 1988-20
05 Microsoft Corporation
Express Edition on Windows NT 5.1 (Build 2600: Service Pack 3)

Добрый день!
Существует проблема при подключении к MSSQL2005 через поставщика Microsoft OLE DB Provider for SQL Server. Необходимо использовать SQL Native Client.

Вы уверены, что имя сервера MSSQL именно COMP? А не к примеру COMP\SQLEXPRESS?

> Вы уверены, что имя сервера MSSQL именно COMP? А не к примеру COMP\SQLEXPRESS?

Выбирал из предложенного в списке.

> Существует проблема при подключении к MSSQL2005 через поставщика Microsoft OLE DB Provider for SQL Server. Необходимо использовать SQL Native Client.

Если я правильно понял, то в дальнейших при использовании SQL Native Client поле "Источник данных" должно оставаться пустым (только в этом случае проверка подключения удачна (http://img364.imageshack.us/img364/1773/reperror3eh5.png)).
Однако в дальнейшем при запуске RepWizard.exe -> "Настройка репликации на центральной точке" не удаётся создать бэкап базы:
http://img261.imageshack.us/img261/4797/reperror4ab1.png
На диске C: свободно 32 Gb, размер БД - 350 Mb.

upd: при выборе сервера "COMP\SQLEXPRESS" успешно подключилось и выполнило бэкап. Спасибо.

При дальнейшем использовании утилиты RepWizard.exe на этапе подготовки БД возникла следующая проблема:
http://img233.imageshack.us/img233/9682/reperror5eu7.png

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

* На всех папках (временных БД, \Bin, папки БД и бэкапа БД) на уровне файловой системы стоит полный доступ для всех пользователей, а также непосредственно для пользователя под которым осуществляется запуск утилиты.

С доступом на папки это не связано. Попробуйте при подключении указать не SQL Native Client как поставщика данных, а Microsoft OLE DB Provider for SQL Server.

При указании "SQL Native Client", параметры подключения для SetOffline.exe:
Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TOTAL_NEW;Application name="SetOffline.exe"
При дальнейшей настройке через RepWizard.exe не удаётся создать бэкап:
http://img261.imageshack.us/img261/4797/reperror4ab1.png

Максим, можно сейчас выполнить хранимую процедуру вручную, через MS Management Studio таким образом:

exec rep_PrepareClearDatabase 'cm_Clear'

Выполнять на рабочей базе

>При указании "SQL Native Client", параметры подключения для SetOffline.exe:
>Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TOTAL_NEW;Application name="SetOffline.exe"

В этой строке нет параметра Data_Source. Значит, что в настройках соединения не указан сервер, на котором находится указанная база. Надо указать.

Можно заменить файл в папке скриптов подготовки репликации 001.CandS.sql на тот, что во вложении.

Выполнял операции в обратном порядке, т.е. вначале заменил 001.CandS.sql, потом добавил указание сервера (теперь строка SetOffline.exe:
Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TOTAL_NEW;Data Source=COMP\SQLEXPRESS;Application Name=SetOffline.exe;Application name="SetOffline.exe" ), далее выполнил процедуру exec rep_PrepareClearDatabase 'cm_Clear', теперь выдаёт следующую ошибку:
http://img373.imageshack.us/img373/7797/reperror6en0.png

Во вложении сервис скрипта. Его нужно загрузить через TSAdmin.exe, открыть там же на редактирование и нажать F9 - он запустится на выполнение и для полей, на которых есть внешний ключ, уберет признак "Обязательное". После выполнения нужно снова запустить мастер создания схемы репликации.

Лог работы TSAdmin'a во вложении.
Результат работы RepWizard'a - ошибка идентичная предыдущей (http://img373.imageshack.us/img373/7797/reperror6en0.png).

Доброго дня!
Весьма странный лог в Вашем прикрепленном файле. Вот последние строчки функции, которая реализована в выложенном мною скрипте:

	Log.Write(1, 'Services without license:'); // - вывод списка таблиц, которые не сохранились в следствие отсутствия лицензии на модуль
	WriteArrayToLog(ServicesHasNoLicenseArray);
	Log.Write(1, 'Services with error while saving:');  // - вывод списка таблиц, которые не сохранились в следствие ошибок
	WriteArrayToLog(ServicesHasSaveError);
	Log.Write(1, 'Process finished'); // - последняя строка

Как отсюда видно, в конце лога работы моего скрипта должно быть как минимум три строчки такого содержания:
Services without license:
Services with error while saving:
Process finished'

В логе, который Вы прикрепили последние строчки выглядят так:
[08.12.23 16.31.27.218] (E) tbl_WorkflowItem
[08.12.23 16.31.27.718] (W)
[08.12.23 16.31.27.750] (E) tbl_Account
[08.12.23 16.31.29.578] (W) Process stopped

Как видно, они кардинально отличаются от моего скрипта. Я на всякий случай перепроверил содержимое архива, загрузил себе сервис скрипта, который там лежит и запустил - все выполнилось без проблем. Вероятно, Вы запустили на выполнение не тот скрипт. Проверьте еще раз все. Если проблема не обнаружена - предоставьте скриншоты загруженного и открытого скрипта в TSAdmin, а так же полный исходный текст скрипта.

Действительно запускал не тот скрипт.
Лог загруженного и скрин работы RepWizard'a в прикрепленных.

Судя по ошибке в логе Вы на одном сервере делали бэкап базы и потом поднимали его на другом. При этом пользователи в базе переносятся, а пользователи сервера с пользователями базы не связываются. Для решения проблемы нужно выполнить в SQL Management Studio следующее:

exec sp_change_users_login 'Update_One', 'fkeys', 'fkeys'

после этого запустить скрипт еще раз

Доброго дня!
Еще один вариант решения проблемы - распаковать прикрепленный архив в папку с репликацией(в нем обновленные скрипты подготовки репликации). При использовании этих скриптов проблем не возникает.

> Для решения проблемы нужно выполнить в SQL Management Studio следующее:
> exec sp_change_users_login 'Update_One', 'fkeys', 'fkeys'
> после этого запустить скрипт еще раз
Это помогло. Настройка подготовки репликации на сервере прошла успешно. Спасибо.

Здравствуйте!
У нас та же проблема у пользователя при обычном входе в Terrasoft, хотя с другого компьютера этот пользователь заходит нормально. Иногда помогает перезагрузка компьютера.

Здравствуйте.
Вопросом "пускать или не пускать" пользователя в систему занимается сервер СУБД. Если откуда-то пользователь заходит, то с его учётной записью всё нормально. В этой ситуации нужно смотреть на конечного клиента (рабоче место). Если используются конкурентные лицензии, то параметры подключения должны быть настроены точно так же, как и на той машине, где формировался запрос на лицензии. Например, если на машине, где был сформирован запрос был указан сервер БД через IP-адрес, то и на остальных клиентах точно также должен быть указан IP сервера. Если было указано имя, то и везде тоже должно быть указано имя. Если эти рекомендации не помогут, обратитесь, пожалуйста, в службу технической поддержки для более оперативного решения проблемы. Вероятнее всего понадобится удалённый доступ.
С уважением, Terrasoft Support Team.

Спасибо! Вместо IP-адреса задал имя сервера и помогло.

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

версия terrasoft crm x25 3.2.0.33 для Oracle
Создал раздел согласно документации с курсов.
Что необходимо сделать для обеспечения возможности администрирования прав доступа для данного раздела?

Нравится

1 комментарий

Добрый день, Александр.

Права доступа бывают нескольких типов.

1. Администрирование по правам по группам таблиц. Для настройки такой возможности в Вашем разделе необходимо:
а) в разделе Администрирование - права по группам таблиц добавить новую запись, назвать по имени Вашего разделав таблице раздела, в поле Имя объекта SQL указать некоторое латинское обозначение (см. существующие примеры).
б) в Администраторе в таблице Вашего раздела указать созданное значение в поле Группа таблиц и сохранить таблицу.

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

2. Администрирование по правам на записи. В случае, если создавали раздел с деталью Доступ, то, скорее всего, администрирование данного типа уже включено. В любом случае, проверка прав по записям включается, если в таблице раздела установить признак "Администрируется по записям" и сохранить таблицу. Будет создана новая таблица с правами на записи. Для управления доступом такого типа в разделе необходимо реализовать деталь "Доступ". Реализация ее достаточно типовая, можно "подсмотреть" ее реализацию в существующих разделах и создать по аналогии.

3. Также стоит обратить внимание на раздел Администрирование - Права доступа по умолчанию.

Подробно о всех видах прав можно прочитать в Руководстве Администратора, прилагаемом к продукту.

P.S. В версиях 3.2.0.x и выше есть возможность создавать разделы автоматически (в том числе создание детали Доступ).
Данная возможность запускается так:

tscrm.exe /wnd=wnd_CreateNewWorkspace

Желаю успехов!

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

Второй часто задаваемый вопрос - вопрос по безопасности.
Давайте разделим его на части:
1. Аутентификация и получение доступа к данным.
2. Безопасность передачи данных.
3. Виды прав в системе.
4. Логгирование.

Аутентификация и получение доступа к данным
Доступ к любой системе начинается с логина.
Тесно интегрируясь с Active Directory (AD), платформа Terrasoft позволяет использовать все ее преимущества. Вы можете импортировать пользователей AD, изменять им пароль и т.п.
Но, использование AD вовсе не обязательно. Платформа интегрирована, также, с системами безопасности всех поддерживаемых СУБД (более того, если позволяет СУБД, Вы можете использовать связку AD-система безопасности СУБД). Для каждого пользователя Terrasoft в СУБД создаётся пользователь и, все права в системе раздаются на уровне СУБД.
Такая схема обеспечивает максимально возможный уровень безопасности доступа к данным.

Безопасность передачи данных
Любая система, реализованная на платформе Terrasoft, позволяет использовать web-сервисы для работы с сервером приложений. Web-сервисы, в свою очередь, поддерживают подключение с использованием SSL протокола - стандарта де-факто для передачи защищённый данных в сети (Вы используете этот протокол, например, расплачиваясь кредитной картой в интернет-магазинах).
При необходимости, можно использовать дополнительные программно-аппаратные средства, например, для дополнительного шифрования трафика.

Виды прав в системе
Субъектом раздачи прав являются пользователи либо группы пользователей. При этом группы могут быть вложенными, а пользователи могут находиться одновременно в нескольких группах.
Платформа Terrasoft 3.X поддерживает следующие виды прав:
1. Доступ к таблице/группам таблиц - чтение/запись/изменение доступа.
2. Доступ к записям - чтение/запись/изменение доступа
3. Доступ к полям - чтение/запись.
Еще раз повторюсь, что эти права раздаются на уровне СУБД. Поэтому получив прямой доступ к СУБД, Ваш сотрудник увидит ту же информацию что и в системе.

Логгирование
Платформа обладает очень мощным инструментарием логгирования. На уровне пользователя, можно настроить какие объекты и поля системы нужно логгировать и платформа сама выполнит все необходимые операции для настройки логгирования на уровне СУБД. Это позволит увидеть кто, когда изменил запись; старое и новое значение каждого логгируемого поля. Реализация логгирования именно на уровне СУБД, позволяет логгировать абсолютно все изменения данных, как из приложений Terrasoft, так и из внешних приложений (например, при интеграции).

Нравится

Поделиться

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

Здравствуйте!!
TSx25, SQL 2005
Создаю новый атрибут через Администратор в таблице и пытаюсь сохранить изменения: выдается ошибка "Cannot execute as the database principal because the principal "fkeys" doesn't exist, this type of princpal cannot be impersonated, or you do not have permission".
Причем, через sa все работает, т.е. БД формально функционирует и доступна..
"fkeys"- это существующий догин, но я не понимаю причем тут он, так как захожу в TS под другим логином.
Имею предположение, что мой логин должен принадлежать группе администраторов, но незнаю где это нужно обозначить - перерыла весь SQLManagmentStudio.
Помогите, пожалуйста исправить ошибку!!!
С уважением, Гашникова Екатерина.

Нравится

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

Добрый день, Екатерина.

Описанная ситуация возникает после поднятия базы, только на 2005 сервере.
Необходимо в SQL Managment Studio выполнить следующий запрос:

sp_change_users_login 'update_one', 'fkeys', 'fkeys'

После этого пересохранение таблицы будет происходить успешно. Способ многократно проверен, работает.

Желаю успехов!

P.S. Как видите, Александр оказался чуть быстрее :). Вывод: используйте поиск по форуму, Вы сможете ответы на наиболее типичные вопросы.

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