Имя: Пароль:
1C
 
Определить, через что открыл пользователь 1с.
,
0 nodrama
 
29.06.22
15:54
Доброго времени суток. На форме есть Кнопка. Кнопка имеет процедуру "НаКлиенте"
В процедуре, перед кодом вставляю Функцию. Далее захожу как угодно, хоть веб, хоть тонкий, хоть толстый. Но эта функция всегда возвращает "Сервер"... собственно функция плагиат с гугла, как определить быстренько, через что зашел пользователь в 1с? интересует только Толстый/Тонкий или Веб/Мобилка


Функция ПолучитьТекущуюСредуВыполнения() Экспорт
    
   #Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда

        Возврат "Толстый клиент";
    #ИначеЕсли Сервер Тогда

        Возврат "Сервер";
    #ИначеЕсли ВнешнееСоединение Тогда

        Возврат "Внешнее соединение";
    #ИначеЕсли ТонкийКлиент Тогда

        Возврат "Тонкий клиент";
    #ИначеЕсли ВебКлиент Тогда

        Возврат "Веб-клиент";
        
    #ИначеЕсли МобильноеПриложениеКлиент Тогда

        Возврат "Мобильник";
    #Иначе

        Возврат "Ошибка определения среды выполнения";
    #КонецЕсли
    
КонецФункции
1 Aleksey
 
29.06.22
15:56
Ты изобрел функцию которая есть в БСП
2 Kassern
 
29.06.22
16:02
(0) "Но эта функция всегда возвращает "Сервер"" - наверное потому, что она выполняется с директивой &НаСервере, или находится в общем модуле серверном.
3 d1m0n666
 
29.06.22
16:28
эту функцию напиши на клиенте и вызывай. Ну и плюс добавь условие на мобильное приложение

Функция ВидПриложения()

    #Если ВебКлиент Тогда
    Возврат НСтр("ru = 'Веб-клиент'");
    #ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда
    Возврат НСтр("ru = 'Толстый клиент, обычное приложение'");
    #ИначеЕсли ТолстыйКлиентУправляемоеПриложение Тогда
    Возврат НСтр("ru = 'Толстый клиент, управляемое приложение'");
    #ИначеЕсли ТонкийКлиент Тогда
    Возврат НСтр("ru = 'Тонкий клиент'");
    #Иначе
    Возврат "";
    #КонецЕсли

КонецФункции
4 Жан Пердежон
 
29.06.22
16:59
(0) кури БСП, там уже всё сделано
5 nodrama
 
29.06.22
17:00
(2) так нет же. Я вставил эту функцию в обработку себе. На клиенте. И вызываю ее перед кодом который выполняется тоже на клиенте. Но возвращает она всегда сервер. Мб жарко очень мне ))). Завтра продолжу.
6 Жан Пердежон
 
29.06.22
17:01
(5) а где директива у функции в (0)?
7 nodrama
 
29.06.22
17:01
(3) а чем она принципиально отличается от той что я написал выше ?
8 nodrama
 
29.06.22
17:02
(6) ушёл уже от компа. Проверю завтра. Мб не скопировал
9 Deon
 
29.06.22
17:03
(5) Если директивы нет, то функция выполняется &НаСервере
10 Fedor-1971
 
29.06.22
17:09
(9) нет, в контексте предыдущей установки области выполнения
&НаСервере
функция 1()
функция 2() - останется НаСервере

&НаКлиенте
Функция 3()
Функция 4() - будет НаКлиенте

Распространённый косяк с неочевидными проблемами
11 Deon
 
29.06.22
17:22
(10) Проверил внешней обработочкой. Функция 4() выполнилась на сервере.
12 Fedor-1971
 
29.06.22
17:52
(11) поставь в неё Предупреждение (доступна только на клиенте и при вызове в серверном контексте выдаёт ошибку) и проверь синтаксические ошибки
13 Deon
 
30.06.22
08:30
(12) В функции 4 выдало ошибку, что Предупреждение недоступно. Так что, всё нормуль.
14 Жан Пердежон
 
30.06.22
18:09
(10) всё фантазируешь...

СП: Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере.