Выполнение процедуры инициализации DOTNetComОбъекта в модуле сеанса при выполнении запроса вебсервиса.
Не типовая 1С: Винфлекс на базе 1С УТ. Обычные формы.
Релиз 8.3.18.1208.
Вопрос в следующем:
Когда 1С запускается в режиме толстого клиента все отлично работает, инициализируется, создается.
Т.к. при выполнении вебсервиса модуль обычного приложения не выполняется, пришлось процедуру инициализации дотнета перенести в модуль сеанса.
Процедура ПодключитьВнешнююКомпоненту("Elisy.NetBridge4") отрабатывает без ошибок. Но при выполнении строки ВКНет = Новый("AddIn.ElisyNetBridge4") выдает ошибку и не инициализируется.
Пробовал вытащить инициализацию в общий модуль, такая же беда.
Может кто чего посоветовать?
Релиз 8.3.18.1208.
Вопрос в следующем:
Когда 1С запускается в режиме толстого клиента все отлично работает, инициализируется, создается.
Т.к. при выполнении вебсервиса модуль обычного приложения не выполняется, пришлось процедуру инициализации дотнета перенести в модуль сеанса.
Процедура ПодключитьВнешнююКомпоненту("Elisy.NetBridge4") отрабатывает без ошибок. Но при выполнении строки ВКНет = Новый("AddIn.ElisyNetBridge4") выдает ошибку и не инициализируется.
Пробовал вытащить инициализацию в общий модуль, такая же беда.
Может кто чего посоветовать?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Я пробовал и при вызове WS все равно та же ошибка. Вынес инициализацию во внешний модуль. Ошибка осталась.Куда дальше копать уже не знаю. А тут получается самая фишка в том, чтобы в моб. приложении рассчитывать стоимость изделия и создавать заявки на изделия без входа в саму программу. А без этого только текущие заявки на изделия видно, ну и еще эскизы изделий.
1. Для метода ПодключитьВнешнююКомпоненту("AddIn....") вариант синтаксиса "по идентификатору" не работает на сервере (см. синтакс-помощник). Нужно использовать ПодключитьВнешнююКомпоненту("C:\....\xxxx.dll", "Elisy.NetBridge4", ТипВнешнейКомпоненты.COM).
Нужно контролировать успешность ПодключитьВнешнююКомпоненту() с помощью возвращаемого результата.
С чего вы взяли, что ПодключитьВнешнююКомпоненту("Elisy.NetBridge4") отрабатывает без ошибок? Ведь метод возвращает Ложь.
2. В каждом серверном вызове нужно перед Новый("AddIn....") нужно вызывать ПодключитьВнешнююКомпоненту(), т.к. процессов на сервере может быть много, и нет гарантии, что для этого процесса уже вызывался метод ПодключитьВнешнююКомпоненту().
3. При чём тут модуль сеанса? Код нужно располагать в модуле веб-сервиса
Нужно контролировать успешность ПодключитьВнешнююКомпоненту() с помощью возвращаемого результата.
С чего вы взяли, что ПодключитьВнешнююКомпоненту("Elisy.NetBridge4") отрабатывает без ошибок? Ведь метод возвращает Ложь.
2. В каждом серверном вызове нужно перед Новый("AddIn....") нужно вызывать ПодключитьВнешнююКомпоненту(), т.к. процессов на сервере может быть много, и нет гарантии, что для этого процесса уже вызывался метод ПодключитьВнешнююКомпоненту().
3. При чём тут модуль сеанса? Код нужно располагать в модуле веб-сервиса
Не получилось.
При указании пути ПодключитьВнешнююКомпоненту("C:\....\xxxx.dll", "Elisy.NetBridge4", ТипВнешнейКомпоненты.COM)
ошибка:
Не удалось инициализировать файлы построителя {WebСервис.ObmenWS.Модуль(76)}: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Недопустимое значение параметра (параметр номер '1') (Некорректное имя компоненты)
Хотя все правильно написано.
При ПодключитьВнешнююКомпоненту("C:\....\xxxx.dll", "Elisy.NetBridge4") возвращает Ложь.
При подключении через общий макет ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаElisyNetBridge") тоже возвращает ложь.
Куда копать дальше хз...
При указании пути ПодключитьВнешнююКомпоненту("C:\....\xxxx.dll", "Elisy.NetBridge4", ТипВнешнейКомпоненты.COM)
ошибка:
Не удалось инициализировать файлы построителя {WebСервис.ObmenWS.Модуль(76)}: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Недопустимое значение параметра (параметр номер '1') (Некорректное имя компоненты)
Хотя все правильно написано.
При ПодключитьВнешнююКомпоненту("C:\....\xxxx.dll", "Elisy.NetBridge4") возвращает Ложь.
При подключении через общий макет ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаElisyNetBridge") тоже возвращает ложь.
Куда копать дальше хз...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот