|   |   | 
| 
 | Определить, через что открыл пользователь 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) всё фантазируешь...
 СП: Отсутствие директивы компиляции перед процедурой (функцией) означает использование директивы по умолчанию. Директивой по умолчанию является &НаСервере. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |