|
Подключение через СОМОбъект из 8.2 к 7.7 (Ошибка при создании объекта) | ☑ | ||
---|---|---|---|---|
0
america2013
22.11.13
✎
07:53
|
Доброго времени суток, уважаемые знатоки 1С !
Прошу помочь мне с такой проблемой (изначально я нашел похожее описание здесь: v8: Как из 8.2 через ком подключиться к 7.7 SQL, но потом пошел дальше). Изначально имею код: v7 = Новый COMObject("V77.Application"); Пользователь = "админ"; Пароль ="админ"; ПутьКБазе77 = "D:\bases\база2012"; v7.Initialize(v7.RMTrade,"/D" + ПутьКБазе77+ " /N"+Пользователь+" /P" + Пароль,"NO_SPLASH_SHOW"); Спр = v7.СоздатьОбъект("Справочник.Валюты"); Спр.Выбрать(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Сообщить(Спр.Наименование); КонецЦикла; Цель у меня какая: подключиться к базе 7.7 из 8.2 и делать выборки некоторых объектов, как если бы я находился в Конфигураторе 7.7. На данный момент имею ошибку: {Форма.Форма.Форма(31)}: Метод объекта не обнаружен (СоздатьОбъект) Спр = v7.СоздатьОбъект("Справочник.Валюты"); Что может быть не так? |
|||
1
america2013
22.11.13
✎
09:03
|
Строку
Спр = v7.СоздатьОбъект("Справочник.Валюты"); заменил на: Спр = v7.CreateObject("Справочник.Валюты"); Ошибок нет, но 1с 8.2 стала просто зависать(((( Уважаемые, прошу, не проходите мимо! |
|||
2
ДенисЧ
22.11.13
✎
09:05
|
В каком месте виснет?
|
|||
3
america2013
22.11.13
✎
09:05
|
При выполнении этой процедуры.
|
|||
4
Рэйв
22.11.13
✎
09:11
|
И чего всех прет подключатся из 8.х к 7.7.?
из 7.7. к 8.х по СОМ намного удобнее же работать! Мазохисты. |
|||
5
anaed
22.11.13
✎
09:13
|
(0) по твоей ссылке 9-ый пост v8: Как из 8.2 через ком подключиться к 7.7 SQL
может дело в COMObject("V77.Application"); вместо COMObject("V1CEnterprise.Application"); ? |
|||
6
america2013
22.11.13
✎
09:18
|
(5) Менял
v7 = Новый COMObject("V77.Application"); на v7 = Новый COMObject("V1CEnterprise.Application"); результат прежний, ошибка остается: {Форма.Форма.Форма(33)}: Ошибка при вызове метода контекста (CreateObject) Спр = v7.CreateObject("Справочник.Валюты"); по причине: Произошла исключительная ситуация (1С:Предприятие): Неудачная попытка создания объекта (Справочник.Валюты): 0 |
|||
7
Масянька
22.11.13
✎
09:21
|
По уму нужно v7.Initialize(v7.RMTrade,"/D" + ПутьКБазе77+ " /N"+Пользователь+" /P" + Пароль,"NO_SPLASH_SHOW"); делать в Попытке. Попробуй, посмотри на результат.
7.7 стоит правильно - прописана в реестре и т.д.? |
|||
8
ЧессМастер
22.11.13
✎
09:22
|
(4) +100500
|
|||
9
ЧессМастер
22.11.13
✎
09:22
|
(0) тебе принципиально подключатся к 77 из 82 ? сделай наоборот или подключайся к 77 по ОЛЕ
|
|||
10
america2013
22.11.13
✎
09:25
|
(4) и (9) В моем случае база 8.2 одна, а 7.7 - несколько.
Я пробовал сделать: v7 = Новый COMОбъект("V77.ComConnector"); но получил ошибку: {Форма.Форма.Форма(4)}: Ошибка при вызове конструктора (COMОбъект) v7 = Новый COMОбъект("V77.ComConnector"); по причине: Недопустимая строка с указанием класса Что не так? (7) Пробовал и попытку, ошибка та же, про установку и реестр не в курсе, ставил не я. |
|||
11
anaed
22.11.13
✎
09:25
|
(0) читал http://help1c.com/faq8/view/482.html ?
|
|||
12
Масянька
22.11.13
✎
09:32
|
(10) То есть подключается без проблем?
|
|||
13
ДенисЧ
22.11.13
✎
09:32
|
"V77.ComConnector"
Мечта... |
|||
14
Рэйв
22.11.13
✎
09:34
|
(13)+100
|
|||
15
бомболюк
22.11.13
✎
09:35
|
попробуй уж зараз и
v7.EvalExpr("СоздатьОбъект(""Справочник.Валюты"")"); у меня помнится только так и работало. |
|||
16
america2013
22.11.13
✎
09:36
|
(12) Подключается без проблем СОМОбъект получаю.
(13) Я же описал в (10), что якобы не найден класс. (11) и (15) Успел применить, но без результатно: {Форма.Форма.Форма(2)}: Ошибка при вызове конструктора (COMObject) v7 = Новый COMObject("V77M.Application"); по причине: Недопустимая строка с указанием класса Заменил на предыдущую: v7 = Новый COMObject("V77.Application"); {Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (EvalExpr) Спр = v7.EvalExpr("CreateObject(""Справочник.Валюты"")"); по причине: Произошла исключительная ситуация (1С:Предприятие): Неудачная попытка создания объекта (Справочник.Валюты): 0 |
|||
17
Рэйв
22.11.13
✎
09:38
|
(16)>>Ошибка при вызове конструктора (COMObject)
У меня впечатление что ты запускаешь 77 по ярлыку с сервера, а на самой машине локально 77 у тебя нет. Оно тогда такое и пишет. |
|||
18
Guk
22.11.13
✎
09:38
|
(16) а на кой тут EvalExpr использовать?...
|
|||
19
anaed
22.11.13
✎
09:39
|
(16) Уже второй раз справочник не может создать, он там вообще есть нет?)))
|
|||
20
Guk
22.11.13
✎
09:39
|
(17) если бы 77 не было, оно бы вообще не подключилось...
|
|||
21
Рэйв
22.11.13
✎
09:40
|
(20)Так он и пишет, что ошибка конструктора
|
|||
22
america2013
22.11.13
✎
09:40
|
(17), (20) Как устанавливалась 7.7 не в курсе, но вручную запустить и зайти в базу я могу и справочник такой конечно же есть.
|
|||
23
Guk
22.11.13
✎
09:41
|
(21) он пишет, что ошибка создания справочника. я бы тоже самое написал на месте 77. но при этом соединение уже установлено, иначе оно раньше вывалилось...
|
|||
24
Guk
22.11.13
✎
09:43
|
(22) я не спец конечно, но может попробовать
Спр = v7.CreateObject("Справочник.Валюты"); |
|||
25
hhhh
22.11.13
✎
09:44
|
(23) он пишет Метод объекта не обнаружен (СоздатьОбъект). Это типично для отсутствия подключения.
|
|||
26
america2013
22.11.13
✎
09:44
|
Пробовал другой объект создать, на данный момент имею код:
v7 = Новый COMObject("V77.Application"); Пользователь = "админ"; Пароль ="админ"; Попытка v7.Initialize(v7.RMTrade,"/D" + ПутьКБазе77+ " /N"+Пользователь+" /P" + Пароль,"NO_SPLASH_SHOW"); //RMAccnt Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Спр = v7.CreateObject("Справочник.Банки"); Ошибка: {Форма.Форма.Форма(34)}: Ошибка при вызове метода контекста (CreateObject) Спр = v7.CreateObject("Справочник.Банки"); по причине: Произошла исключительная ситуация (1С:Предприятие): Неудачная попытка создания объекта (Справочник.Банки): 0 |
|||
27
Guk
22.11.13
✎
09:45
|
(25) т.е. программист не проверяет, установлено у него соединение или нет? мне такое даже в голову придти не могло...
|
|||
28
Rie
22.11.13
✎
09:46
|
(16) А инициализация-то - где?
|
|||
29
Rie
22.11.13
✎
09:47
|
(26) Initialize не ошибку порождает, а выдаёт 1 или 0.
|
|||
30
Рэйв
22.11.13
✎
09:47
|
Соединение =v7.Initialize(.......
|
|||
31
Рэйв
22.11.13
✎
09:47
|
Спр = Соединение.CreateObject("Справочник.Банки");
|
|||
32
ЧессМастер
22.11.13
✎
09:48
|
(16) у тебя подключение происходит ? ты в мониторе пользователей его видешь ?
|
|||
33
america2013
22.11.13
✎
09:49
|
(27) Перед строкой
Спр = v7.CreateObject("Справочник.Банки"); получаю в отладчике: Свойство Значение Тип v7 COMОбъект COMОбъект |
|||
34
america2013
22.11.13
✎
09:51
|
(32) В Мониторе вижу среди активных пользователей.
|
|||
35
Rie
22.11.13
✎
09:52
|
(30) Соединение у тебя - это будет число. Поэтому (31) - нонсенс.
|
|||
36
america2013
22.11.13
✎
09:54
|
Делал:
Попытка Соединение = v7.Initialize(v7.RMTrade,"/D" + ПутьКБазе77+ " /N"+Пользователь+" /P" + Пароль,"NO_SPLASH_SHOW"); //RMAccnt Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Спр = Соединение.CreateObject("Справочник.Банки"); Получил: {Форма.Форма.Форма(34)}: Значение не является значением объектного типа (CreateObject) Спр = Соединение.CreateObject("Справочник.Банки"); |
|||
37
Рэйв
22.11.13
✎
09:55
|
(35) да, с СОМ перепутал:-)
|
|||
38
ЧессМастер
22.11.13
✎
09:55
|
(36) попробуй выполнить этот код с машины где точно установлена 1С 7.7
|
|||
39
Масянька
22.11.13
✎
09:55
|
Рабочий код (правда под 8.1), работает по сей день:
Процедура ПодключитьсяНажатие(Элемент) БД = ""; БД = Новый COMОбъект("V77.Application"); Попытка СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазеДанных) + """/N""" + СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль) + """"; Открыта = БД.Initialize(БД.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW"); Если Открыта Тогда ЕстьПодключение = Истина; ЭлементыФормы.СообщениеОПодключении.Заголовок = "База успешно подключена." Иначе Предупреждение("Ошибка при подключении!"); ЕстьПодключение = Ложь; КонецЕсли; Исключение Предупреждение("Ошибка при подключении!"); ЕстьПодключение = Ложь; КонецПопытки; КонецПроцедуры |
|||
40
Rie
22.11.13
✎
09:56
|
(36) Initialize выдаёт _число_!!!
Если Соединение=1 Тогда Спр = v7.CreateObject(..... |
|||
41
america2013
22.11.13
✎
09:59
|
(39) С подключением и инициализацией у меня проблем нет, проблемы начинаются, когда в этом подключении начинаю создавать объекты.
|
|||
42
Масянька
22.11.13
✎
10:00
|
(41) Господи! Да как же тяжело с вами.....
Тебе "Открыта = БД.Initialize(БД.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW");", что возвращает? |
|||
43
america2013
22.11.13
✎
10:05
|
(42) Ошибка при подключении
|
|||
44
Масянька
22.11.13
✎
10:06
|
(43) Слава Богу! Еще вопросы есть? Иди рой - как установлена 7.7.
|
|||
45
George Wheels
22.11.13
✎
10:15
|
ПутьКБазе в строке подключения возьми в кавычки.
В отладчике должен увидеть: /D"D:\bases\база2012" /Nадмин /Pадмин |
|||
46
america2013
22.11.13
✎
10:23
|
(44) Переустановил платформу, удалил базу из списка, добавл снова, ошибка прежняя:
(45) Строку подключения имею в виде: /D"D:\bases\база2012" /Nадмин /Pадмин (то есть так же) Ошибка в подключении((( |
|||
47
america2013
22.11.13
✎
10:24
|
Взял в "" пользователя и пароль, то же самое.
|
|||
48
hhhh
22.11.13
✎
10:24
|
(46) какую переустановил? 7.7?
|
|||
49
Масянька
22.11.13
✎
10:25
|
(460 как переустановил платформу?
|
|||
50
america2013
22.11.13
✎
10:25
|
(48) Переустановил 7.7. Просто по верху запустил установщик.
|
|||
51
Масянька
22.11.13
✎
10:28
|
(50) Wind'а какая стоит?
|
|||
52
america2013
22.11.13
✎
10:30
|
(50) Windows 7 Домашняя базовая
|
|||
53
hhhh
22.11.13
✎
10:31
|
(50) поищи V77.Application в реестре windows
|
|||
54
hhhh
22.11.13
✎
10:32
|
(52) почему домашняя. Поставьте нормальный windows
|
|||
55
Масянька
22.11.13
✎
10:35
|
(52) Не знаю точно, но - тут могут быть проблемы. Домашняя базовая - урезана по куче всего.
А сама 7.7 точно запускается на этом же компе? |
|||
56
america2013
22.11.13
✎
10:37
|
(55) Запускается на этом компе
(53) Есть в реесте (если нужно) HKEY_CLASSES_ROOT\V77.Application HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{63112D80-94F0-11D2-9F39-008048DA120F} HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{63112D80-94F0-11D2-9F39-008048DA120F}\ProgID HKEY_LOCAL_MACHINE\SOFTWARE\Classes\V77.Application HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{63112D80-94F0-11D2-9F39-008048DA120F} |
|||
57
america2013
22.11.13
✎
10:41
|
Пробовал на другом компе (Видовс 7 Проф), 8.2 и 7.7 установлена цивильно, ошибка при подключении.
|
|||
58
Масянька
22.11.13
✎
10:46
|
(56) 64 бита?
|
|||
59
Масянька
22.11.13
✎
10:54
|
В реестре найди - HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles - что там в путях?
|
|||
60
america2013
22.11.13
✎
11:50
|
(58) Да, 64.
(59) Есть ветка: HKEY_USERS\S-1-5-21-1419102363-2094869754-1374439945-1000\Software\1C\1Cv7\7.7\Titles Параметр: D:\bases\база2012\ Значение: (рабочая) |
|||
61
dk
22.11.13
✎
11:56
|
я пропустил или не было информации 8-ка файловая или скульная?
|
|||
62
america2013
22.11.13
✎
11:58
|
1С:Предприятие 8.2 (8.2.18.96)
База на SQL-сервере. |
|||
63
dk
22.11.13
✎
12:02
|
базу 7.7. над прописать для виндового юзера, под которым сервер 1с крутится
на винде где сервер 1с крутится |
|||
64
Масянька
22.11.13
✎
12:03
|
(60) И как 7.7 переустанавливал?
|
|||
65
america2013
22.11.13
✎
12:05
|
Просто запустил установщик (по верху). Не удалял перед этим, т.к. куча прописанных баз. Обязательно сносить всё перед повторной установкой?
|
|||
66
Масянька
22.11.13
✎
12:07
|
(65) Подробнее: какой установщик?
|
|||
67
america2013
22.11.13
✎
12:12
|
(66) Какой на предприятии дали : ) У всех такой стоит. Но на стандартный из коробки мало похож.
|
|||
68
america2013
22.11.13
✎
12:16
|
...пытался из своих запасов установить (коробка, диск, 1с 7.7, 7.70.027), но ругается на версию Виндовс((((((
|
|||
69
hhhh
22.11.13
✎
12:39
|
(68) так эта штука из (0), она наКлиенте или НаСервере?
|
|||
70
america2013
22.11.13
✎
12:47
|
(69) 8.2 запускается на клиенте, никаких директив не указываю, база 8.2 лежит на сервере, на компе-клиенте лежит база 7.7, к ней пытаемся подключиться.
Строка подключения верного формата: /D"D:\bases\база2012" /N"админ" /P"админ" Нужны ли эти все кавычки? |
|||
71
dk
22.11.13
✎
12:52
|
(70) а почему думаешь, что на клиенте?
создай файловую и там проверь, вот это будет на клиенте точно )) |
|||
72
Масянька
22.11.13
✎
12:53
|
(70) На каком сервере и на каком компе? Они разные (физически)?
|
|||
73
hhhh
22.11.13
✎
13:02
|
(70) не где запускается 8.2, а эта процедура, что там написано? И в каком модуле она?
|
|||
74
George Wheels
22.11.13
✎
13:16
|
(70) D:\bases\база2012 - это на сервере или на твоём компе?
|
|||
75
america2013
22.11.13
✎
13:26
|
База 7.7 локальная, на моем компе (к ней жажду подключиться), база 8.2 на сервере (по сути не нужна). Сама процедура во внешней обработке в модуле формы.
|
|||
76
dk
22.11.13
✎
13:30
|
уже сотка не за горами, а автор все еще не впиливает
|
|||
77
Масянька
22.11.13
✎
13:32
|
(76) Сегодня такая традиция....
|
|||
78
america2013
22.11.13
✎
13:39
|
У меня был опыт подключения базы SQL 1с 8.2, также из базы на SQL 1с 8.2, вся разница была в строке подключения (сервер, кластер), но что здесь может быть не верно указано:
v7 = ""; v7 = Новый COMObject("V77.Application"); Пользователь = "админ"; Пароль ="админ"; Попытка СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазе77) + """ /N""" + СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль) + """"; Открыта = v7.Initialize(v7.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW"); Если Открыта Тогда ЕстьПодключение = Истина; ЭлементыФормы.СообщениеОПодключении.Заголовок = "База успешно подключена." Иначе Предупреждение("Ошибка при подключении!"); ЕстьПодключение = Ложь; КонецЕсли; Исключение Предупреждение("Ошибка при подключении!"); ЕстьПодключение = Ложь; КонецПопытки; Строка подключения (в отладке) имеет вид: /D"D:\bases\база2012" /N"админ" /P"админ" |
|||
79
america2013
22.11.13
✎
13:49
|
Попытка-Исключение - обязательно? Если без попытки, то Открыта возвращает - Истина, но после строк:
Спр = v7.CreateObject("Справочник.Валюты"); Спр.Выбрать(); На долго зависает, хотя в справочнике Валюты не более 10 элементов. Может быть его надо потом как-то закрывать? |
|||
80
George Wheels
22.11.13
✎
13:53
|
(79) В Исключение используй ИнформацияОбОшибке().
Проверка на открытость не нужна. Если база не откроется, то сработает Исключение. |
|||
81
George Wheels
22.11.13
✎
13:55
|
(79) Закрывать нужно v7.
v7 = "" или v7 = Неопределено |
|||
82
George Wheels
22.11.13
✎
14:00
|
(81) + Если не закроешь, то процесс зависнет в памяти и закроется только после выхода из 8.2. Поэтому при втором запуске обработки подключение к базе не произойдет.
И ещё если 77 закроется неправильно, то придётся её запускать в монопольном режиме. |
|||
83
Масянька
22.11.13
✎
14:05
|
(79) У себя на компе запусти "Диспетчер задач" - там нет зависших сеансов 7.7?
|
|||
84
america2013
22.11.13
✎
14:23
|
Благодарю вас, дорогие мои, что до сих пор уделяете внимание : ) Но правда, не в состоянии я самостоятельно сообразить(((
Есть прогресс!!! (83) Каждый раз при неудачной попытке проверяю диспетчер, про 1с 7.7 все чисто. На данный момент код значительно упростился и работает без ошибок: v7 = ""; v7 = Новый COMObject("V77.Application"); Попытка СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазе77) + """ /N""" + СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль) + """"; Открыта = v7.Initialize(v7.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW"); Исключение Сообщить(ИнформацияОбОшибке()); КонецПопытки; Спр = v7.CreateObject("Справочник.Валюты"); Спр.Выбрать(); v7 = ""; И что же я в итоге увидел: открылась форма списка справочника 7.7 ! Где я просил её открыться? Потом заменил строку: Спр.Выбрать(); на Спр.ВыбратьЭлементы(); И... все заработало. Как надо. Последний вопрос - теперь в конфигураторе 8.2 буду писать синтаксис из 7.7 ? |
|||
85
america2013
22.11.13
✎
14:26
|
...даже сетевые папки видит:
ПутьКБазе77 = "\\192.168.0.239\база\"; |
|||
86
america2013
25.11.13
✎
10:27
|
Подключение к базе установлено.
Использую код: ВыбДок = v7.CreateObject("Документ.СчетФактура"); ВыбДок.ВыбратьДокументы(НачПериода, КонПериода); Пока ВыбДок.ПолучитьДокумент() = 1 Цикл Сообщить(ВыбДок.НомерДок); КонецЦикла; где, начДата и конДата - реквизиты на форме 8.2. Документы выводятся ВСЕ, но не за период начала и окончания. Подскажите пожалуйста, как из этого подключения выбрать документы за определенный период? |
|||
87
america2013
25.11.13
✎
10:28
|
*где, НачПериода и КонПериода - реквизиты на форме 8.2
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |