Имя: Пароль:
1C
1С v8
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 соединение так и не взлетело...