Добрый день,

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

Может, предусмотрен какой-то более удобный способ? 

Нравится

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

Добрый день! Вы имеете ввиду редактировать поле на странице? Через бизнес-правила вроде так можно это сделать.

 

Дмитрий,

Через бизнес-правило "if текущий пользователь = справочник.Пользователь then поле редактируемое"  права на другие колонки же не ограничатся. Плюс, я так понимаю, это правило не позволит другим пользователям редактировать это поле, т.к. будет проходить проверка на текущего пользователя.

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

А если выбрать вариант текущий пользователь "не равно" пользователю из справочника? Тогда все кроме этого пользователя получат доступ к редактированию данного одного поля, а он не сможет его редактировать. По всем остальным полям останутся общие правила на объект. По остальным полям придется ту же самую процедуру провести.

Дмитрий,

 

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

Если ставить правила на запрет изменения всех остальных полей через "пользователь!=" , то помимо того, что их будет порядка 30-40, и некоторые из них работать не будут (т.к. creatio воспринимает только 1 правило, завязанное на 1 поле, а другие игнорирует), но ещё такие правила перетрут права доступа, настроенные через Доступ на объекты. =(

Добрый день, 

 

Самый правильный способ, это добавить функциональную роль, например "Может редактировать одну колонку". После настроить права доступа на все колонки таким образом что бы роли которы имеют право редактировать эти колонки имели такую возможность, а для роли "Может редактировать одну колонку" такую возможность забрать. Важно что бы запрещающие права были в приоритете выше. 

 

Из неочевидного, руководители роли "Может редактировать одну колонку" также унаследуют эти права. 

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

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

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

Нравится

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

Игорь, добрый день.

В базовом функционале приложения нет возможности разрешить портальным пользователям изменять стадии обращения на Actions dashboard. Потому что, доступность некоторых переходов зависит не только от ролей, но и от бизнес логики по обработке обращений. Ваше пожелание было зарегистрировано для ответственной команды разработки. Возможно, в следующих релизах появиться такая возможность.

Столкнулись с аналогичной потребностью, чтобы на портале переключать стадии обращения. Как оказалось, это отключено в коде специально (вероятно, по причине из комментария выше).

В схеме PortalCaseSectionActionsDashboard пакета Portal функция заменена заглушкой:

/**
 * @inheritDoc Terrasoft.DcmSectionActionsDashboardMixin#setDcmAvailableStages
* @overridden
 */
setDcmAvailableStages: this.Terrasoft.emptyFn,

Для исправления в пакете проекта в этой  же схеме вернул код из упомянутого выше миксина:

setDcmAvailableStages: function(actionsItem) {
	const dcmSchema = this.get("DcmSchema");
	const sourceStageUId = actionsItem.get("StageUId");
	const outgoingConnections = dcmSchema.stageConnections.getOutgoingConnections(sourceStageUId);
	const availableStages = outgoingConnections.map(function(connection) {
		const referenceStage = dcmSchema.stages.get(connection.target);
		return referenceStage.stageRecordId;
	});
	actionsItem.set("AvailableStages", availableStages);
},

Теперь стадии переключает.

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

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

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

Ошибка при добавлении в таблицу с правами в консоли на скрине. 

Изображение удалено.  Права все выданы как и на операции так и по записям - 100%.

*Компилировал, генерировал схемы, чистил редис.

**Что интересно, для все старых схем права работают.

 

Нравится

2 комментария
Лучший ответ

Посмотрите, есть ли ваши объекты в справочнике "список объектов, доступных пользователю портала"

Посмотрите, есть ли ваши объекты в справочнике "список объектов, доступных пользователю портала"

Трефилов Павел Сергеевич,

Spasibo!

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

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

 

Удалось успешно привязать к данных

  • Доступ к объектам - SysEntitySchemaOperationRight
  • Операции - SysAdminOperation
  • Права на операции - SysAdminOperationGrantee

 

Однако

  • настройку прав на колонки SysEntitySchemaColumnRight
  • и настройку прав по умолчанию SysEntitySchemaRecordDefRight

добавить в пакет не получается - просто не даёт выбрать такие объекты.



Как лучше поступить для решения?

Нравится

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

Добрый вечер.

Подобные темы уже обсуждались на Community. То, что не привязывается к данным, переносят SQL скриптами, которые также привязываются к пакету.

Алла Савельева,

Есть даже пример таких скриптов для переноса этих настроек?

 

Или, может, Terrasoft сделает возможным перенос стандартными средствами? 

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

 

Реализовать перенос настроек организационной структуры и прав доступа из одного стенда на другой можно с помощью SQL-скриптов. Для этого на эталонной среде необходимо сформировать insert-запросы на основании записей со следующих таблиц:

  • SysAdminUnit (Объект администрирования: пользователи и роли)
  • SysUserInRole (Непосредственные вхождения пользователей в роли)
  • SysFuncRoleInOrgRole (Вхождение функциональной роли в организационную)
  • SysAdminOperation (Системные операции, если необходимо)
  • SysAdminOperationGrantee (Доступ к системным операциям, если необходимо)
  • SysEntitySchemaOperationRight (Доступ к объектам)
  • SysEntitySchemaRecordDefRight (Доступ к записям по умолчанию)
  • SysEntitySchemaColumnRight (Доступ к колонкам объекта)
  • SysAdminUnitGrantedRight (Делегирование)

Для формирования запросов можно воспользоваться Microsoft SQL Server Database Publishing Wizard и подобными инструментами. Полученный SQL-скрипт необходимо прикрепить к пакету (вкладка - «SQL-сценарии»).

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

Ещё очень интересное поведение заметили.



Записи SysEntitySchemaColumnRight были перенесены полностью идентично на рабочую среду (проверили после переноса). А через некоторое время на рабочей среде оказались те же записи, но с совершенно другими Id. 



Какие процессы могут полностью сменить Id в этой таблице? И на что это может повлиять?

 

Может, компилировали объект? Актуализацию прав запускали?

Зверев Александр пишет:

Может, компилировали объект? Актуализацию прав запускали?

Да, компиляция же происходит после каждой установки новых пакетов (с того же Marketplace), насколько я понимаю.



И актуализация прав запускается после изменений в пользователях/ролях.

 

1. Но как это влияет на настройки доступа по колонкам?



2. И как переносить последующие изменения в настройках доступа по колонкам, если по Id уже не понять, это те же настройки или уже другие?

Владимир, логика перераздачи прав не предусматривает сохранения Id записей. Вы можете предусмотреть в своих скриптах привязку не к Id, а к SysAdminUnitId, SubjectColumnUId и SubjectSchemaUId, они должны быть стабильными.

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

 

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

Добрый день!

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

Нравится

5 комментариев
Лучший ответ

Добрый день!

У нас это реализовано следующим образом:

Забираем у всех права на просмотр лидов. Если необходимо чтобы какая то роль или оргединица имела права на просмотр/редактирование/удаление лидов настраиваем штатно. Создали 2 бизнес-процесса, первый срабатывает при создании лида, второй при смене ответственного в лиде. В этих БП регулируются права на лид.

Добрый день!

У нас это реализовано следующим образом:

Забираем у всех права на просмотр лидов. Если необходимо чтобы какая то роль или оргединица имела права на просмотр/редактирование/удаление лидов настраиваем штатно. Создали 2 бизнес-процесса, первый срабатывает при создании лида, второй при смене ответственного в лиде. В этих БП регулируются права на лид.

К тому же, надо помнить, что не только ответственные должны видеть все лиды, но и, например, ещё отдел маркетинга.



В Operation permissions создаём операцию CanReadLead и добавляем в неё роли. Затем в том же БП выдаём этим ролям права на чтение лидов.



И не забываем про права на редактирование.

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

gif_section_object_permissions_select_groups.gif

Зверев Александр пишет:

то на новые записи будет получать права только автор и ответственный

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

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

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

Вопрос:

При входе в Terrasoft 3.X под новыми пользователями выдается ошибка открытия конфигурации «Could not convert variant of type (NULL) into type (olestr)»

В чём может быть проблема?

Ответ:

Такое сообщение «Could not convert variant of type (Null) into type (OleStr)» говорит о том, что у пользователя нет доступа на свой контакт и/или контрагент.



Для решения нужно: 



1)       Авторизуйтесь в системе под администратором, перейдите в Администрирование-Пользователи

