Доступ по умолчанию к группам контактов

Возникло некоторое непонимание работы механизма доступа по умолчанию для групп контактов в 3.3.1.
Происходит следующее:
На закладке "Права доступа по умолчанию" для группы "Все пользователи" и таблицы "Группа контактов" настроены некоторые права.

Заходим в раздел контакты и создаем новую группу. Трассировка показывает, что успешно выполняется insert в таблицу tbl_ContactGroup и при этом успешно отрабатывает триггер tr_tbl_ContactGroup_AI, который вставляет несколько записей в tbl_ContactGroupRight. Вроде бы все нормально, но сразу после этого выполняется вот такой запрос:

DELETE FROM "tbl_ContactGroupRight"
WHERE
        ("tbl_ContactGroupRight"."AdminUnitID" > :pAdminUnitID AND
        "tbl_ContactGroupRight"."RecordID" = :pRecordID)

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

Я не нашел места, откуда этот запрос выполняется. Может кто-нибудь пояснить в чем тут дело?

Нравится

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

Похоже группа создается личная.

Андрей, добрый день.

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

Для изменения этой функциональности на ту, которая Вам необходима, нужно удалить (а лучше закомментировать) весь текст из обработчика ds_ItemGroupOnDatasetAfterPost скрипта ds_ItemGroupScript:

//-----------------------------------------------------------------------------
// ds_ItemGroupScript
//-----------------------------------------------------------------------------
 
var ItemGroup = new Object();
 
function ds_ItemGroupOnDatasetAfterPost(Dataset) {
	/*if (!ItemGroup.WasInsert) {
		return;
	}
	var Select = GetSelectQueryPrimarySelect(Dataset.SelectQuery);
	var DeleteQuery = Services.GetNewItemByUSI('dq_GroupRights');
	var RightsTable = Select.FromTable.RightsTable;
	DeleteQuery.Table = RightsTable;
	var Parameters = DeleteQuery.Parameters;
	Parameters('RecordID').Value = Dataset.Values('ID');
	Parameters('AdminUnitID').Value = Connector.CurrentUser.ID;
	var Filters = DeleteQuery.Filters;
	Filters.ItemsByCode('RecordID').TestExpression.Field =
		RightsTable.Fields('RecordID');
	Filters.ItemsByCode('AdminUnitID').TestExpression.Field =
		RightsTable.Fields('AdminUnitID');		
	Filters.ItemsByCode('RecordID').TestExpression.TableAlias = 
		RightsTable.SQLName;
	Filters.ItemsByCode('AdminUnitID').TestExpression.TableAlias = 
		RightsTable.SQLName;
	DeleteQuery.Execute();*/
}
 
function ds_ItemGroupOnDatasetBeforePost(Dataset, DoPost) {
	ItemGroup.WasInsert = (Dataset.State == dstInsert);
}

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Большое спасибо, Олег.

Теперь все ясно.
Нам надо, чтобы группы создаваемые администратором были видны всем, поэтому я просто вставлю соответствующее условие в скрипт.

Раскопал в архивах эту тему, как раз она мне сейчас очень актуальна.

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

Для изменения этой функциональности на ту, которая Вам необходима, нужно удалить (а лучше закомментировать) весь текст из обработчика ds_ItemGroupOnDatasetAfterPost скрипта ds_ItemGroupScript

Мне не понятна логика изменений в программе: создали функционал, позволяющий настраивать права по умолчанию для вновь создаваемых групп и тут же всю его функциональность зарубили. Кому необходимо чтобы вновь создаваемые группы были видны только владельцу, то это можно настроить с помощью прав по умолчанию. Зачем зарубили такой полезный функционал? Администратор должен решить кому и какие группы должно быть видно, а уж если пользователь не согласен с чем-то, то пусть настраивает свои права доступа на созданную группу. Я обязательно этот кусок закомментирую, похоже что это пережиток старой версии забыли убрать.

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