Вход | Регистрация

1С:Предприятие ::

Метки: 

Контекст выполнения HTTP-сервисов. Как определить что сеанс открыт из HTTP-сервиса?

Я
   drdroid
 
08.11.17 - 09:45
Как определить что код выполняется из вызова HTTP-сервиса?
Мне это необходимо сделать в модуле сеанса, еще до соответствующих обработчиков HTTP-сервиса...

Нагуглил следующие функции, но они не дают возможности идентификации именно HTTP-сервиса.

ТекущийРежимЗапуска()
Функция ОпределитьКонтекст() Экспорт
    
    
 #Если ВнешнееСоединение Тогда

  Возврат "Внешнее соединение";
 #КонецЕсли

 
// Клиентов много.

 #Если Клиент Тогда

  #Если МобильноеПриложениеКлиент Тогда

   Возврат "Мобильное приложение (клиент)";
  #КонецЕсли

  #Если ВебКлиент Тогда

   Возврат "Веб-клиент"; 
  #КонецЕсли

  #Если ТонкийКлиент Тогда

   Возврат "Тонкий клиент";
  #КонецЕсли

  #Если ТолстыйКлиентУправляемоеПриложение Тогда

   Возврат "Толстый клиент (управляемоеПриложение)";
  #КонецЕсли

  #Если ТолстыйКлиентОбычноеПриложение Тогда

   Возврат "Толстый клиент (обычноеПриложение)";
  #КонецЕсли

 #КонецЕсли

 
 #Если Сервер Тогда

  #Если МобильноеПриложениеСервер Тогда

   Возврат "Мобильное приложение (сервер)";
  #КонецЕсли

  // Так как 1С:Предприятие поддерживает два варианта работы (файловый и клиент-серверный),

  // то отработаем каждый из вариантов.

  Если Лев(СтрокаСоединенияИнформационнойБазы(), 4) = "File" Тогда
  // Виртуальный сервер используется в файловом варианте.

   Возврат "Виртуальный сервер"
  Иначе
  // Реальный сервер используется в клиент-серверном варианте.

   Возврат "Реальный сервер";
  КонецЕсли;
 #КонецЕсли

 
КонецФункции
 
 
   xxTANATORxx
 
1 - 08.11.17 - 10:02
(0)зачем вам?
*сорри за офтоп
   drdroid
 
2 - 08.11.17 - 10:45
(1) Необходимо определенным образом заполнить параметры сеанса для HTTP-сервиса (разделить код заполнения параметров для разных типов подключения).
   xxTANATORxx
 
3 - 08.11.17 - 11:53
(2)не грузитесь, сделайте отдельный параметр сеанса
емнип параметр сеанса заполняется в момент первого обращения к нему, в обработчике сервиса обратитесь к нужному параметру сеанса, он заполнится, профит
   drdroid
 
4 - 08.11.17 - 12:39
(3) костыль то я уже соорудил, но интерес остался... 1Ска то умеет различать "типы предметов отладки" в конфигураторе т.е. это регламентное задание или HTTP-сервис или толстый клиент, так неужто нельзя программно нельзя это определить?
   DmitrO
 
6 - 08.11.17 - 13:03
(4)Ты еще попроси чтобы цвет фона панели разделов можно было изменять. Совсем страх потеряли. Священным Синодом это признано бесовством, и да будет так!
   drdroid
 
7 - 08.11.17 - 13:37
(6) Ну как минимум один способ я нашел.

Вот только в консоли кластера и в отладчике конкретно видно что это HTTP-сервис, а через соединения  ИБ "ИмяПриложения" видео: WebServerExtension ("Модуль расширения веб-сервера"):
https://www.screencast.com/t/tu9ft3z42X


Функция ПолучитьИмяПриложенияТекущегосоиденения()
      
        СоединенияИнформационнойБазы         = ПолучитьСоединенияИнформационнойБазы();
        НомерСоединенияИнформационнойБазы     = НомерСоединенияИнформационнойБазы();
        Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл         
            Если Соединение.НомерСоеденения = НомерСоединенияИнформационнойБазы Тогда
                //ПредставлениеПриложения(Соединение.ИмяПриложения);

                Возврат Соединение.ИмяПриложения;    
            КонецЕсли;   
        КонецЦикла;
        
КонецФункции
   drdroid
 
8 - 08.11.17 - 13:38
ункция ПолучитьИмяПриложенияТекущегоСоеденения()
      
        СоединенияИнформационнойБазы         = ПолучитьСоединенияИнформационнойБазы();
        НомерСоединенияИнформационнойБазы     = НомерСоединенияИнформационнойБазы();
        Для Каждого Соединение Из СоединенияИнформационнойБазы Цикл         
            Если Соединение.НомерСоеденения = НомерСоединенияИнформационнойБазы Тогда
                //ПредставлениеПриложения(Соединение.ИмяПриложения);


                Возврат Соединение.ИмяПриложения;    
            КонецЕсли;   
        КонецЦикла;
        
КонецФункции
   drdroid
 
9 - 08.11.17 - 13:39
ща пару минут и раскопаю как.
   drdroid
 
10 - 08.11.17 - 13:55
Короче меняем ПолучитьСоединенияИнформационнойБазы() на ПолучитьСеансыИнформационнойБазы() и все, теперь видно это   HTTP-сервис или что другое
 
 Рекламное место пустует
   Fragster
 
11 - 08.11.17 - 16:37
а ты из каждых 10 строк кода, про которые раньше не знал, статью на инфостарте будешь делать?
   Fragster
 
12 - 08.11.17 - 16:39
особенно мило смотрится код из (0), который добавлен тупо для увеличения объема статьи, иначе не пропускалось модераторами.
   drdroid
 
13 - 08.11.17 - 19:56
(11) а в чем проблема? Мне не в лом. Тут мне не помогли, в интернетах решение тоже не гуглится. Код добавлен не для увеличения объема, он там кстати, так как реализует определения именно контекста выполнения кода, что тоже иногда необходимо.


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует