|
Запуск клиентского сеанса на сервере | ☑ | ||
---|---|---|---|---|
0
SpellKeeper
04.10.17
✎
16:26
|
Добрый день.
У меня есть внешняя dll с com-объектами, через которую надо подключиться к сторонней базе (не 1С) и забрать некоторые данные. Хотел делать это в фоновом задании. Но фоновые задания запускаются на сервере, а там com-объект вызвать нельзя. На инфостарте предлагается любопытный метод обойти эту проблему. http://catalog.mista.ru/public/317865/ Но тут вылезает другая проблема. Из фонового задания не запускается клиентский сеанс. Если это регламентное задание запустит на клиенте - проходит в лет. А через фоновое - доходит до строки ЗапуститьПриложение(СтрокаЗапуска); и все. Новый сеанс не создается, и фоновое подвисает в бесконечности. Убить получается только перезапуском службы 1С на сервере. Подскажите, как обойти эту проблему? |
|||
1
SpellKeeper
04.10.17
✎
16:28
|
Забыл.
Работаем на 8.2. Переход на 8.3 пока не возможен. |
|||
2
SpellKeeper
04.10.17
✎
17:33
|
up
|
|||
3
d4rkmesa
04.10.17
✎
18:27
|
Я бы сделал по-другому:
СтрокаСоединения = СтрокаСоединенияИнформационнойБазы(); appСоединение = Новый COMОбъект("V82.Application"); Попытка appСоединение.Connect(СтрокаСоединения + " Usr=""" + СокрЛП(Константы._ПользовательЗапускКлиентскихПроцедур.Получить().Наименование) + """;Pwd=""" + СокрЛП(Константы._ПарольПользователяЗапускКлиентскихПроцедур.Получить()) + """"); Исключение ЗаписьЖурналаРегистрации("Рассылка отчетов: " + СокрЛП(НастройкаРассылки.Наименование), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; appСоединение.Visible = false; appСоединение.МодульЗапускаКлиентскихПроцедур.НашаКлиентскаяПроцедура(ПараметрЗапуска); appСоединение.ЗавершитьРаботуСистемы(Ложь); |
|||
4
Tateossian
04.10.17
✎
18:41
|
(3) Com-объект на сервере (вроде автор об этом упомянул) не создать. (0) А вне фонового задания запускает приложение?
|
|||
5
breezee
04.10.17
✎
19:16
|
А точно ком нельзя на сервере? ComConnector ,tp ghj,ktv jnhf,fnsdfk
|
|||
6
Филиал-msk
04.10.17
✎
19:39
|
(5) Представь себе, что это Линукс
|
|||
7
d4rkmesa
04.10.17
✎
20:12
|
(4) Это же по сути обычный клиент запускается, не com-коннектор с собственным контекстом. Насколько я понял, проблема в том что процедура не работает на сервере. Главное установить 32-разрядный клиент предприятия на сервере. К примеру, у нас так отчеты на базе универсального рассылаются.
|
|||
8
Филиал-msk
04.10.17
✎
20:29
|
(0) Судя по всему оно хочет какого-то интерактива. Например, пожаловаться на отсутствие доступа, сообщить о нарушении безопасного режима, просто достучаться пользователем сервера до десктопа и т.п.
|
|||
9
SpellKeeper
06.10.17
✎
10:33
|
Подниму тему, т.к. проблема так и не ушла.
Подвисание я убрал. У нас админы чего-то перемудрили при установке 1С. получилось, что процедура КаталогПрограммы() на клиенте и на сервере возвращала разные значения, хотя запускалась на одном компе. Тем не менее. Ни фоновое задание, ни на сервере клиентское приложение не открывается. Я вывел данные в журнал регистрации, и, судя по ним, клиентская часть даже не запускается. При этом запуск делается через попытку. Попытка ЗапуститьПриложение(СтрокаЗапуска,,Истина); ЗаписьЖурналаРегистрации("Загрузка ЭЦП", УровеньЖурналаРегистрации.Информация, , , "Клиентское приложение запущено"); Исключение ЗаписьЖурналаРегистрации("Загрузка ЭЦП", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка запуска клиентского приложения " + ОписаниеОшибки()); КонецПопытки; В журнале регистрации сообщение "Клиентское приложение запущено". Т.е. ошибок нет, но по факту клиент не запустился. |
|||
10
Мыш
06.10.17
✎
10:38
|
(9) > процедура КаталогПрограммы() на клиенте и на сервере возвращала разные значения, хотя запускалась на одном компе
Легко. Сервер 64, клиент 32 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |