Добрый день.
1 вопрос.
Никак не могу понять, как мне реализовать права для пользователей.
Есть три разных типа прав:
1 - видит все;
2 - видит только своих контрагентов и контактов, которые находятся в определенном воздействии с состоянием "в работе"
3 - видит только контрагентов и контактов, которые находятся в определенном воздействии с состоянием "в работе" в своей бригаде
Во 2 и 3 пункте, видимость контрагентов и контактов определяется даже тем, что при любом выборе контрагента / контакта откуда угодно (например при создании задачи и т.д.) выбор был только из видимых.
2 вопрос.
добавил и зарегистрировал нового пользователя, при закрытии Terrasoft вылетает ошибка - "Несоответствие типов" в этом коде:
Node.SetAttributeAsStr('SavedGroupID', dlGroups.Dataset('ID'), '');
SaveDescription();
}
Нравится
Добрый день!
"Когут Константин Васильевич" написал:
Есть три разных типа прав:
2 - видит только своих контрагентов и контактов, которые находятся в определенном воздействии с состоянием "в работе"
3 - видит только контрагентов и контактов, которые находятся в определенном воздействии с состоянием "в работе" в своей бригаде
Нет таких прав :smile:
С помощью раздела "Администрирование" подобные комплексные условия установить нельзя.
Неудобный момент, который Вы можете попробовать - написать запрос с фильтрацией, который будет выбирать данные в необходимом количестве с учетом условий. Затем накладывать фильтрацию в каждом моменте, где производится выбор контакта/контрагента.
"Когут Константин Васильевич" написал:добавил и зарегистрировал нового пользователя, при закрытии Terrasoft вылетает ошибка - "Несоответствие типов" в этом коде:
Ошибка не должна быть связана с добавлением пользователя. При следующем появлении ошибки посмотрите CallStack и определите, место, в котором функция вызывалась.
1. О, пришла идея, при выборе контрагента / контакта, он же открывает датасет, в котором при открытии он бы отфильтровал его по нужным условиям. Вечером попробую сделать.
2. даже не при добавлении, а при нахождении в определенной группе, при чем у этой группы прав даже больше чем у той в которой все нормально.
"Когут Константин Васильевич" написал:2. даже не при добавлении, а при нахождении в определенной группе, при чем у этой группы прав даже больше чем у той в которой все нормально.
Ну это не совсем нормально)
Сделайте обезличенную копию базы (без данных) и перешлите в поддержку, указав данную тему. Мы пройдемся отладчиком и выясним, в чем дело.
Может удаленно подключиться, показать ошибку на примере?
"Когут Константин Васильевич" написал:Может удаленно подключиться, показать ошибку на примере?
Можно, но не факт, что решение не придет во время удалёнки, поэтому база предпочтительнее.
Попытка не пытка, завтра готов) дальше решим, что да как
По поводу первого вопроса: для 1 и 2 пункта все замечательно, а вот для 3 чет никак не придумать запрос. Мож кто подскажет как сделать фильтр в sq_Account, необходимо:
Набор фильтров (И):
- Контрагент находится в воздействии с состоянием в работе:
[tbl_CampaignAudience].[ResponseID] = Work ("в работе")
- Контрагент находится в воздействии у оператором в бригаде текущего пользователя:
[tbl_CampaignAudience].[OperatorID] = все операторы у которых бригадир является Current User Contact ID
(в таблице Contact есть поле BrigID)
Добрый день!
Создайте два параметра:
один - для хранения идентификатора состояния "В работе" (получить можно из tbl_CampaignStatus),
второй - для заполнения идентификатором текущего пользователя (тип функция - "Контакт текущего пользователя").
Оба параметра используйте для сравнения в фильтре.
немного не то, вот как в такой фильтр передать массив? Включается обычным EnableDatasetFilters
Добрый день!
Не трогайте пока сервис запроса :) Напишите SQL текст на базе данных, и если он даст нужный результат, приступите к внесению изменений в sq
Он же выключен в sq ;) Просто не знаю как передать массив в нужный подфильтр (OperatorIDs)
Константин,
Вам следует выполнить это в виде EXISTS запроса (пример реализации тут: http://www.community.terrasoft.ru/forum/topic/7123). Для того, чтобы я могла предоставить рекомендации по реализации запроса, мне нужно знатьб Вашу структуру таблиц.
Просим предоставить в техническую поддержку следующие сервисы конфигурации:
1. ds_Account, sq_Account, tbl_Account
2. ds_Contact, sq_Contact, tbl_Contact
3. ds_Campaign, sq_Campaign, tbl_Campaign
4. ds_CampaignAudience, sq_CampaignAudience, tbl_CampaignAudience
а также сервисы связанных таблиц и скриптов датасетов, если такие есть.
Спасибо за помощь!
Через Exists не мог получить множественный выбор.
Решилось таким способом
WHERE(([tbl_CampaignAudience].[ResponseID] = :Work AND [tbl_CampaignAudience].[OperatorID] IN (SELECT [tbl_ContactBrig2].[ID] AS [ID2] // таблица контактов FROM [dbo].[tbl_Contact] AS [tbl_ContactBrig2] WHERE([tbl_ContactBrig2].[BrigadID] =CurrentUser ))))
Где параметр :Work - состояние в работе
CurrentUser - функция Current User Contact ID.
Получается он выбирает всех контрагентов, у которых состояние в любом воздействии = "в работе" и у которых операторы находятся в бригаде текущего пользователя.
может кому и пригодится :smile: