Есть константа
Terrasoft.core.enums.SysValue.CURRENT_USER
и
Terrasoft.core.enums.SysValue.CURRENT_USER_Contact

Но в моем случае я сделал привязку документа к объекту Сотрудники.
Как мне его использовать чтобы при создании автоматом подставлялось значение сотрудника?

Нравится

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

"Юсупов Марат" написал:Как мне его использовать чтобы при создании автоматом подставлялось значение сотрудника?

Маленький ЛикБез:
Есть Пользователи это определенный тип административных юнитов (SysAdminUnits)
Есть Контакты - это обособленная сущность, но у каждого пользователя есть привязка к контакту, тезис: У каждого пользователя есть один, и только один связанный с ним контакт.

"Юсупов Марат" написал:Но в моем случае я сделал привязку документа к объекту Сотрудники.

я так понимаю речь идет об объекте Employee (Сотрудник)
Это обособленный объект и в нем в свою очередь в виде справочных полей присутствует поле "Контакт"

"Юсупов Марат" написал:Как мне его использовать чтобы при создании автоматом подставлялось значение сотрудника?

Видимо вы имеете в виду кейс, где текущий пользователь, у которого имеется соответствующая запись в объекте Сотрудник (где указан его контакт), автоматически проставлялся в справочном поле ссылающимся на объект Сотрудник в текущей карточке ?
так ?

Да.
Попытался сделать хитрый маневр.

SetManager: function() {
				//debugger;
				var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
					rootSchemaName: "Employee"
				});
				esq.addColumn("Id"); //id контакта в Сотрудники
				var filter = this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL, "Contact", Terrasoft.SysValue.CURRENT_USER_CONTACT.value);
				esq.filters.addItem(filter);
 
				esq.getEntityCollection(function(response) {
					if (response && response.success) {
						if (response.collection.getCount() > 0) {
							var result = response.collection.getItems()[0];
							this.set("UsrManager", result.get("Id"));
						}
					}
				}, this);
 
			},

Но UsrManager заполняется undefined.....хотя запрос отрабатывает.

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

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

Для того, чтобы выяснить, является ли пользователь администратором, следует проверить, включен ли он в группу "Системные администраторы". Сделать это в коде можно следующей конструкцией:

Select select = (new Select(UserConnection)
        .Column(Func.Count(Column.Asterisk()))
        .From("SysUserInRole")
        .Where("SysUserId")
        .IsEqual(Column.Parameter(UserConnection.CurrentUser.Id))
        .And("SysRoleId").IsEqual(Column.Parameter(new Guid("83A43EBC-F36B-1410-298D-001E8C82BCAD")))
)as Select;
using(var dbExecutor = UserConnection.EnsureDBConnection()){
        var CurrentUserIsAdmin = select.ExecuteScalarint>(dbExecutor);
}

Переменная CurrentUserIsAdmin принимает значение 1 либо 0 в зависимости от того, является ли текущий пользователь администратором.

Нравится

Поделиться

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