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

Условия для текущего пользователя

Автор aNDYsm, 09 сен 2018, 20:37

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

aNDYsm

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

Процедура ПриНачалеРаботыСистемы()
   
      Если ПараметрыСеанса.ТекущийПользователь = ("КузнецовАВ") тогда
      Сообщить("В начале месяца прошу предоставить акт сверки")
      КонецЕсли;
      
КонецПроцедуры

Выдает ошибку
МодульУправляемогоПриложения(91,8)}: Переменная не определена (ПараметрыСеанса)
      Если <<?>>ПараметрыСеанса.ТекущийПользователь = ("КузнецовАВ") тогда (Проверка: Тонкий клиент)



Golickoff

К параметрам сеанса нужно обращаться на стороне сервера.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

aNDYsm

Цитата: Golickoff от 10 сен 2018, 02:09
К параметрам сеанса нужно обращаться на стороне сервера.

Простите, можно чуть подробнее как именно прописать?

Golickoff

Создайте процедуру/функцию с директивой &НаСервере и проверяйте имя пользователя внутри этой процедуры/функции.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

aNDYsm

Цитата: Golickoff от 10 сен 2018, 10:03
Создайте процедуру/функцию с директивой &НаСервере и проверяйте имя пользователя внутри этой процедуры/функции.

&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
   
   ПриНачалеРаботыСистемыНаша();
      
КонецПроцедуры

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

Ругается что
Процедура или функция с указанным именем не определена (ПриНачалеРаботыСистемыНаша)
   <<?>>ПриНачалеРаботыСистемыНаша(); (Проверка: Тонкий клиент)


alex0402

Цитата: aNDYsm от 10 сен 2018, 10:36Ругается что
 Процедура или функция с указанным именем не определена (ПриНачалеРаботыСистемыНаша)
   <<?>>ПриНачалеРаботыСистемыНаша(); (Проверка: Тонкий клиент)

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

aNDYsm

Цитата: alex0402 от 10 сен 2018, 11:07
Цитата: aNDYsm от 10 сен 2018, 10:36Ругается что
Процедура или функция с указанным именем не определена (ПриНачалеРаботыСистемыНаша)
   <<?>>ПриНачалеРаботыСистемыНаша(); (Проверка: Тонкий клиент)

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

Получилось так

Создан общий модуль "ПоказатьПользователя"

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

А в модуле управления прописано

&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
   
   ПоказатьПользователя.ПриНачалеРаботыСистемыНаша();
      
КонецПроцедуры

Но пишет так же ошибку
Переменная не определена (ПоказатьПользователя)
   <<?>>ПоказатьПользователя.ПриНачалеРаботыСистемыНаша(); (Проверка: Тонкий клиент)



LexaK

можно без всей этой свистопляски с общими модулями обойтись
просто используйте функцию

Глобальный контекст (Global context)
ИмяПользователя (UserName)
Синтаксис:
ИмяПользователя()
Возвращаемое значение:
Тип: Строка.
Имя пользователя.
Описание:
Получает имя пользователя, указанного при запуске программы.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:
ТекущийПользователь = ИмяПользователя();

если помогло нажмите: Спасибо!

aNDYsm

Цитата: LexaK от 10 сен 2018, 17:16
можно без всей этой свистопляски с общими модулями обойтись
просто используйте функцию

Глобальный контекст (Global context)
ИмяПользователя (UserName)
Синтаксис:
ИмяПользователя()
Возвращаемое значение:
Тип: Строка.
Имя пользователя.
Описание:
Получает имя пользователя, указанного при запуске программы.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:
ТекущийПользователь = ИмяПользователя();

Извиняюсь за наглость, куда это все вписывать?

LexaK

да это можно использовать в самой первой вашей процедуре

Процедура ПриНачалеРаботыСистемы()
   
      //Если ПараметрыСеанса.ТекущийПользователь = ("КузнецовАВ") тогда
      Если ИмяПользователя() = "КузнецовАВ" Тогда //и все, ни каких общих модулей с серверами
      Сообщить("В начале месяца прошу предоставить акт сверки")
      КонецЕсли;
     
КонецПроцедуры
если помогло нажмите: Спасибо!

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

Рейтинг@Mail.ru

Поиск