Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 12:29

Определение текущего Пользователя в ИБ, подстановка пользователя в справочник

Автор LavrS, 01 апр 2016, 14:29

0 Пользователей и 1 гость просматривают эту тему.

LavrS

Здравствуйте, из этой темы

https://helpf.pro/faq82/view/1391.html как подставить не в документ, а в справочник?

Благодарю.

Rasty

так же как и в документ, только в справочник.
Неожиданно, правда?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

LavrS

Вопрос решен: https://helpf.pro/help/view/17161.html#end

v8.2 УП: Определение текущего Пользователя в ИБ, подстановка пользователя в справочник

Yandex
Возможно, вас также заинтересует

Реклама на портале

all4cf
01.04.2016 17:58 Ответ № 1

тогда текущий пользователь уже хранится в параметрах сеанса

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

Lavr
07.04.2016 14:43 Ответ № 2

Не выходит, ругается вообще на Модель сеанса: {МодульСеанса(2,22)}: Переменная не определена (ОбщийМодульСистемы) ТекущийПользователь=<<?>>ОбщийМодульСистемы.ОпределитьТекущегоПользователя();

E_Migachev
07.04.2016 22:59 Ответ № 3

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

Lavr
08.04.2016 12:27 Ответ № 4

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

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

4. Создаем общий модуль ОбщийМодульСистема в нем пишем: Код 1C v 8.2 УП

// Функция возвращает ссылку на элемент справочника "Пользователи", // соответствующий текущему пользователю информационной базы. Функция ОпределитьТекущегоПользователя() экспорт Если ПустаяСтрока(ИмяПользователя()) Тогда ИмяПользователя = "НеАвторизован"; ПолноеИмяПользователя = "Не авторизован"; Иначе ИмяПользователя = ИмяПользователя(); Если ПустаяСтрока(ПолноеИмяПользователя()) Тогда ПолноеИмяПользователя = ИмяПользователя; Иначе ПолноеИмяПользователя = ПолноеИмяПользователя(); КонецЕсли; КонецЕсли; ДлинаКодаПользователя = Метаданные.Справочники.Пользователи.ДлинаКода; Если СтрДлина(ИмяПользователя) > ДлинаКодаПользователя Тогда ИмяПользователя = Лев(ИмяПользователя, ДлинаКодаПользователя); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | Пользователи.Ссылка КАК Ссылка, | Пользователи.ЭтоГруппа |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Код =Код"; Запрос.УстановитьПараметр("Код", ИмяПользователя); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент(); ОбъектПользователь.Код = ИмяПользователя; ОбъектПользователь.Наименование = ПолноеИмяПользователя; Попытка ОбъектПользователь.Записать(); Исключение ВызватьИсключение "Пользователь : " + ИмяПользователя + " не был найден в справочнике пользователей. Возникла ошибка при добавлении пользователя в справочник. |" + ОписаниеОшибки(); Возврат Справочники.Пользователи.ПустаяСсылка(); КонецПопытки; ТекущийПользователь = ОбъектПользователь.Ссылка; Иначе Выборка = Результат.Выбрать(); Выборка.Следующий(); Если Выборка.ЭтоГруппа Тогда ВызватьИсключение "Пользователь : " + ИмяПользователя + " не зарегистрирован. В справочнике присутствует группа с тем же именем"; Иначе ТекущийПользователь = Выборка.Ссылка; КонецЕсли; КонецЕсли; Возврат ТекущийПользователь; КонецФункции Функция ПолучитьТекущегоПользователя() Экспорт Возврат ПараметрыСеанса.ТекущийПользователь; КонецФункции [/pre]

5. В документах пропишем Автоопределение Текущего пользователя Код 1C v 8.2 УП

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

Только в пункте 5 вставка в справочник должна быть.

Lavr
08.04.2016 12:31 Ответ № 5

Вот здесь все расписано лучше

https://helpf.pro/faq82/view/1391.html

all4cf
08.04.2016 13:31 Ответ № 6

у ОбщийМодульСистемы стоят в свойствах вызов Сервер и Клиент?

Lavr
08.04.2016 14:13 Ответ № 7

Клиент (УП) и Сервер поставить?

E_Migachev
10.04.2016 23:45 Ответ № 9

поэтому он недоступен и выдает ошибку

Lavr
14.04.2016 09:10 Ответ № 10

Все выставил, код в форме справочника:

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

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

ошибка:

{Справочник.ЛёвинВА.Форма.ФормаЭлемента.Форма(3,13)}: Переменная не определена (ОбщийМодульСистема)Сотрудник = <<?>>ОбщийМодульСистема.ПолучитьТекущегоПользователя(); (Проверка: Сервер)

Lavr
14.04.2016 12:51 Ответ № 11

Код в форме справочника не верен, я его подправил, но на текущую ошибку это все равно не влияет.

Lavr
14.04.2016 13:03 Ответ № 12

Предыдущую ошибку исправил, сейчас посыпались синтаксические ошибки:

{ОбщийМодуль.ОбщийМодульСистемы.Модуль(35)}: Ошибка при вызове метода контекста (Выполнить) Результат = Запрос.Выполнить();по причине:{(4, 15)}: Поле не найдено "Пользователи.ЭтоГруппа"Пользователи.<<?>>ЭтоГруппа

Здесь весь код возможно содержит ошибки:

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

Если ПустаяСтрока(ИмяПользователя()) Тогда ИмяПользователя = "НеАвторизован"; ПолноеИмяПользователя = "Не авторизован"; Иначе ИмяПользователя = ИмяПользователя(); Если ПустаяСтрока(ПолноеИмяПользователя()) Тогда ПолноеИмяПользователя = ИмяПользователя; Иначе ПолноеИмяПользователя = ПолноеИмяПользователя(); КонецЕсли; КонецЕсли; ДлинаКодаПользователя = Метаданные.Справочники.Пользователи.ДлинаКода; Если СтрДлина(ИмяПользователя) > ДлинаКодаПользователя Тогда ИмяПользователя = Лев(ИмяПользователя, ДлинаКодаПользователя); КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | Пользователи.Ссылка КАК Ссылка, | Пользователи.ЭтоГруппа |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.Код =Код"; Запрос.УстановитьПараметр("Код", ИмяПользователя); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда ОбъектПользователь = Справочники.Пользователи.СоздатьЭлемент(); ОбъектПользователь.Код = ИмяПользователя; ОбъектПользователь.Наименование = ПолноеИмяПользователя; Попытка ОбъектПользователь.Записать(); Исключение ВызватьИсключение "Пользователь : " + ИмяПользователя + " не был найден в справочнике пользователей. Возникла ошибка при добавлении пользователя в справочник. |" + ОписаниеОшибки(); Возврат Справочники.Пользователи.ПустаяСсылка(); КонецПопытки; ТекущийПользователь = ОбъектПользователь.Ссылка;

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

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

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

E_Migachev
14.04.2016 14:23 Ответ № 13

Сделайте все по инструкции и ОбщийМодульСистемы в свойствах поставить галки вызов Сервер и Клиент

Справочник пользователи создан?

Lavr
15.04.2016 07:10 Ответ № 14

Поставил галочки, справочник создан.

Lavr
18.04.2016 13:00 Ответ № 15

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

Я уже все перерыл... Может .cf скинуть куда?

Lavr
22.04.2016 14:08 Ответ № 17

http://diif.ru/B2ETva7

пароля нет, учетка с административными правами - Лаврентий Сергеевич
all4cf
25.04.2016 00:52 Ответ № 18

Так все работает - в чем проблема-то? - 1Cv8.rar

в приложенном файле конфа, с пользователем Админ и авторизацией

Lavr
25.04.2016 07:05 Ответ № 19

Там поле Сотрудник в первом справочнике, "Левин", автоматически не заполнялось, только если я выбираю ручками из справочника Сотрудники.

Lavr
25.04.2016 08:26 Ответ № 20

Под Админом вошел, в поле Сотрудник не подставляется Админ автоматом. Справочник ЛевинВА

all4cf
25.04.2016 11:59 Ответ № 21

Не так сделал, вот как надо:

Код 1C v 8.3 &НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.Сотрудник) Тогда
Объект.Сотрудник = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;
//Если Элементы.Сотрудник.Пустой() Тогда
//Элементы.Сотрудник = ОбщийМодульСистемы.ПолучитьТекущегоПользователя().Пользователи;
//Запись.ИсходныйКлючЗаписи.Пустой() Тогда
//Запись.Сотрудник = ОбщийМодульСистемы.ПолучитьТекущегоПользователя().ФизическоеЛицо;
//КонецЕсли;
КонецПроцедуры

1Cv8.rar

Lavr
27.04.2016 05:57 Ответ № 22

Да! Все работает!! Очень благодарен!

Подсказка: Для быстрого поиска ответов - используйте 'Поиск'

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск