|
OFF: Не получается создать одновременно два ОЛЕ-соединения с 7.7, но только НаСервере | ☑ | ||
---|---|---|---|---|
0
mclarry
23.11.11
✎
13:19
|
Столкнулся с проблемой, один и тот же код выполняется по-разному &НаКлиенте и &НаСервере. А именно, при выполнении на сервере не удается дважды подключиться по оле к одной базе 7.7.
// 1-е соединение ОЛЕ_База= Новый COMОбъект("V77S.Application"); Код= ОЛЕ_База.Initialize(ОЛЕ_База.RMTrade, "/D"""+ Шлюз1С77.Путь+ """ /N"+ Шлюз1С77.Пользователь+ " /P"+ Шлюз1С77.Пароль, " NO_SPLASH_SHOW"); Если Код <> Истина Тогда Сообщить( "Ошибка подключения к базе 1С 7.7, код= "+ Код, СтатусСообщения.Важное); Возврат ; КонецЕсли; // 2-е соединение ОЛЕ_База2= Новый COMОбъект("V77S.Application"); Код= ОЛЕ_База2.Initialize(ОЛЕ_База.RMTrade, "/D"""+ Шлюз1С77.Путь+ """ /N"+ Шлюз1С77.Пользователь+ " /P"+ Шлюз1С77.Пароль, " NO_SPLASH_SHOW"); Если Код <> Истина Тогда Сообщить( "2: Ошибка подключения к базе 1С 7.7, код= "+ Код, СтатусСообщения.Важное); Возврат ; КонецЕсли; Приведенный код выполняется без ошибок на клиенте, а на сервере получаю "2: Ошибка подключения к базе 1С 7.7, код= Нет". В чем может быть собака зарыта? Мне важно подключаться именно с сервера, т.к. клиенты не имеют доступа к ресурсам, где лежит 7-ка. |
|||
1
mclarry
23.11.11
✎
13:22
|
исправлено:
Код= ОЛЕ_База2.Initialize(ОЛЕ_База2.RMTrade, "/D"""+ Шлюз1С77.Путь+ """ /N"+ Шлюз1С77.Пользователь+ " /P"+ |
|||
2
mclarry
23.11.11
✎
13:34
|
На всякий случай уточню: 8.2.13.219, 7.70.025, обе базы на sql
|
|||
3
mclarry
23.11.11
✎
16:08
|
Рецептов нет? Никто не сталкивался?
|
|||
4
vde69
23.11.11
✎
16:09
|
в 7.7 у пользователя в конфигураторе каталог заполнен?
|
|||
5
mclarry
23.11.11
✎
16:18
|
не-а
я же говорю, под клиентом отрабатывает без проблем |
|||
6
АйЭм
24.11.11
✎
08:06
|
(5)
А три 1С-ки одновременно с сервера запускаются не через ОЛЮ? |
|||
7
skunk
24.11.11
✎
08:13
|
а где получаешь ошибку ... при создании объекта ... или именно при подключении
|
|||
8
mclarry
24.11.11
✎
10:02
|
(6) Сервер, SQL, все 1С-ы стоят на одной машине. Получается, что разница только в режиме запуска из-под 8.2, клиент или сервер.
(7) Ошибка при попытке выполнить ОЛЕ_База2.Initialize() |
|||
9
skunk
24.11.11
✎
10:07
|
сервер работает как правило другим пользователем ... отличным от клиента ...
непонятно только почему у тебя "Код" принимает значение "Нет" |
|||
10
skunk
24.11.11
✎
10:12
|
а вообще какой смысл создавать два одинаковых объекта
|
|||
11
mclarry
24.11.11
✎
10:23
|
(9) Под пользователем USR1CV82, под которым крутится сервер 8.2, интерактивно запускаются сколько угодно 7-к.
(10) Смысл такой, что мне в 8 надо вытащить данные из 7 по ОЛЕ. На 8.2 написано управляемое приложение, клиенты не имеют доступа к 7. Когда работает один пользователь - все нормально, но второй уже не может подключиться к 7. |
|||
12
skunk
24.11.11
✎
10:28
|
(11)то есть в (0) речь идет не о попытки создания двух соединений с базой в пределах одной сессии сервера ... а не возможности создать соединение с одной и той-же базой в разных сессиях?
|
|||
13
mclarry
24.11.11
✎
10:35
|
(12) Сначала я заметил, что нельзя подключиться к 7 из двух разных сессий. Потом попробовал создать два оле-соединения в одной сессии. Результат: на клиенте получается, на сервере - нет. Т.е. ошибка одинаковая для одной и для двух сессий 8.
|
|||
14
skunk
24.11.11
✎
11:41
|
а в момент получения ошибки в процессах 1с висит?
|
|||
15
mclarry
24.11.11
✎
14:39
|
Процесс 1cv7s.exe создается при
ОЛЕ_База2= Новый COMОбъект("V77S.Application"); и слетает после выполнения ОЛЕ_База2.Initialize() Да, получается все дело в этом. Но как побороть? |
|||
16
mclarry
24.11.11
✎
14:43
|
При этом в ЖР в 7 идут записи:
- Подключение (1-й сеанс) - Подключение (2-й сеанс) - Отключение (вероятно, 1-й сеанс) А отключение 2-го сеанса уже не фиксируется. |
|||
17
Medved_1
24.11.11
✎
14:58
|
Вопрос:
А 1Сv8 - на чём? Никсы или Вынь? === При работе тонкий клиент - сервер приложения почему бы на сервере не создать ОДИН ОБЩИЙ экземпляр ОЛЕ-77 и к нему обращаться из разных сессий тонкого клиента? |
|||
18
mclarry
24.11.11
✎
15:14
|
(17) WinServer 2003 R2 SP2
Да, уже думал об этом, хотя тогда возникают проблемы с определением момента, когда надо закрывать это оле-подключение. Не знаю, оправданы ли такие муки. Ведь по-хорошему все должно работать. Если не получится создавать несколько подключений, тогда уж проще выгружать данные из 7 в файл. А жаль, и это в 21 веке на поделках MS и 1С... |
|||
19
Medved_1
24.11.11
✎
15:42
|
(18)Еще раз:
У Вас есть толпа тонких клиентов и один СЕРВЕР. Можно ли создать ОБЩИЙ объект (ОЛЕ77) на сервере к которому можно подключаться из толпы тонких клиентов? И забирать оттуда данные..? |
|||
20
Medved_1
24.11.11
✎
15:43
|
т.е. на клиенте формируем ЧТО нам надо забрать - передаем серваку - сервак кидает объекту ОЛЕ77 "ну-ка подь сюды" - получает данные - отдает обратно клиенту?
|
|||
21
Medved_1
24.11.11
✎
15:44
|
т.е. на стороне СЕРВАКА v8 ОДНО подключение к 77, с которого и берутся нужные данные?
естессно, надо обработчик очереди запросов к ОЛЕ77 написать. Что б не было конкурентных транзакций |
|||
22
Medved_1
24.11.11
✎
15:45
|
ЗЫ: сам еще пока не разобрался - можно ли такую фичу реализовать вообще. Не только для ОЛЕ объектов.
|
|||
23
Medved_1
24.11.11
✎
15:46
|
ЗЗЫ: еще как-то сталкивался, что под ОДНИМ и ТЕМ ЖЕ пользователям войти в 77 с разных компов низзя было. Пользователи-то в сенсах ОЛЕ - разные?
|
|||
24
Medved_1
24.11.11
✎
15:51
|
+ личные каталоги пользователей в 77 надо разделить
|
|||
25
mclarry
24.11.11
✎
16:12
|
Пользователь 7-ки один, без каталога, т.е. под ним можно создавать много подключений.
Обработчик очереди запросов - это понятно, только лень мне это делать, проще уж через файлы. |
|||
26
mclarry
25.11.11
✎
10:34
|
У кого есть идеи, как избавиться от ошибки?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |