Розница 2.0 Связка пользователя ИБ с рабочим местом

1. LSM 01.11.12 18:58 Сейчас в теме
Добрый день. Может кто подскажет по следующей теме.
Под одним логином в компе, работают 2 пользователя ИБ 1с. Соответственно у них создается одинаковый ИдентификаторПользователя. При входе в режим РМК, приходится выбирать соответствующее рабочее место. Как сделать чтобы рабочее место определялось еще и по имени пользователя, который входит в 1С. А то не логично получается, пароль под пользователя установлен, а дальше он может выбрать другое рабочее место.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. lenafoxy 02.11.12 10:40 Сейчас в теме
(1) LSM, та же самая проблема
2. bforce 482 02.11.12 10:28 Сейчас в теме
Надо, чтобы под этого пользователя было заведено только одно рабочее место, тогда он не будет предлагать его выбрать.
4. LSM 02.11.12 11:19 Сейчас в теме
(2)
Тут скорее проблема в другом, СистемнаяИнформация.ИдентификаторКлиента как я понимаю, возвращает UID пользователя компьютера, а на пользователя ИБ 1С. Поэтому если под одним логином в системе работают более одного пользователя, а в 1с у них разные учетки, то от выбора рабочего места не избавишься.
6. bforce 482 02.11.12 13:29 Сейчас в теме
(4) LSM, так-то оно так, но...

Давайте посмотрим на функцию НайтиРабочиеМестаПоИД
// Функция возвращает список рабочих мест, соответствующих указанному имени компьютера
Функция НайтиРабочиеМестаПоИД(ИдентификаторКлиента) Экспорт

	Запрос = Новый Запрос("
	|ВЫБРАТЬ
	|	РабочиеМеста.Ссылка
	|ИЗ
	|	Справочник.РабочиеМеста КАК РабочиеМеста
	|ГДЕ
	|	РабочиеМеста.Код = &Код
	|	И РабочиеМеста.ПометкаУдаления = ЛОЖЬ
	|");

	Запрос.УстановитьПараметр("Код", ИдентификаторКлиента);

	СписокКомпьютеров = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");

	Возврат СписокКомпьютеров;

КонецФункции
Показать

Из нее следует, что будет найдено одно рабочее место.
А из этого кода следует вывод, что, если оно одно, то оно и будет подставлено в параметр сеанса, а форма вызываться не будет.
		МассивРабочихМест = МенеджерОборудованияКлиентПовтИсп.НайтиРабочиеМестаПоИД(ВРег(СистемнаяИнформация.ИдентификаторКлиента));
		Если МассивРабочихМест.Количество() = 0 Тогда
			
			Параметры = Новый Структура;
			Параметры.Вставить("ИмяКомпьютера");
			Параметры.Вставить("ИдентификаторКлиента");
			Параметры.Вставить("СетевойПорт");
			
			#Если Не ВебКлиент Тогда
				Параметры.ИмяКомпьютера = ИмяКомпьютера();
			#КонецЕсли
			
			Параметры.ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента;
			Параметры.СетевойПорт          = МенеджерОборудованияКлиентСервер.ПолучитьСетевойПортПоУмолчанию();
			РабочееМесто = МенеджерОборудованияСервер.СоздатьРабочееМестоКлиента(Параметры);
			
		ИначеЕсли МассивРабочихМест.Количество() = 1 Тогда
			
			РабочееМесто = МассивРабочихМест[0];
			
		ИначеЕсли МассивРабочихМест.Количество() > 1 Тогда
			Результат = МенеджерОборудованияКлиент.ВыбратьРабочееМесто(Истина, ВРег(СистемнаяИнформация.ИдентификаторКлиента));
			
			РабочееМесто = МенеджерОборудованияКлиентПовтИсп.ПолучитьРабочееМестоКлиента();
			
		КонецЕсли;
Показать
7. LSM 02.11.12 14:50 Сейчас в теме
(6) Если несколько пользователей 1С входят из под одной учетки Windows, то у них будет один ИдентификаторКлиента. На одном компьютере у меня работает 2 кассира, под одной учеткой Windows, поэтому и происходит обращение к выбору рабочего места.
8. bforce 482 02.11.12 14:56 Сейчас в теме
(7) LSM, Но рабочее место по факту в справочнике одно, вы уверены?
9. LSM 02.11.12 16:06 Сейчас в теме
(8) Да в том и дело что 2 рабочих места кассира мне надо иметь на одном компьютере. 2 кассира посменно работают.
5. LSM 02.11.12 11:20 Сейчас в теме
Так не хотелось менять код, но видимо придется... Хотя все равно уже менял )
10. bforce 482 02.11.12 16:16 Сейчас в теме
Тогда вот этот запрос нужно модифицировать
|ВЫБРАТЬ
    |    РабочиеМеста.Ссылка
    |ИЗ
    |    Справочник.РабочиеМеста КАК РабочиеМеста
    |ГДЕ
    |    РабочиеМеста.Код = &Код
И РабочиеМеста.Пользователь = &ТекущийПользователь
    |    И РабочиеМеста.ПометкаУдаления = ЛОЖЬ


Реквизит добавить в справочник и вывести на форму. Тогда будет отбираться одно рабочее место.
Оставьте свое сообщение

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