Добрый день!

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

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

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

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

Владимир Соколов,

И Вы эти команды в каком-то отдельном справочнике хранили и наполняли пользователями? И пользователи получали уведомления, если их команду упомянули в ленте?

Здравствуйте, Елизавета!

Данное пожелание уже зарегистрировано на команду разработчиков для расширения функционала. Мы подняли его приоритет.  

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

Добрый день.
Есть следующий кейс:
Необходимо создать рабочие места на портале самообслуживания для разных ролей пользователей портала  (Клиенты и партнёры) с различным набором разделов и соответствующими доступами для конкретного пользователя. Данный подход уже реализован на портале самообслуживания Terrasoft. 

Как можно решить данный кейс? 

Обнаружил, что в группу "Все пользователи портала" нельзя добавить подчинённые группы. И даже добавить их с помощью sql-инъекции, права для портала на них не распространяются.
  
 

Нравится

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

Специальной логики с разными разделами на портале Terrasoft нет. Для разграничения прав на обращения только своей компании используются обычные группы (например, по контрагентам), не входящие в группу  «Все пользователи портала».

Мотков Илья,

Меня интересует именно создание разных рабочих мест на портале самообслуживания, и предоставление на них доступа для разных дочерних ролей (Клиенты/Партнёры) роли "Все пользователи портала".

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

Как добавлять свои разделы на портале, обсуждалось в этой теме.

Мотков Илья,

На портале самообслуживания для партнёров есть два рабочих места с разным набором разделов.
Прошу поделится кейсом реализации подобной функциональности.

 

Игорь, это настраивается при помощи стандартных механизмов рабочих мест и прав доступа на них для разных пользователей.

Мотков Илья,

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

3. Как быть с настройкой аналитики на главной странице портала для разных групп пользователей?

И получается, что если я буду добавлять доступ на конкретное рабочее место для отдельных пользователей, то всё равно эти пользователи будут видеть все рабочие места всех пользователей портала.

Игорь, инструкция по настройке портала есть здесь, других инструкций нет. Покажите скриншоты, что именно на портале Terrasoft Вы имеете в виду, какие именно рабочие места?

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

Тогда это новое место будет доступно для всех пользователь портала, а мне нужно только для определённой подгруппы

Да, всё верно. Для группы «All portal users».

Мотков Илья,

Т.е. для обеих рабочих мест дан доступ только для пользователей портала?

Из Вашего скриншота это нельзя достоверно выяснить. Попробовал на тестовой базе, добавил второе рабочее место с указанием прав для этой группы, зашёл под портальным пользователем — видно оба рабочих места.

Да, рабочее место создать можно.

Но вопрос в другом: Как отобразить рабочие места в зависимости от роли пользователя портала (партнёр/клиент)?

Все пользователи портала входят в одну и ту же роль.

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

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

Нравится

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

Добавление данных, которое сформирует активности для пользователей с ролью "Системные администраторы":

Еще нужно записывать повторный запуск процесса в Quartz (через определенное время). Эта тема обсуждалась здесь:
http://www.community.terrasoft.ru/forum/topic/13945

При такой настройке задача действительно поступает группе.
Однако, если это одна задача для роли, то есть для одного из членов группы, то необходимо, чтобы при изменении состояния задачи на "в работе" одним, этот статус должен быть виден и другим.
Фактически предложенное решение - это тиражирование задачи на группу, когда все выполняют одинаковую задачу, а вопрос заключается в постановке ОДНОЙ задачи для РОЛИ, т.е. одной задачи для одного из членов группы, так и не решена.

Здравствуйте!

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

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

Есть группа пользователей, которая входит в "Все сотрудники компании". Я удаляю права доступа этой группе на все записи раздела, а после выдаю права на некоторые записи (БП). Но пользователи этой группы видят все записи, т.к. права всех сотрудников не меняются. Как дать права на определенные записи раздела данной группе, не затрагивая права всех пользователей?

Нравится

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

