|
COM соединение из 8.2 к 7.7 | ☑ | ||
---|---|---|---|---|
0
Janna26
10.05.12
✎
12:04
|
Всем привет. Столкнулась с такой проблемой. Уже битый час не могу настроить строку подключения к 7.7.
V7 = Новый COMОбъект("V1CEnterprise.Application"); init = V7.Initialize(V7.RMTrade, "/d D:\Навика\NData\NData", "No_splash_show"); Номенклатура77 = V7.CreateObject("Справочник.Номенклатура"); постоянно ругается на CreateObject. Ну это понятно из за того что init всегда ложь. У базы 7.7 пароля и логина нет. Пробовала ставить, происходит ровным счетом тоже самое. что я делаю не так? |
|||
1
Wobland
10.05.12
✎
12:09
|
/dD:\Навика\NData\NData ?
|
|||
2
alkov
10.05.12
✎
12:10
|
NO_SPLASH_SHOW
|
|||
3
155153144627
10.05.12
✎
12:10
|
Ты уже второй человек за сегодня который создает непонятный ком-объект:
V7 = Новый COMОбъект("V1CEnterprise.Application"); Попробуй V77 = Новый COMОбъект("V77.Application"); и насколько я помню без логина и пароля соединения не произойдет. |
|||
4
Академик_
Келдыш 10.05.12
✎
12:10
|
может v77.application?)
|
|||
5
rphosts
10.05.12
✎
12:12
|
(3) ну может там все без логину в базу ходят
|
|||
6
Janna26
10.05.12
✎
12:22
|
(4) я и так уже пробывала.
|
|||
7
Janna26
10.05.12
✎
12:25
|
V7 = Новый COMОбъект("v77.Application");
init = V7.Initialize(V7.RMTrade, "/dD:\Навика\NData\NData","NO_SPLASH_SHOW"); Номенклатура77 = V7.CreateObject("Справочник.Номенклатура"); а=0; Сделала вот так все равно не получается :( |
|||
8
Галахад
гуру
10.05.12
✎
12:26
|
Путь-то правильный? Что за NData\NData
|
|||
9
Cube
10.05.12
✎
12:30
|
||||
10
zladenuw
10.05.12
✎
12:31
|
Соединение = Новый COMОбъект("V77.Application");
Открыта = Соединение.Initialize(Соединение.RMTrade,"/D"""+ПутьКБазе+""""+" /N"+СокрЛП(Пользователь7)+" /P"+СокрЛП(Пароль7),?(ЗапускБезЗаставки = 0,"NO_SPLASH_SHOW",""));//"NO_SPLASH_SHOW" Попытка Если Соединение.Метаданные.Выбран() = 0 Тогда ЗавершитьРаботуСистемы(Ложь); КонецЕсли; Исключение ЗавершитьРаботуСистемы(Ложь); КонецПопытки; |
|||
11
Traker
10.05.12
✎
12:32
|
ОС какая на компьютере?
|
|||
12
Janna26
10.05.12
✎
12:35
|
(11) 7 корп.
|
|||
13
Eugene_life
10.05.12
✎
12:37
|
(12) ОС = операционная система
|
|||
14
Janna26
10.05.12
✎
12:37
|
(9) не работает. Я вот грешу на драйвер 7.7 не помню ставила ли 7.7 или копированием платформу перенесла, сейчас попробую переустановить.
|
|||
15
Janna26
10.05.12
✎
12:37
|
(13) Windows 7 корпоративная.
|
|||
16
Eugene_life
10.05.12
✎
12:38
|
(14) попробуй 1С 7.7 мобильная версия (не помню как она называется по-настоящему), которая работает без установки
|
|||
17
155153144627
10.05.12
✎
12:40
|
(16) Любая версия 7.7 все пропишет в реестр, если ее запустит локальный администратор.
|
|||
18
Eugene_life
10.05.12
✎
12:42
|
(17) не знал
|
|||
19
Janna26
10.05.12
✎
12:43
|
Переустановила. Не помогло.
|
|||
20
Janna26
10.05.12
✎
12:44
|
ИмяИБ="D:\Навика\NData\NData";
Пользователь7 = "Com"; Пароль7 ="Com"; V7 = Новый COMОбъект("V1CEnterprise.Application"); init = V7.Initialize(V7.RMTrade,"/D"""+ИмяИБ+""""+" /N"+СокрЛП(Пользователь7)+" /P"+СокрЛП(Пароль7),"NO_SPLASH_SHOW"); //Номенклатура77 = V7.CreateObject("Справочник.Номенклатура"); а=0; на данный момент код такой. |
|||
21
del123
10.05.12
✎
12:47
|
а вообще база 7.7 нормально запускается? ни на что не ругается?
|
|||
22
Janna26
10.05.12
✎
12:48
|
(21) Да все отлично. Даже проверяла так. Убирала путь из строки тогда 1с открывает выбор баз 7.7 я там выбирала нужную базу и вводила правильно логин и пароль. и все равно....
|
|||
23
155153144627
10.05.12
✎
12:51
|
ИмяИБ="D:\Навика\NData\NData";
Пользователь7 = "Com"; Пароль7 ="Com"; V7 = Новый COMОбъект("V1CEnterprise.Application"); init = V7.Initialize(V7.RMTrade,"/D"""+ИмяИБ+""""+" /N"+СокрЛП(Пользователь7)+" /P"+СокрЛП(Пароль7),"NO_SPLASH_SHOW"); Если init = 0 Тогда Сообщить("Не удалось подключиться к указанной базе"); КонецЕсли; Вот так сделай. И еще такой момент, если индексы порушены некорректным выходом из программы, то подключиться не удасться. Нужна будет переиндексация в монопольном режиме. |
|||
24
Janna26
10.05.12
✎
12:51
|
У кого еще мысли будут?
|
|||
25
155153144627
10.05.12
✎
12:52
|
ИмяИБ="D:\Навика\NData\NData";
Пользователь7 = "Com"; Пароль7 ="Com"; V7 = Новый COMОбъект("V77.Application"); init = V7.Initialize(V7.RMTrade,"/D"""+ИмяИБ+""""+" /N"+СокрЛП(Пользователь7)+" /P"+СокрЛП(Пароль7),"NO_SPLASH_SHOW"); Если init = 0 Тогда Сообщить("Не удалось подключиться к указанной базе"); КонецЕсли; |
|||
26
hhhh
10.05.12
✎
12:54
|
(25) откуда запускаете это хозяйство? С клиента или сервера?
|
|||
27
Janna26
10.05.12
✎
12:55
|
(25) Ну ты мой спаситель =) Скорее всего проблема и правда была в индексах.
|
|||
28
155153144627
10.05.12
✎
12:55
|
А запускала 1с-ку от имени администратора?
|
|||
29
nicxxx
10.05.12
✎
12:55
|
7.7 установлена простым копированием каталога BIN?
|
|||
30
Janna26
10.05.12
✎
12:56
|
(28) да у меня на пользователе локальный админ. Запустила в монопольно переиндексировала, вроде заработало :)
|
|||
31
Janna26
10.05.12
✎
12:56
|
(29) читай (19).
|
|||
32
Stamper
10.05.12
✎
13:00
|
может, Пользователь7 уже залогинен в ИБ 7.7? два раза под одним и тем-же залогиниться не удастся.
плюс, нужно проверить, остался ли запущенный процесс 1с77 на машине. и последняя мысль -- зайти в базу в монопольном режиме. возможно, при неудачном выходе из базы её теперь нужно переиндексировать. вот ком-объект и не пускает. |
|||
33
Stamper
10.05.12
✎
13:01
|
тьфу, не вчитался...
|
|||
34
Janna26
10.05.12
✎
13:28
|
Ну это еще не все :)
Если кого не затруднит объясните пожалуйста. Мне нужно из справочника номенклатура в 7 выбрать все элементы, лучше всего это сделать запросом. ТекстЗапр = "//{{ЗАПРОС(Сформировать) |Наименование = Справочник.Номенклатура.ТекущийЭлемент; |";//}}ЗАПРОС что то такое в конструкторе получилось :) А как дальше? Пока Запрос.Группировка("Наименование") = 1 Цикл а=0; КонецЦикла; не работает :( |
|||
35
del123
10.05.12
✎
13:31
|
а где в запросе группировка?
|
|||
36
Janna26
10.05.12
✎
13:32
|
(35) можешь поправить? не знаю в принципе как на 7.7 запросы писать :(
|
|||
37
Janna26
10.05.12
✎
13:34
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Группировка ТекущийЭлемент упорядочить по ТекущийЭлемент.ВидНоменклатуры; |"//}}ЗАПРОС ; Так? |
|||
38
del123
10.05.12
✎
13:38
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Группировка ТекущийЭлемент; |"//}}ЗАПРОС ; как то так вроде) Семерки под рукой нет, так что по памяти..) |
|||
39
Janna26
10.05.12
✎
14:34
|
Спасибо это получилось :)
|
|||
40
Janna26
10.05.12
✎
15:38
|
Ном77 = V7.CreateObject("Справочник.Номенклатура");
Позиция = Ном77.НайтиПоРеквизиту("Артикул", Выборка.Артикул); Позиция возвращает значение 1. А как мне получить сам объект? |
|||
41
155153144627
10.05.12
✎
15:39
|
Позиция = Ном77.ТекущийЭлемент();
|
|||
42
Janna26
10.05.12
✎
15:40
|
(41) а если в восьмерке?
|
|||
43
155153144627
10.05.12
✎
15:40
|
Если Ном77.НайтиПоРеквизиту("Артикул", Выборка.Артикул) = 1 Тогда
Позиция = Ном77.ТекущийЭлемент(); Иначе Сообщить("Номенклатура не найдена"); КонецЕсли; |
|||
44
Janna26
10.05.12
✎
15:41
|
{Форма.Форма.Форма(24)}: Значение не является значением объектного типа (ТекущийЭлемент)
Ном77=Позиция.ТекущийЭлемент(); |
|||
45
Janna26
10.05.12
✎
15:42
|
(43) спасибо получилось.
|
|||
46
Janna26
10.05.12
✎
15:53
|
Опять проблема :(
Пока Выборка.Следующий() Цикл Ном77 = V7.CreateObject("Справочник.Номенклатура"); Если выборка.Артикул <> "" тогда если Ном77.НайтиПоРеквизиту("Артикул", Выборка.Артикул)=1 тогда; Ном=Ном77.ТекущийЭлемент(); СтрРаз = РазныеЭлементы.Добавить(); СтрРаз.Наименование77 = Ном.Наименование; КонецЕсли; КонецЕсли; КонецЦикла; вот такой код что бы сильно не вникать объясню. Я в запросе выбираю нужный мне артикул из 8.2 и пытаюсь найти его в 7.7 я уверена что этот артикул есть, а программа не находит. Грешу на иерархию. Есть у кого нить предложения? |
|||
47
Janna26
10.05.12
✎
15:55
|
Ном77.НайтиПоРеквизиту("Артикул", Выборка.Артикул) вот это возвращает 0!
|
|||
48
Eugene_life
10.05.12
✎
15:57
|
(47) Значит, по артикулу элемент не нашелся..
|
|||
49
Janna26
10.05.12
✎
15:58
|
(480 Это я поняла. Меня интересует почему.
|
|||
50
Eugene_life
10.05.12
✎
15:58
|
(47) + попробуй СокрЛП()
|
|||
51
Eugene_life
10.05.12
✎
16:00
|
(50) + или, возможно, в этот артикул из 8-ки закрался Символы.НПП. Его нужно убрать тогда.
|
|||
52
Janna26
10.05.12
✎
16:01
|
(51) символы проверила.
|
|||
53
Janna26
10.05.12
✎
16:02
|
(50) СокрЛП() не помг :(
|
|||
54
Eugene_life
10.05.12
✎
16:03
|
(53) Попробуй так:
Ном77.НайтиПоРеквизиту("Артикул", Выборка.Артикул,1); |
|||
55
Janna26
10.05.12
✎
16:04
|
(54) Помогло :) а что это было?
|
|||
56
Janna26
10.05.12
✎
16:04
|
Простите за глупые вопросы :(
|
|||
57
AlexTim03
10.05.12
✎
16:04
|
(46) а еще совсем не айс постоянно в цикле создавать объект:
"Ном77 = V7.CreateObject("Справочник.Номенклатура");" |
|||
58
Eugene_life
10.05.12
✎
16:05
|
(56) "1" - флаг глобального поиска (т.е. без учета иерархии), а "0" (это по умолчанию) - только в пределах подчинения. Это же 7.7 :)
|
|||
59
155153144627
10.05.12
✎
16:05
|
НайтиПоРеквизиту(<?>,,);
Синтаксис: НайтиПоРеквизиту(<ИмяРеквизита>,<Значение>,<ФлагГлобальногоПоиска>) Назначение: Найти элемент справочника по значению реквизита. Возвращает: 1 - если действие выполнено; 0 - если действие не выполнено (элемент не найден). Параметры: <ИмяРеквизита> - строка с наименованием реквизита; <Значение> - значение реквизита для поиска; <ФлагГлобальногоПоиска> - флаг поиска: 0 - поиск выполняется в пределах подчинения справочника, 1 - поиск выполняется по всему справочнику. |
|||
60
Eugene_life
10.05.12
✎
16:06
|
(57) + Кстати, да. Строку Ном77 = V7.CreateObject("Справочник.Номенклатура"); лучше вынести перед циклом.
|
|||
61
Janna26
10.05.12
✎
16:22
|
(60) вынесла спасибо.
|
|||
62
John83
15.05.12
✎
10:27
|
(0) винда случаем не 64х?
какой дистрибутив ставила? я дома пытался поставить 7ку, но COM соединение так и не взлетело... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |