1с как найти пользователя программно

1. Создаем справочник Пользователи
2. ПараметрыСеанса.ТекущийПользователь — тип справочник Пользователи
3. В модуле Сеанса пишем:

Код 1C v 8.2 УП

 Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
ТекущийПользователь = ОбщийМодульСистема.ОпределитьТекущегоПользователя();
ПараметрыСеанса.ТекущийПользователь = ТекущийПользователь;
КонецПроцедуры

4. Создаем общий модуль ОбщийМодульСистема в нем пишем:

Код 1C v 8.2 УП

 // Функция возвращает ссылку на элемент справочника "Пользователи",
// соответствующий текущему пользователю информационной базы.
Функция ОпределитьТекущегоПользователя() экспорт

Если ПустаяСтрока(ИмяПользователя()) Тогда
ИмяПользователя = "НеАвторизован";
ПолноеИмяПользователя = "Не авторизован";
Иначе
ИмяПользователя = ИмяПользователя();

Если ПустаяСтрока(ПолноеИмяПользователя()) Тогда
ПолноеИмяПользователя = ИмяПользователя;
Иначе
ПолноеИмяПользователя = ПолноеИмяПользователя();
КонецЕсли;
КонецЕсли;

ДлинаКодаПользователя = Метаданные.Справочники.Пользователи.ДлинаКода;

Если СтрДлина(ИмяПользователя) > ДлинаКодаПользователя Тогда
ИмяПользователя = Лев(ИмяПользователя, ДлинаКодаПользователя);
КонецЕсли;

Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| Пользователи.Ссылка КАК Ссылка,
| Пользователи.ЭтоГруппа
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.Код = &Код";

Запрос.УстановитьПараметр("Код", ИмяПользователя);
Результат = Запрос.Выполнить();

Если Результат.Пустой() Тогда

ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент();

ОбъектПользователь.Код = ИмяПользователя;
ОбъектПользователь.Наименование = ПолноеИмяПользователя;
Попытка
ОбъектПользователь.Записать();
Исключение
ВызватьИсключение "Пользователь : " + ИмяПользователя + " не был найден в справочнике пользователей. Возникла ошибка при добавлении пользователя в справочник.
|" + ОписаниеОшибки();

Возврат Справочники.Пользователи.ПустаяСсылка();

КонецПопытки;

ТекущийПользователь = ОбъектПользователь.Ссылка;

Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();

Если Выборка.ЭтоГруппа Тогда
ВызватьИсключение "Пользователь : " + ИмяПользователя + " не зарегистрирован. В справочнике присутствует группа с тем же именем";
Иначе
ТекущийПользователь = Выборка.Ссылка;
КонецЕсли;

КонецЕсли;

Возврат ТекущийПользователь;

КонецФункции

Функция ПолучитьТекущегоПользователя() Экспорт
Возврат ПараметрыСеанса.ТекущийПользователь;
КонецФункции

5. В документах пропишем Автоопределение Текущего пользователя

Код 1C v 8.2 УП

 &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.Автор = ОбщийМодульСистема.ПолучитьТекущегоПользователя();
Объект.Фирма = Объект.Автор.Фирма;
КонецПроцедуры

Код:

ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
ОрганизацияТекущегоПользователя = Справочники.Пользователи.НайтиПоНаименованию(ТекущийПользователь).Организация;
Сообщить(ОрганизацияТекущегоПользователя);

Код рабочий, но как правильнее сделать? Серверный вариант.

задан 15 янв в 18:23

Вадим Чиркунов's user avatar

если типовая конфигурация:

сообщить(ПараметрыСеанса.ТекущийПользователь);

Если у справочника пользователи есть реквизит ИдПользователяБазы :

Пользователь = Справочники.Пользователи.НайтиПоРеквизиту("ИдПользователяБазы",Строка(ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор));

ответ дан 17 янв в 11:57

Вадим Туманов's user avatar

Клиент заказал скрипт для Обновлятора для создания пользователей и назначения им прав в конфигурации на БСП — в БП3 и ЗУП3.

Для начала проверим, как все работает в БП3, наверное в ЗУП3 должно работать аналогично? Если там будет своя специфика, то поправим на месте.

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

Ручное создание пользователя

Создадим пользователя вручную:

Добавим ему права путем включения в нужную группу доступа:

При всех этих манипуляциях я запустил замер производительности и при запуске 1С выключил режим отладки, чтобы не запускало фоновые задания.

Таким образом я нашел код, где программа создает/обновляет пользователя:

Этот код дает нам примерное понимание, как создавать пользователя программно.

Программное включение/исключение пользователя в группы доступа. Неоптимальное

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

Пользователям назначаются почему-то персональные группы доступа:

Теперь проверяем — если мы снимаем галочку, то права доступа очищаются:

Очищаются они и в конфигураторе:

Теперь попробуем программно изменить группу доступа, написав такой код:

&НаСервере
Процедура ИзменитьПраваГБ2НаСервере()
	ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию("ГБ2");
	ТекПрофиль = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Главный бухгалтер");
	ТекГруппаДоступа = ДатьПерсональнуюГруппуДоступа(ТекПользователь, ТекПрофиль);
	ТекГруппаДоступаОбъект = ТекГруппаДоступа.ПолучитьОбъект();
	Если ТекГруппаДоступаОбъект.Пользователи.Количество() = 0 Тогда
		НСтр = ТекГруппаДоступаОбъект.Пользователи.Добавить();
		НСтр.Пользователь = ТекПользователь;
		Сообщить("Добавлен профиль:" + ТекПрофиль);
	Иначе
		ТекГруппаДоступаОбъект.Пользователи.Очистить();
		Сообщить("Удален профиль:" + ТекПрофиль);
	КонецЕсли;
	ТекГруппаДоступаОбъект.Записать();
	
	
КонецПроцедуры

&НаСервере
Функция ДатьПерсональнуюГруппуДоступа(Пользователь, Профиль)
	З = Новый Запрос(
	"ВЫБРАТЬ
	|	ГруппыДоступа.Ссылка
	|ИЗ
	|	Справочник.ГруппыДоступа КАК ГруппыДоступа
	|ГДЕ
	|	ГруппыДоступа.Профиль = &Профиль
	|	И ГруппыДоступа.Пользователь = &Пользователь
	|	");
	З.УстановитьПараметр("Пользователь", Пользователь);
	З.УстановитьПараметр("Профиль", Профиль);
	Выборка = З.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	КонецЕсли;
КонецФункции

&НаКлиенте
Процедура ИзменитьПраваГБ2(Команда)
	ИзменитьПраваГБ2НаСервере();
КонецПроцедуры

Получилось, при первом запуске у пользователя включилась и группа доступа:

И появились роли в конфигураторе:

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

Программное включение/исключение пользователя в группы доступа. Правильное

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

Получается, можно указать просто название профиля доступа, а 1С сама сделает всю «грязную работу».

В функции ВключитьПрофильПользователю можно указывать идентификатор профиля, но к сожалению, предопределенный только один Администратор:

Поэтому для универсальности будем искать профиль по наименованию:

&НаСервере
Процедура ИзменитьПрофильГБНаСервере(Включить)
	ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию("ГБ2");
	ТекПрофиль = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Главный бухгалтер");
	Если Включить Тогда
		УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);
	Иначе
		УправлениеДоступом.ВыключитьПрофильПользователю(ТекПользователь, ТекПрофиль);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВыключитьПрофильГБ(Команда)
	ИзменитьПрофильГБНаСервере(Ложь);
КонецПроцедуры

&НаКлиенте
Процедура ВключитьПрофильГБ(Команда)
	ИзменитьПрофильГБНаСервере(истина);
КонецПроцедуры

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

Программное создание пользователя и назначение ему прав доступа

Попробуем создать пользователя ГБ3 программно и назначить права доступа:

	//Вводные
	ИмяПользователя = "Главный бухгалтер 3";
	ИмяВходаПользователя = "ГБ3";
	Пароль = "123";
	ВходВПрограммуРазрешен = истина;
	АутентификацияСтандартная = истина;
	АутентификацияWindows = ложь;
	ЗапрещеноИзменятьПароль = ложь;
	ПоказыватьВСпискеВыбора = истина;
	
	
	
	//Создаем пользователя
	ОбновляемыеСвойства = Новый Структура();
	ОбновляемыеСвойства.Вставить("Действие", "Записать"); //Не уверен, что без этого будет работать
	ОбновляемыеСвойства.Вставить("ВходВПрограммуРазрешен", ВходВПрограммуРазрешен); 
	ОбновляемыеСвойства.Вставить("Имя", ИмяВходаПользователя); 
	ОбновляемыеСвойства.Вставить("ПолноеИмя", ИмяПользователя); 
	ОбновляемыеСвойства.Вставить("АутентификацияOpenID", ложь); 
	ОбновляемыеСвойства.Вставить("АутентификацияСтандартная", АутентификацияСтандартная); 
	ОбновляемыеСвойства.Вставить("АутентификацияWindows", АутентификацияWindows); 
	ОбновляемыеСвойства.Вставить("Пароль", Пароль); 
	ОбновляемыеСвойства.Вставить("ПарольУстановлен", истина); 
	ОбновляемыеСвойства.Вставить("ЗапрещеноИзменятьПароль", ЗапрещеноИзменятьПароль); 
	ОбновляемыеСвойства.Вставить("ПоказыватьВСпискеВыбора", ПоказыватьВСпискеВыбора); 
	
	
	ПользовательИБСуществует = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяВходаПользователя) <> Неопределено;
	
	Пользователи.УстановитьСвойстваПользователяИБ(ИмяВходаПользователя, ОбновляемыеСвойства, НЕ ПользовательИБСуществует); //Создавать нового ставим всегда в Истина
	
	
	ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию(ОбновляемыеСвойства.ПолноеИмя, истина);
	ПользовательСуществует = ЗначениеЗаполнено(ТекПользователь);
	
	//Записываем пользователя в 1С, если его еще нет в базе
	Если НЕ ПользовательСуществует Тогда
		Пользователь = Справочники.Пользователи.СоздатьЭлемент();	
		Пользователь.Наименование = ОбновляемыеСвойства.ПолноеИмя;
		Пользователь.ДополнительныеСвойства.Вставить(
		"ОписаниеПользователяИБ", ОбновляемыеСвойства);
		Пользователь.Записать();	
		ТекПользователь = Пользователь.Ссылка;
	КонецЕсли;

	ТекПрофиль = Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию("Главный бухгалтер");
	УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);

Проверяем — пользователь и пользователь ИБ созданы:

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

Также устанавливаются роли и профили групп доступа.

Зайдем под этим пользователем в программу — все ОК, входит нормально.

Теперь настало время проверить, как код работает в Обновляторе. Код смотрите в конце статьи.

Скрипт отработал успешно:

Проверяем, при входе в базу пользователь есть, под пользователем в базу заходит:

В списке пользователей пользователь есть:

Права те, что заказывали:

Как быть с не упрощенными правами (ЗУП3)

Аналогично проверяем на ЗУП 3, получаем ошибку:

Опять берем монитор производительности и находим, что в группы добавление происходит в общей форме Пользователи, в процедуре «ВключитьИсключитьИзГруппы«:

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

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

В упрощенной каждому профилю и пользователю ставится в соответствие персональная группа доступа. В не упрощенном в одну группу доступа можно включать несколько пользователей.

Проверяем — код в ЗУП3 тоже работает:

Итоговый код скрипта для Обновлятора

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

Вот какой код получился:

#use "updater1c"

// ****************************************************************************
// Переменные модуля
// ****************************************************************************

Перем errors;		// Признак того, что при выполнении скрипта были ошибки.
Перем updater;		// Обновлятор, через который мы получаем информацию о базе,
					// а также вызываем различные функции обновлятора.
Перем connector;	// Коннектор для подключения к базе.
Перем v8;			// Само подключение к базе через коннектор.

// ****************************************************************************
// Ваш код для выполнения обновлятором
// ****************************************************************************

Процедура Главная()

	//=========== НАЧАЛО КОДА ДОБАВЛЕНИЯ ПОЛЬЗОВАТЕЛЕЙ ==========

	
	Т = v8.NewObject("ТаблицаЗначений"); 
	Т.Колонки.Добавить("ПолноеИмя");
	Т.Колонки.Добавить("Имя");
	Т.Колонки.Добавить("Пароль");
	Т.Колонки.Добавить("ВходВПрограммуРазрешен");
	Т.Колонки.Добавить("АутентификацияСтандартная");
	Т.Колонки.Добавить("АутентификацияОС");
	Т.Колонки.Добавить("ПользовательОС");
	Т.Колонки.Добавить("ЗапрещеноИзменятьПароль");
	Т.Колонки.Добавить("ПоказыватьВСпискеВыбора");
	Т.Колонки.Добавить("Профили");
	
	//********** НАЧАЛО: ЗДЕСЬ ОПИСЫВАЕМ ПОЛЬЗОВАТЕЛЕЙ ***************
	
	Если v8.Метаданные.Имя = "БухгалтерияПредприятия" Тогда
	
		//ПОЛЬЗОВАТЕЛИ БП
	
		С = Т.Добавить(); 
		С.ПолноеИмя = "Бухгалтер 4";
		С.Имя = "Бух4";
		С.Пароль = "123";
		С.ВходВПрограммуРазрешен = истина;
		С.АутентификацияСтандартная = истина;
	//	С.АутентификацияОС = ложь;
	//	С.ПользовательОС = Неопределено;
		С.АутентификацияОС = истина;
		С.ПользовательОС = "\testtest";
		С.ЗапрещеноИзменятьПароль = ложь;
		С.ПоказыватьВСпискеВыбора = истина;
		С.Профили = "Бухгалтер, Главный бухгалтер";
	
	ИначеЕсли v8.Метаданные.Имя = "ЗарплатаИУправлениеПерсоналом" Тогда
	
		//ПОЛЬЗОВАТЕЛИ ЗУП
		
		С = Т.Добавить(); 
		С.ПолноеИмя = "Кадровик 4";
		С.Имя = "Кадровик4";
		С.Пароль = "123";
		С.ВходВПрограммуРазрешен = истина;
		С.АутентификацияСтандартная = истина;
	//	С.АутентификацияОС = ложь;
	//	С.ПользовательОС = Неопределено;
		С.АутентификацияОС = истина;
		С.ПользовательОС = "\testtest";
		С.ЗапрещеноИзменятьПароль = ложь;
		С.ПоказыватьВСпискеВыбора = истина;
		С.Профили = "Бухгалтер";
		
	КонецЕсли;
	
	
		
	//********** КОНЕЦ ОПИСАНИЯ ПОЛЬЗОВАТЕЛЕЙ ***************
	
	Для Каждого С ИЗ Т Цикл
		
		//Создаем пользователя
		ОбновляемыеСвойства = v8.NewObject("Структура");
		Для Инд = 1 По Т.Колонки.Количество() Цикл
			Колонка = Т.Колонки.Получить(Инд - 1);
			Зн = С.Получить(Инд - 1);
			Если Колонка.Имя = "Профили" Тогда
				Продолжить;
			КонецЕсли;
			Если Зн <> Неопределено Тогда
				ОбновляемыеСвойства.Вставить(Колонка.Имя, Зн);
			КонецЕсли;				
		КонецЦикла;
		ОбновляемыеСвойства.Вставить("Действие", "Записать"); //Не уверен, что без этого будет работать
		ОбновляемыеСвойства.Вставить("ПарольУстановлен", истина); 
		ОбновляемыеСвойства.Вставить("АутентификацияOpenID", ложь); 
		
		
		ПользовательИБСуществует = v8.ПользователиИнформационнойБазы.НайтиПоИмени(С.Имя) <> Неопределено;
		
		v8.Пользователи.УстановитьСвойстваПользователяИБ(С.Имя, ОбновляемыеСвойства, НЕ ПользовательИБСуществует); //Создавать нового ставим всегда в Истина
		
		Сообщить(?(ПользовательИБСуществует, "Добавлен", "Обновлен") + " пользователь ИБ: "  + С.Имя);
		
		ТекПользователь = v8.Справочники.Пользователи.НайтиПоНаименованию(ОбновляемыеСвойства.ПолноеИмя, истина);
		ПользовательСуществует = v8.ЗначениеЗаполнено(ТекПользователь);
		
		//Записываем пользователя в 1С, если его еще нет в базе
		Если НЕ ПользовательСуществует Тогда
			Пользователь = v8.Справочники.Пользователи.СоздатьЭлемент();	
			Пользователь.Наименование = ОбновляемыеСвойства.ПолноеИмя;
			Пользователь.ДополнительныеСвойства.Вставить(
			"ОписаниеПользователяИБ", ОбновляемыеСвойства);
			Пользователь.Записать();	
			ТекПользователь = Пользователь.Ссылка;
			Сообщить("Создан пользователь базы: "  + С.Имя);
		КонецЕсли;
	
		МассивПрофили = СтрРазделить(С.Профили, ",");
		Для Каждого ИмяПрофиля ИЗ МассивПрофили Цикл
			ИмяПрофиля = СокрЛП(ИмяПрофиля);
			Если v8.УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда
				ТекПрофиль = v8.Справочники.ПрофилиГруппДоступа.НайтиПоНаименованию(ИмяПрофиля);
				Если Не v8.ЗначениеЗаполнено(ТекПрофиль) Тогда
					Сообщить("Не найден профиль: " + ИмяПрофиля, СтатусСообщения.Важное);
					Продолжить;
				КонецЕсли;
				v8.УправлениеДоступом.ВключитьПрофильПользователю(ТекПользователь, ТекПрофиль);
			Иначе
				ТекГруппа = v8.Справочники.ГруппыДоступа.НайтиПоНаименованию(ИмяПрофиля);
				Если Не v8.ЗначениеЗаполнено(ТекГруппа) Тогда
					Сообщить("Не найдена группа: " + ИмяПрофиля, СтатусСообщения.Важное);
					Продолжить;
				КонецЕсли;
				
				//Код скопирован из типовой формы ПраваДоступа, несколько упрощен
				ГруппаДоступаОбъект = ТекГруппа.ПолучитьОбъект();
				Добавить = истина;
				Если Добавить Тогда
					Если ГруппаДоступаОбъект.Пользователи.Найти(ТекПользователь, "Пользователь") = Неопределено Тогда
						ГруппаДоступаОбъект.Пользователи.Добавить().Пользователь = ТекПользователь;
					КонецЕсли;
				Иначе
					СтрокаТЧ = ГруппаДоступаОбъект.Пользователи.Найти(ТекПользователь, "Пользователь");
					Если СтрокаТЧ <> Неопределено Тогда
						ГруппаДоступаОбъект.Пользователи.Удалить(СтрокаТЧ);
					КонецЕсли;
				КонецЕсли;
				ГруппаДоступаОбъект.Записать();
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
	
	//=========== КОНЕЦ КОДА ДОБАВЛЕНИЯ ПОЛЬЗОВАТЕЛЕЙ ==========
	

КонецПроцедуры


// ****************************************************************************
// Служебные процедуры
// ****************************************************************************

Процедура ПриНачалеРаботы()

	errors = Ложь;

	updater = Новый Updater1C;

	// Если в скрипте не планируется использовать
	// подключение к базе - просто закомментируйте
	// две нижние строки.
	connector = updater.CreateConnector();
	v8 = updater.BaseConnectNew(connector);
	
КонецПроцедуры

Процедура ПриОкончанииРаботы()

	Если v8 <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(v8);
			v8 = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если connector <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(connector);
			connector = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;
	
	Если updater <> Неопределено Тогда
		Попытка
			ОсвободитьОбъект(updater);
			updater = Неопределено;
		Исключение
		КонецПопытки;
	КонецЕсли;

	Если errors Тогда
		ЗавершитьРаботу(1);
	КонецЕсли;

КонецПроцедуры

// ****************************************************************************
// Инициализация и запуск скрипта
// ****************************************************************************

ПриНачалеРаботы();

Попытка	
	Главная();
	updater.КодПользователяВыполнился();
Исключение
	errors = Истина;
	Сообщить("" + ОписаниеОшибки() + "");
КонецПопытки;

ПриОкончанииРаботы();

Как видно, можно использовать один скрипт для разных баз, прописывая пользователей для разных типов баз (БП, ЗУП) отдельно.

Если в скрипте у Вас возникнут ошибки и вы захотите отладиться, это будет проблематично во внешнем соединении, поэтому просто удалите из кода все строки «v8.» и замените NewObject на Новый, тогда можно будет запускать код в обычной консоли кода.

Кто хочет посмотреть мою тестовую обработку, вот она:

Объем факт: 4 час.

Как в управляемой форме получить текущего пользователя?

Я
   Genby

16.10.14 — 13:18

Как в управляемой форме получить текущего пользователя?

   Fish

1 — 16.10.14 — 13:20

Да так же, как и в обычной.

   Genby

2 — 16.10.14 — 13:20

дайте код плиз

   oslokot

3 — 16.10.14 — 13:23

лентяй

Пользователи.ТекущийПользователь()

   Fish

4 — 16.10.14 — 13:24

МенеджерПользователейИнформационнойБазы (InfoBaseUsersManager)

ТекущийПользователь (CurrentUser)

Синтаксис:

ТекущийПользователь()

Возвращаемое значение:

Тип: ПользовательИнформационнойБазы.

Описание пользователя, аутентифицированного в текущем сеансе. Если список пользователей информационной базы пустой, то в качестве текущего пользователя будет возвращен пользователь с пустым именем и идентификатором объекта, полученного методом НайтиПоИмени, если в параметре указано пустое имя.

Описание:

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

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

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Примечание:

Доступен всем пользователям.

   Maxus43

5 — 16.10.14 — 13:24

имхается ему надо элемент справочника пользователи, ответсвенного поставить иль ещё что

   mehfk

6 — 16.10.14 — 13:24

(0) Делай так

ТекущийПользователь = Справочники.Пользователи.ПустаяСсылка();

ВвестиЗначение(ТекущийПользователь, «Я начинающий мордовский программист 1с и еще не знаю как определять текущего пользователя, поэтому выберите сами себя из справочника»);

   Fish

7 — 16.10.14 — 13:25

(5) Тогда код в (3) подойдёт, если типовая конфа.

   oslokot

8 — 16.10.14 — 13:26

(7) да-да, поэтому и дал наводку. В нетиповой пусть думает сам

   Genby

9 — 16.10.14 — 13:35

(3)

{ОбщийМодуль.РаботаСПочтовымиСообщениямиКлиент.Модуль(44,22)}: Переменная не определена (Пользователи)

                                                сообщить(<<?>>Пользователи.ТекущийПользователь()); (Проверка: Тонкий клиент)

   silent person

10 — 16.10.14 — 13:40

(9) ПользователиИнформационнойБазы.ТекущийПользователь()

а причем тут управляемая форма ?

   lxndr

11 — 16.10.14 — 13:45

(9)> Проверка: Тонкий клиент

Акцентируемся

   Genby

12 — 16.10.14 — 13:56

В УТ 11 есть процедура «ОткрытьФормуОтправкиПочтовогоСообщения»

так вот там ни одна из предложенных схем не работает

   lxndr

13 — 16.10.14 — 13:58

(12) общий модуль «Пользователи» не доступен на тонком клиенте

   Долбино

14 — 16.10.14 — 14:00

…а пользователя может и не быть!

   marvak

15 — 16.10.14 — 14:03

(12)

В УТ 11.2 получай через Пользователи.АвторизованныйПользователь()

В нужной упр. форме сделай какую нить функцию с вызовом &НаСервере, через нее и получай.

   marvak

16 — 16.10.14 — 14:10

Типа такого

&НаКлиенте

Процедура Команда1(Команда)

    ТекПольз = ПолучитьПольз();

КонецПроцедуры

&НаСервере

Функция ПолучитьПольз()

    Возврат Пользователи.АвторизованныйПользователь();    

КонецФункции // ()

   Rebelx

17 — 16.10.14 — 14:12

(16) есть же модуль ПользователиКлиентСервер

  

marvak

18 — 16.10.14 — 14:14

(17)

Ну тогда еще проще, я просто что первое вспомнил написал.

Вопрос:

Ребят, как можно получить пользователя информационной базы 1С? Это же не справочник в конфигурации. У меня есть только Пользователь, подскажите как решить такую проблему!

 Ответ:

У элемента справочника Пользователи есть идентификатор пользователя ИБ, по нему и можно получить пользователя информационной базы.

Пример для текущего пользователя:

ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
УИНПользователя     = ТекущийПользователь.ИдентификаторПользователяИБ;

ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(УИНПользователя);

Понравилась статья? Поделить с друзьями:
  • Как найти проводника вагона
  • Как найти для ноутбука беспроводный интернет
  • Как найти работа в москве подработка
  • Как составить акт инвентаризации с подотчетными лицами
  • Как ватсапе изменить сообщение отправленное на андроиде исправить