Олег, права доступа раздаются как определенным пользователям, так и ролям с учетом того, что роль "Все сотрудники компании" включает в себя все роли и всех пользователей. В Вашем случае следует обращать внимание, как настроены права для роли "Все сотрудники компании" на этот объект. Если для них установлены полные права, то не зависимо от Вашего скрипта они будут видеть записи. Если же для роли "Все сотрудники компании" доступ запрещен, то создайте отдельную роль, включив туда нужный сотрудников и раздайте для этой роли права. Но в целом, нужно видеть полную картину Ваших настроек прав, чтоб понимать суть проблемы. Какие права для ролей стоят на права на записи, на права на операции и для каких ролей и пользователей в интересующем Вас разделе. Если требуется более детальная консультация непосредственно с рассмотрением прав доступа на Вашем сайте, то рекомендую перенести дальнейшее обсуждение вопроса в рамках технической поддержки.

Подскажите как добавить роль, которая не будет входить в "Все сотрудники компании"? И почему у меня может не быть возможности добавить роль в группу "Все пользователя портала"? Кнопки добавить организацию/подразделение не доступны (даже Supervisor'у).

Роль "Все сотрудники компании" является родительской, все остальные подчиненные. Но это не значит, что права будут применяться для всех сотрудников, если настраиваете их для определенной роли. Вы можете раздавать права нужной Вам роли, при этом это никак не отразится на роли "Все сотрудники компании". Что касается роли "Все пользователи портала", то данная роль работает только в продуктах линейки Service, так как портал есть только там.
Для большего понимания настройки прав доступа в системе рекомендую посмотреть видеоролик: https://www.youtube.com/watch?v=x5C6VcOhKj4&feature=youtu.be&list=PLDp-…

"Сафонов Олег" написал:Подскажите как добавить роль, которая не будет входить в "Все сотрудники компании"? И почему у меня может не быть возможности добавить роль в группу "Все пользователя портала"? Кнопки добавить организацию/подразделение не доступны (даже Supervisor'у).

Олег, добавить роль на одном уровне с "Все сотрудники компании" можно только инсертом в базу данных. Лучшим вариантом будет настройка механизма раздачи прав по умолчанию на записи + настройка БП, который бы изменял права по необходимости.

В портальных пользователях иерархия вообще отключена, поэтому добавить туда дочернюю группу не выйдет. Насколько мне известно, включение структуры портальных пользователей произовйдёт в одном из будущих релизов bpm'online.

Настраивал права и для подчиненной роли, входящей в "Все сотрудники компании", и на одном уровне со всеми сотрудниками (инсертом). Если открыть Действия - Настроить права доступа на карточке - там нету группы, для которой были настроены права, но записи все-равно видны.
Роли актуализировал. Галочка "Администрируется по записям" стоит.

Мне нужно чтоб права на записи настраивались конкретной группе пользователей. А занятие это бесполезное чуть более чем полностью, пока в правах конкретной записи указаны все сотрудники компании. Чтоб запись перестала видеть группа пользователей, необходимо убрать всех сотрудников, а их права должны остаться без изменений.

Ну уберите в таком случае все права на запись у всех сотрудников. Выполните скрипт на перераздачу прав на уже существующие записи, чтоб эти права применились на все записи. После чего раздайте прав, так как Вы этого хотите и вновь выполните скрипт на перераздачу прав на существующие записи, чтоб применить свои новые права. Скрипты прикрепил во вложении. В первом ничего не менять. Во втором только название объекта, для которого применяете.

"Адасюк Валерий Викторович" написал:

Ну уберите в таком случае все права на запись у всех сотрудников. Выполните скрипт на перераздачу прав на уже существующие записи, чтоб эти права применились на все записи. После чего раздайте прав, так как Вы этого хотите и вновь выполните скрипт на перераздачу прав на существующие записи, чтоб применить свои новые права. Скрипты прикрепил во вложении. В первом ничего не менять. Во втором только название объекта, для которого применяете.

Прикрепленный файлРазмер

skripty.zip
2.47 кб


На примере раздела продукты:
- убрал права у всех сотрудников компании на все записи раздела
- выполнил скрипт на перераздачу прав (благодаря чему права на все записи вернулись всем сотрудникам компании)
- раздал права на половину записей нужной мне группе пользователей
- снова выполнил скрипт на перераздачу прав (благодаря чему розданные мной права удалились)
Ну и собственно все осталось как есть. Группа видит все записи.
Перепробовал разные варианты, при перераздаче прав скриптом все возвращается на свои места.
Что я делаю не так?

Олег, данная ситуация требует индивидуального рассмотрения. Предлагаю перенести рассмотрение данного вопроса в рамках отдела технической поддержки, с последующим подключением к Вашему сайту. Напишите на адрес support@terrasoft.ru какие права, какой группе и на какой раздел нужно раздать, а также ссылку на сайт, о котором идет речь.

Здравствуйте! Интересует такой вопрос. Я сосдал учетную запись для Бухгалтера и в администрировании доступа к обекту выдал ему права на чтение Кто создает: Все сотрудники компании.
В итоге он начал видеть счета которые создаются после того как это правило создалось. Но мне нужно чтобы он видел и счета которые были раньше создани, а не только начиная с сегодня 16-30. Можна ли както сделать чтобы бухгалтер смог видеть счета например с 01.07.2016 не выдавая ему админские права на доступ.

Николай, добрый день.

Все администрируемые права доступа по записям применяются на записи созданные только после настройки прав доступа, о чем написано в документации (первый абзац) -

https://academy.terrasoft.ru/documents/sales-enterprise/7-8-0/detal-dos…

Для того, чтобы распространить права на существующие записи, есть несколько вариантов:

1) Запрос в БД - решается при помощи написания SQL-запроса
2) БП - бизнес-процесс, в котором есть элемент "Изменение прав доступа".

Детальнее о правах доступа Вы можете узнать здесь - https://www.youtube.com/watch?v=x5C6VcOhKj4&feature=youtu.be&list=PLDp-…

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

Доброго времени суток!

Есть задача: при добавлении нового инцидента автоматически создавать напоминание группе пользователей (пока пытаюсь сделать хотя бы для всех пользователей).

Вопрос: при создании инцидента пытался присвоить полю ContactID датасета ds_Reminding ID группы "Все пользователи":

function CreateNewRemindings(Dataset) {
        var RemindingDataset = Services.GetNewItemByUSI('ds_Reminding');
        RemindingDataset.Open();
        RemindingDataset.Append();
        RemindingDataset.ValAsGUID('ContactID') = '{97490F89-2943-480D-9AFE-B1C95DE00010}';
        RemindingDataset.ValAsDateTime('RemindTime') = GetLocalDateTime();
        RemindingDataset.ValAsGUID('SubjectID') = Dataset.ValAsGUID('ID');
        RemindingDataset.ValAsGUID('SubjectTypeID') = '{8E742F80-1C1A-4657-8D46-F189F0640544}';
        RemindingDataset.Values('Description') = 'Добавлен новый инцидент!';
        RemindingDataset.Post();
        RemindingDataset.Close();
}

Но так не работает, выскакивает ошибка (прикрепил).
Как я понял, он пытается связать ID группы с ID контактов. Видимо все не так просто. :smile: Как это обойти?

Нравится

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

Обойти это не удастся. Нужно создавать напоминание каждому члену группы отдельно - посмотрите как это сделано например в scr_RemindingEdit при добавлении напоминания группе: формируется список контактов в группе и для каждого генерируется напоминание.
Можно оттуда функцию готовую и взять

Спасибо! Проблема решена.

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

Добрый день!

Как Вы знаете, в карточке редактирования может быть представлено несколько представлений. Иногда требуется ограничить доступ к этому представлению некоторой группе пользователей. Этот функционал можно дополнительно реализовать средствами Terrasoft Administrator. Ниже приведу сам алгоритм, на примере карточки редактирования раздела "Продукты", в которой существует представление "Движение по складу", доступ к которому мы ограничим.

Итак, прежде всего необходимо открыть скрипт wnd_OfferingEditScript и в конец скрипта добавить следующую функцию:

function IsUserInGroup(GroupID)
{
        var Dataset = Services.GetSingleItemByUSI('ds_AdminUnit');
        ApplyDatasetFilter(Dataset, 'UserContactID', Connector.CurrentUser.ContactID, true);
        Dataset.Open();
        var UserID = Dataset.ValAsGUID(IDFieldName);
        Dataset.Close();
        var Dataset = Services.GetSingleItemByUSI('ds_UserInGroup');
        ApplyDatasetFilter(Dataset, 'GroupID', GroupID, true);
        ApplyDatasetFilter(Dataset, 'UserID', UserID, true);
        Dataset.Open();
        var Is = (Dataset.RecordsCount > 0);
        Dataset.Close();
        return Is;
}

Приведенная выше функция, в случае если текущий пользователь системы входит в указанную нами группу пользователей, возвращает значение true, в ином случае - false.

Далее необходимо отредактировать функцию function wnd_OfferingEditOnPrepare(Window). В ней добавим следующую проверку:

function wnd_OfferingEditOnPrepare(Window) {
        scr_BaseDBEdit.wnd_BaseDBEditOnPrepare(Window);
        Initialize(Window);            
        if(!Connector.CurrentUser.IsAdmin)
        {
                var UsrDataset = Services.GetSingleItemByUSI('ds_UserInGroup');                  
                var GroupName = 'Название';
                //где 'Название' - имя группы пользователей, для которых нужно ограничить доступ к представлению         
                ApplyDatasetFilter(UsrDataset, 'GroupName', GroupName, true);
                //тут следует не забыть создать фильтр сравнения в сервисе sq_UserInGroup (см. скриншот ниже)
                UsrDataset.Open();             
                var GroupID = UsrDataset.Values('GroupID');
                if(IsUserInGroup(GroupID))
                {
                        //скрываем само представление, установив свойству IsVisible значение false
                        pgOfferingAnalytic.IsVisible = false;  
                }
                UsrDataset.Close();
        }
       
}

Так же, перед тестированием результатов, следует создать фильтр сравнения в сервисе sq_UserInGroup:

2
3

После этого не забудьте сохранить изменения и перезапустить клиентское приложение Terrasoft.

Нравится

Поделиться

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

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

    var GroupDataset = Services.GetSingleItemByUSI('ds_UserInGroup');
    ApplyDatasetFilter(GroupDataset, 'UserID', UserID, true);
	     GroupDataset.Open();
	      GroupDataset.GotoNext();     //берем второе значение, так как первая по порядку группа 'Все пользователи'                 
         var GroupID = GroupDataset.ValAsStr('GroupID'); 
         GroupDataset.Close();

Большое спасибо за Ваш пример, очень пригодился!

В принципе есть базовая функция в scr_Access называется GetIsUserInGroup, делает примерно тоже самое только немного написана по другому

function GetIsUserInGroup(UserName, GroupID) {
	var sqGetIsUserInGroup = GetSingleItemByCode('sq_GetIsUserInGroup');
	SetParameterValue(sqGetIsUserInGroup.Parameters, 'GroupID', GroupID);
	SetParameterValue(sqGetIsUserInGroup.Parameters, 'UserName', UserName);
	var dsRes = sqGetIsUserInGroup.Open();
	try {
		return dsRes('IsExists') != 0;
	} finally {
		dsRes.Close();
	}
}
Показать все комментарии

Только начинаю настройку системы. При добавлении группы пользователей "Руководство компании" в разделе [Администрирование] согласно "Licensing guide" выходит ошибка (см. прикрепленный файл).
При этом если сначала создать группу "Руководство" а затем изменить название группы на "Руководство компании" ошибки не возникает.

Нравится

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

Сообщение гласит о том, что данное название слишком длинное для записи в базу данных. (возможно проблема при создании длинной роли).
Попробуйте переименовать группу в Руководство компании и установить галочку [Отображать имена ролей].
Указывайте более короткое название.

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