Имя: Пароль:
LIFE
 
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
У кого есть идеи, как избавиться от ошибки?