Web-сервисы 1С и COM-Объекты

Рейтинг: 0Ответов: 1Опубликовано: 09.10.2014

Добрый день, уважаемые знатоки. Есть Web-сервис 1С и проблема с Com-Объектами. Имеется следующий код:

Функция Connect(connectionString)
    Соединение = Новый COMОбъект("ADODB.Connection");
    Попытка
        Соединение.Open(connectionString);
        Возврат ПоместитьВоВременноеХранилище(Соединение, Новый УникальныйИдентификатор());
    Исключение
        Возврат ОписаниеОшибки();        
    КонецПопытки;
КонецФункции

Функция CloseConnect(GUID)
    Попытка
        Соединение = ПолучитьИзВременногоХранилища(GUID);
        УдалитьИзВременногоХранилища(GUID);
        Соединение.Close();
        Возврат "Все круто";                
    Исключение
        Возврат ОписаниеОшибки();
    КонецПопытки;   
КонецФункции

После вызова Connect объект записывается во временное хранилище, и функция возвращает GUID, а во время вызова CloseConnect по этому GUID из временного хранилища возвращается Неопределено. Кто знает, как это поправить?
P.S. А если делать во Внешней обработке, то все нормально, возвращается Com-Объект.

Ответы

▲ 1

В случае, если вызов этих функций выполняет веб-сервис, значение будет удалено по окончании сеанса веб-сервиса.

Обратимся к описанию функции ПоместитьВоВременноеХранилище в синтакс-помощнике, выделив фрагмент описания второго параметра Адрес:

Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя.

Таким образом, поскольку каждый внешний вызов метода веб-сервиса инициирует создание нового сеанса пользователя, то по окончании первого вызова значение очищается и при следующем вызове попытка получить значение по идентификатору возвращает Неопределено. Подробнее по веб-сервисам 1С тут.