Имя: Пароль:
1C
1С v8
СОМ-соединение 8.3 и 7.7
0 Max Street
 
01.07.15
10:07
Привет

Не могу установить СОМ-соединение из 8.3 в 77.
Ни такой вариант...

    V7 = Новый COMОбъект("V77.Application");
    
    МонопольныйРежим = "";    // для монопольного запуска указать /m
    
    РезультатПодключения = V7.Initialize(V7.RMTrade, МонопольныйРежим, "NO_SPLASH_SHOW");
    
    Если РезультатПодключения = 0 Тогда
        Сообщить("Соединение не установлено");
        Возврат;
    Иначе
        Сообщить("Соединение установлено");
    КонецЕсли;

ни такой...

    V7 = Новый COMОбъект("V77.Application");
    
    Каталог = "D:\abcdefgh";
    ИмяПользователя = "Иванов";
    ПарольПользователя = "1234567890";
    СтрокаПодключения    = "/D"""+СокрЛП(Каталог)+""" /N"""+СокрЛП(ИмяПользователя)+""" /P"""+СокрЛП(ПарольПользователя)+"""";
    РезультатПодключения = V7.Initialize(V7.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW");
    
    Если РезультатПодключения = 0 Тогда
        Сообщить("Соединение не установлено");
        Возврат;
    Иначе
        Сообщить("Соединение установлено");
    КонецЕсли;

не работают. При этом никаких ошибок не выдает. Те же варианты без проблем отрабатывают на 8.2.

Кто знает, подскажите как исправить, пожалуйста.
1 EvgeniuXP
 
01.07.15
10:11
Работало на 8.2, также одинаково работает нна 8.3.6.2041 - ничего не переписывал.
2 Max Street
 
01.07.15
10:12
(1) не понял
3 Остап Сулейманович
 
01.07.15
10:14
(0) Такой вариант :
РезультатПодключения = V7.Initialize(V7.RMTrade, МонопольныйРежим, "NO_SPLASH_SHOW");
и не должен работать. Непонятно к какой базе нужно подключение. Странно как он мог работать в 8.2
4 Max Street
 
01.07.15
10:16
(3) еще как должен. открывается окно запуска 1с77, где сам запускаешь нужную базу
5 Остап Сулейманович
 
01.07.15
10:18
Посмотреть, что висит в процессах. Есть ли там 1С седьмой версии.
6 Max Street
 
01.07.15
10:19
(5) смотрел, нету
7 Max Street
 
01.07.15
10:20
(5) т.е. сразу появляется, но очень быстро завершается процесс
8 Остап Сулейманович
 
01.07.15
10:20
(6) Проверить права пользователя на каталог базы.
9 Остап Сулейманович
 
01.07.15
10:21
+ (8) Так бывает если пользователю закрыты права на запись.
10 ДенисЧ
 
01.07.15
10:24
Управляемая форма и НаСервере?
11 Max Street
 
01.07.15
10:26
(10) да
(9) полные права у пользователя
12 EvgeniuXP
 
01.07.15
10:26
Если работает на 8.2 - должно работать и на 8.3 - что-то ты не договариваешь
13 ДенисЧ
 
01.07.15
10:28
(11) У какого пользователя?
14 Max Street
 
01.07.15
10:34
(13) админские права у пользователя под которым авторизуюсь в 77
(12) все рассказал, что знал
15 EvgeniuXP
 
01.07.15
10:36
обе файловые (8.2, 8.3)?
16 Max Street
 
01.07.15
10:37
(15) да
17 ДенисЧ
 
01.07.15
10:37
(14) А у пользователя ОС, под которым работает 8ка?
18 EvgeniuXP
 
01.07.15
10:38
(16) и с одного компа из одной учетки запускаешь?
19 EvgeniuXP
 
01.07.15
10:40
терминал у обоих не используешь?
20 Остап Сулейманович
 
01.07.15
10:41
(17) С учетом :
ДенисЧ
10 - 01.07.15 - 10:24
Управляемая форма и НаСервере?

Max Street
11 - 01.07.15 - 10:26
(10) да

Нужны права юзера, под которым крутится служба сервера 1С. Или ТС без проверок просто соглашается со всем.

Да еще и это :
Max Street
4 - 01.07.15 - 10:16
(3) еще как должен. открывается окно запуска 1с77, где сам запускаешь нужную базу
Это как? На сервере?
21 Max Street
 
01.07.15
10:41
(18) да
(17) у пользователя полные права
(19) не использую
22 Остап Сулейманович
 
01.07.15
10:43
(21) И все таки. На сервере или на клиенте?
23 Max Street
 
01.07.15
10:46
вот такой код
модуль формы:
&НаКлиенте
Процедура УстановитьСоединение(Команда)
    УстановитьСоединениеНаСервере();
КонецПроцедуры

&НаСервере
Процедура УстановитьСоединениеНаСервере()
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");    
    ОбработкаОбъект.УстановитьСоединение();
КонецПроцедуры

модуль объекта:
процедура установитьсоединение()
    V7 = Новый COMОбъект("V77.Application");
    
    МонопольныйРежим = "";    // для монопольного запуска указать /m

    
    РезультатПодключения = V7.Initialize(V7.RMTrade, МонопольныйРежим, "NO_SPLASH_SHOW");
    
    Если РезультатПодключения = 0 Тогда
        Сообщить("Соединение не установлено");
        Возврат;
    Иначе
        Сообщить("Соединение установлено");
    КонецЕсли;
конецпроцедуры
24 Остап Сулейманович
 
01.07.15
10:48
(23) Проверять права на каталог с базой семерки пользователя, под которым запускается сервер.
25 Остап Сулейманович
 
01.07.15
10:50
+ (24) Скорее всего это что-то типа такого "USR1CV8".
26 EvgeniuXP
 
01.07.15
10:51
V77 = Новый COMОбъект(v77.Application");

СтрокаЗапуска = "/D" + ПутьКБазе + " /N" + Пользователь + " /P" + ПарольПользователя;

Открыто = V77.Initialize(V77.RMTrade, СтрокаЗапуска, "");

Со времен 8.0 работает.
27 EvgeniuXP
 
01.07.15
10:52
(25) файловая у него
28 EvgeniuXP
 
01.07.15
10:57
Попробуй к другой базе 7.7
29 Chameleon1980
 
01.07.15
11:00
А просто так под этим юзером как 7.7 запускается? Там нет вопросов, предупреждений при запуске?
30 Max Street
 
01.07.15
11:02
(28) только что попробовал, тоже самое
(29) запускается нормально, без ошибок/сообщений/предупреждений
31 EvgeniuXP
 
01.07.15
11:07
инсталлируй 7.7 еще раз
32 dk
 
01.07.15
11:27
база 1с 77 у этого виндового юзера (сервера 1с) прописана?
33 Max Street
 
01.07.15
11:34
(32) что значит прописана? как это узнать?
34 dk
 
01.07.15
11:36
запустить 1с 77 из под этого виндового юзера - в списке баз есть требуемая?
35 Max Street
 
01.07.15
11:39
(34) да, есть
36 dk
 
01.07.15
11:44
просто из командной строки запускается нормально с указанными параметрами? под виндовым сервера 1с
38 Лефмихалыч
 
01.07.15
12:05
(0) V7.Initialize не работает, если у пользователя, под которым это выполняется, в реестре база не прописана. И, судя по всему, выполняется это на сервере, а тестируется на клиенте
39 Лефмихалыч
 
01.07.15
12:07
+(38) то есть надо в ветку реестра пользователя, под которым серер приложений работает, на серере добавить базы семерошные.
Это, если в (0) восьмерка клиент-серверная