Имя: Пароль:
1C
1С v8
Web сервис, момент подключения
0 alexei366
 
04.09.13
22:58
Сам пока не тестил, думаю опытные мне сразу скажут.
Ситуация:
В базе 1С сделан веб сервис с пару методов. Стороний софт подключается к нему. Вот тут тот самый момент, а именно скажите мне пожалуйста в функции операции веб сервиса подключившийс будет восприниматься как ВебКлиент (ну я про директивы типа Если Клиент Тогда...), и будет ли при этом выполнятьс модуль сеанса (а то тама много всяких вызовов у меня ненужный дл SOAP клиента).
Корочь смысл в чем: как мне в модуле сеанса определить что подключение инициированно операцией веб сервиса (если модуль сеанса конешь вызывается).
1 Адимр
 
04.09.13
23:22
думаю что модуль сеанса не запускается при вызове веб сервиса.
2 Адимр
 
04.09.13
23:24
только серверный код будет работать
3 alexei366
 
05.09.13
01:40
(2) Что ты подозреваешь под серверным кодом? то что будет выполняться прописаное в функции операции сервиса - эт да. Вопрос будет ли модуль сеанса выполняться, так как мы в "серверном коде" сможем к параметрам сеанса обращаться - ведь так.
4 shachneff
 
05.09.13
02:15
Объект конфигурации Web-сервис содержит модуль, в котором создаются процедуры на встроенном языке, выполняемые при вызове тех или иных операций Web-сервиса. Типы параметров операций Web-сервиса описываются с помощью типов XDTO и могут представлять собой либо значения XDTO, либо объекты XDTO.

Вызов Web-сервиса происходит следующим образом:

? из пула соединений выбирается подходящее соединение с информационной базой; при отсутствии необходимого соединения соединение создается;

? создается новый сеанс и для созданного сеанса вызывается событие УстановкаПараметровСеанса (в модуле сеанса);

? выполняется вызов затребованного метода Web-сервиса, при этом происходит вызов обработчика УстановкаПараметровСеанса() (в модуле сеанса) каждый раз, когда происходит обращение к неинициализированному параметру сеанса.

СОВЕТ. Не рекомендуется выполнять ресурсоемкие операции в обработчике события УстановкаПараметровСеанса.

Событие УстановкаПараметровСеанса модуля сеанса вызывается на сервере в привилегированном режиме. Модуль вызванного сервиса исполняется на сервере в обычном режиме.

Модуль сеанса (см. здесь) служит для инициализации параметров сеанса и выполнения некоторого набора команд при вызове любого Web-сервиса системы «1С:Предприятие».

http://its.1c.ru/db/v83doc#content:75:1:IssOgl1_17.1.ПредоставлениефункциональностичерезWeb-сервисы
5 alexei366
 
05.09.13
02:26
(4) ну у меня доступа нет))

Но как я понл, если необращаться к параметрам сеанса то все ок будет, тоесть не будет вызываться установка параметров сеанса.

Правильно?
6 Jolly Roger
 
05.09.13
04:55
(6) вот это будет всегда вызываться:

? создается новый сеанс и для созданного сеанса вызывается событие УстановкаПараметровСеанса (в модуле сеанса);
7 alexei366
 
05.09.13
09:43
(6) А как тогда понять что это веб сервис инициировал сеанс в модуле сеанса
8 AaNnDdRrEeYy
 
05.09.13
10:28
просто поэксперементируй
# Если ВебКлиент ТОгда
  Возврат "Это веб клиент";
#ИНаче
возврат "Нет это не веб клиент";
#КонецЕсли

и вызови этот код через веб сервис.
что получится напиши обязательно, мне самому интересно.
9 alexei366
 
05.09.13
10:36
(8) Ну так вебклиент может получиться при запуске базы из браузера. Ну так то в теории я публиковать сам интерфейс не собираюсь (вроде как пользователи локальные будут), ну такой подход мне не очень нравиться.
10 Serginio1
 
05.09.13
10:43
11 alexei366
 
05.09.13
10:51
(10) Ну как я понял ВебКлиента от Web сервиса не отличить(((. Отличие только что не выполняется модуль управляемого приложения (но это мне не поможет).
12 yukon
 
05.09.13
10:52
(7) Копать здесь:

СоединениеИнформационнойБазы (InfoBaseConnection)
ИмяПриложения (ApplicationName)
Использование:

Только чтение.
Описание:

Тип: Строка.
Имя приложения, использующего соединение с информационной базой.
Допустимые имена:
1CV8 - идентификатор приложения 1С:Предприятие в режиме толстого клиента;
1CV8C - идентификатор приложения 1С:Предприятие в режиме тонкого клиента;
WebClient - идентификатор приложения 1С:Предприятие в режиме веб-клиента;
Designer - идентификатор приложения Конфигуратор;
COMConnection - идентификатор сессии внешнего соединения 1С:Предприятия через COM;
------------------------------------------------
WSConnection - идентификатор сессии Web-сервиса;
------------------------------------------------
BackgroundJob - идентификатор сессии обработки заданий;
SrvrConsole - идентификатор сессии консоли кластера;
COMConsole - идентификатор административной сессии внешнего соединения;
JobScheduler - идентификатор сессии планировщика заданий;
Debugger - идентификатор сессии отладчика.
13 Asmody
 
05.09.13
10:55
(0) выкидывать [много всяких вызовов у меня ненужный] из модуля сеанса в другое место. мест предостаточно
14 yukon
 
05.09.13
10:55
(0) а не надо в модуле сеанса по дефолту делать "много всяких вызовов". Там же специально параметр сделали, чтобы устанавливать только те параметры которые нужны.
15 alexei366
 
05.09.13
10:56
(12)  О WSConnection, надо посмотреть, просто чот я такого не видел в кансоли администратора 1С
16 alexei366
 
05.09.13
10:59
(14) Ну у меня там к примеру есть установка тек пользователя (ссылка на справочник), я конеш понимаю что много времени это не занимает, но надо бы для веб-сервиса сделать как можно все быстрее
17 kiruha
 
05.09.13
11:03
(0)
Что мешает передавать параметры из модуля вебсервиса при вызове ?

Что мешает сделать спец пользователя для вебсервиса - по которому все однозначно определяется ?

Наворотят...
18 alexei366
 
05.09.13
11:07
(17) Была такая мысть, сделать отдельного пользователя для веб-сервиса, и если это он то иницилизировать параметры сеанса пустыми значениями без вызова др функций и процедур.
Но хочеться както по красоте , ща попробую (15)
19 Jolly Roger
 
05.09.13
11:09
(18)  не надо ничего выдумывать, в платформе уже есть механизм отложенной инициализации параметров сеанса. этого достаточно...
20 kiruha
 
05.09.13
11:17
(18)
Пользователя все равно придется делать, и роль, и права прописывать.

Добавить роль веб сервис.
Если роль доступна - пропускать проверки при установке параметра сеанса

(19)
Что за отложенная инициализация ?
21 alexei366
 
05.09.13
11:21
(12) Чот у меня имя приложения "WebServerExtension" и НомерСоединенияИнформационнойБазы() = 8627
22 alexei366
 
05.09.13
11:23
(20) Наверно лучше так поступить, эт вроде как нормально выглядит, имею ввиду покрасивей чем остальные.
23 kiruha
 
05.09.13
11:23
И работает каждый день
24 Jolly Roger
 
05.09.13
11:27
(20) см. описание УстановкаПараметровСеанса
25 alexei366
 
05.09.13
11:28
(21) Какого х..я в синтаксис помошнике нету "WebServerExtension", что это за дерьмо.
Еще бесит что в 8.3.3.715 до сих пор тупит при создании образца в типе значения ПакетаXDTO - пишет "имя должно начинаться с ..... ну и т.д и т.п". Приходиться создавать пакеты в 8.3.2 а потом экспортировать в 8.3.3
26 kiruha
 
05.09.13
11:42
(24)
Посмотрел, И ?

Как это поможет избежать ненужных проверок в коде ? Чтобы ускорить подключение
27 Jolly Roger
 
05.09.13
11:46
(26) это поможет заполнять только требуемые параметры сеанса. если этого недостаточно, медицина бессильна...
28 kiruha
 
05.09.13
12:10
короче приведи код
29 alexei366
 
05.09.13
12:46
(28) Да чо там приводить, функция которая ищет ссылку на спр пользователи в зависимости от тек пользователя базы, ну и кидает ей в параметр сеанса.
30 kiruha
 
05.09.13
13:55
(29)
Ну это почти то же самое. По пользователю
31 Serginio1
 
05.09.13
14:04
(26) В этой процедуре можно вообще опустить начальную установку параметров
УстановкаПараметровСеанса(<ТребуемыеПараметры>)

Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой до вызова всех остальных обработчиков. Значение параметра "Параметры сеанса" - Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра "Параметры сеанса" является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то генерируется исключение.