2)       Кликните правой кнопкой на пользователе, под которым возникает ошибка входа, Перейти к -> Контакт и Перейти к -> Контрагент

3)       На детали «Доступ» к контакту добавьте пользователя, под которым происходит сбой или группу, в которую он входит.

4)       На детали «Доступ» к контрагенту добавьте пользователя, под которым происходит сбой или группу, в которую он входит.

5)       Проверьте корректность авторизации пользователя.

Нравится

Поделиться

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

Добрый день!

Подскажите, какими оптимально способами решать задачу, чтобы определенные пользователи видели и могли редактировать только Контрагентов с типом Клиент?

Спасибо!

Нравится

5 комментариев
Лучший ответ

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

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

Нигрескул Алексей,

 

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

Потом еще как вариант - плокировка страницы

 

https://academy.terrasoft.ru/documents/technic-sdk/7-16/kak-polnostyu-z…

https://academy.terrasoft.ua/documents/technic-sdk/7-16/mehanizm-blokir…

 

Использую и вариант с БП и с блокировкой страницы, но если нужна более гарантирования возможность блокировки то второй вариант

Александр Тыра,

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

Александр Тыра пишет:

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

Насколько понимаю, нет, не перетрут. Пишут:

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

 А если Вы пробовали и именно затирает, пожалуйста, напишите в поддержку подробности, как воспроизвели.

 

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

Александр Тыра пишет:

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

Мы просто запрещаем пользователям менять права вручную. И автоматизируем распределение прав полностью. 

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

Сейчас в системе можно администрировать полномочия только от объектов.

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

А учитывая что это все одна таблица Объект администрирования, то и у пользователей не помешала бы такая информация, где она явно задана.

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

Алексей, уже заведена идея по администрированию прав доступа в новом UI о том, что разделе пользователи в карточке роли/пользователя нельзя просмотреть его права.

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

Спасибо, что делаете наши продукты лучше!

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

Доброго дня, коллеги!

 

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

 

Возможно ли это в Creatio? Просто я вроде читал, но ничего похожего не увидел, если так можно, был бы рад ответу и если это есть где-то на академии, был бы рад получить ссылку.

 

Заранее благодарю!

Нравится

1 комментарий
Лучший ответ

Здравствуйте, Михаил!

 

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

Команда разработки ответственная за этот функционал в курсе существования этой проблемы и будет работать над внедрением ее решения в будущих релизах Creatio.

 

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

 

Для того, чтоб справочник можно было отобразить как раздел, начиная с версии 7.16.2 добавлена возможность создать раздел, используя существующий объект системы. Только нужно учесть, что если объект справочника стандартный (без Usr),  в таком разделе теги и группы работать не будут, поскольку для них не получится создать таблицы в Custom.

Здравствуйте, Михаил!

 

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

Команда разработки ответственная за этот функционал в курсе существования этой проблемы и будет работать над внедрением ее решения в будущих релизах Creatio.

 

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

 

Для того, чтоб справочник можно было отобразить как раздел, начиная с версии 7.16.2 добавлена возможность создать раздел, используя существующий объект системы. Только нужно учесть, что если объект справочника стандартный (без Usr),  в таком разделе теги и группы работать не будут, поскольку для них не получится создать таблицы в Custom.

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

Добрый день, имеется развернутый локально Creatio. Хочу добавить лэндинг(чтобы можно было к примеру перейти на localhost/landing/index.aspx) с формой, у которой есть поле phone и данные введенные в поле будут попадать в контакты -> мобильный телефон уже к имеющемуся контакту.

Что уже сделал?

Сейчас контакт выглядит следующим образом

Изображение удалено.

Как описано в документации добавил лэндинг. Сжато он выглядит так:

Изображение удалено.

После чего в папке ../0/Nui/ создал папку Landing с файлом index.aspx в котором лежит следующий код:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <!--ШАГ 2-->
    <!--Эту часть необходимо скопировать из поля ШАГ 2 страницы редактирования лендинга-->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="https://webtracking-v01.bpmonline.com/JS/track-cookies.js"></script>
    <script src="https://webtracking-v01.bpmonline.com/JS/create-object.js"></script>
    <script>
 
    var config = {
        fields: {
            "Subject": "#subject-field",
            "Email": "#email-field",
            "Name": "#name-field",
            "MobilePhone": "#phone-field",
        },
        landingId: "54a57d16-e7b6-4c7d-9c38-237cfcf6512d",
        serviceUrl: "http://localhost/0/ServiceModel/GeneratedObjectWebFormService.svc/SaveWebFormObjectData",
        redirectUrl: "yandex.ru"
    };
 
    function createObject() {
        landing.createObjectFromLanding(config)
    }
    </script>
    <!--ШАГ 2-->
</head>
<body>
<h1>Landing web-page</h1>
<div>
    <h2>Case form</h2>
    <form action="localhost/0/ServiceModel/GeneratedObjectWebFormService.svc/SaveWebFormObjectData" method="POST" class="mainForm" name="landingForm" onSubmit="createObject(); return false">
        Subject:<br>
        <input type="text" name="subject" id="subject-field"><br>
        Email:<br>
        <input type="text" name="Email" id="email-field"><br>
        Name:<br>
        <input type="text" name="Name" id="name-field"><br>
        Phone:<br>
        <input type="text" name="Phone" id="phone-field"><br><br>
        <input type="submit" value="Submit">
        </font>
    </form>
</div>
</body>
</html>

Если я правильно понял для того чтобы POST запрос прошел корректно должен отработать файл GeneratedObjectWebFormService.svc. Нужно ли его создавать по документации или он является дефолтным? При попытки отправки запроса возникает 403 ошибка. Как сделать это рабочим и какие ошибки я совершил?

Изображение удалено.

Изображение удалено.

Нравится

5 комментариев
Лучший ответ

А зачем вы пытаетесь добавить лендинг внутри того же сайта, где развёрнута система? Обычно он нужен для отдельного сайта, например, страницы регистрации на сайте компании. При таком размещении, как сделали Вы, может незалогиненного пользователя при попытке открыть эту страницу перебросить на страницу логина. А для залогиненных есть более подходящие способы, вроде БП с автогенерируемыми или преднастроенными страницами.

 

Как минимум, у Вас неправильный адрес стандартного веб-сервиса GeneratedWebFormService, к которому пытались обратиться со страницы. Поскольку он анонимный, там не нужен /0/. См. тут, как выглядит и где настраивается путь к нему.

 

Если нужно сделать отдельную страницу на сервере с этой формой, можно поднять в IIS ещё один сайт из одной HTML-страницы, где и настроить по инструкции связь с лендингом.

А зачем вы пытаетесь добавить лендинг внутри того же сайта, где развёрнута система? Обычно он нужен для отдельного сайта, например, страницы регистрации на сайте компании. При таком размещении, как сделали Вы, может незалогиненного пользователя при попытке открыть эту страницу перебросить на страницу логина. А для залогиненных есть более подходящие способы, вроде БП с автогенерируемыми или преднастроенными страницами.

 

Как минимум, у Вас неправильный адрес стандартного веб-сервиса GeneratedWebFormService, к которому пытались обратиться со страницы. Поскольку он анонимный, там не нужен /0/. См. тут, как выглядит и где настраивается путь к нему.

 

Если нужно сделать отдельную страницу на сервере с этой формой, можно поднять в IIS ещё один сайт из одной HTML-страницы, где и настроить по инструкции связь с лендингом.

Зверев Александр,

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

Нет, дело не в этом. Посмотрите второй абзац прошлого ответа.

Зверев Александр,

исправил без /0/ теперь следующую проблему не могу побороть 

политика CORS дефолтная и выглядит так:

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

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