Ошибка при вызове метода контекста initialize

0

06.12.2012 — 13:05


Доброго времени суток. Есть необходимость перноса некоторых данных из 8.2 в 7.7. при попытке инициализировать 7.7 выдает ошибку: Ошибка при вызове метода контекста (Initialize): Неизвестная ошибка. База 7.7 на SQL 2005, с дбфной базой отрабатывает нормально. Где собака порылась — не могу понять

1

06.12.2012 — 14:50

База=»»;
База=Новый COMОбъект(«V77.Application»);
Попытка
СтрокаПодключения = «/D»»»+СокрЛП(ПутьКБазе)+»»» /N»»»+СокрЛП(Пользователь)+»»» /P»»»+СокрЛП(Пароль)+»»»»;
Открыта=База.Initialize(База.RMTrade,СтрокаПодключ ения,»NO_SPLASH_SHOW»);
Если Открыта Тогда
ЕстьПодключение = Истина;
Сообщить(«Есть подключение»);
Иначе
Предупреждение(«Ошибка при подключении!»);
ЕстьПодключение = Ложь;
КонецЕсли;
Исключение
Предупреждение(«Ошибка при подключении!»);
ЕстьПодключение = Ложь;
КонецПопытки;
Возврат ЕстьПодключение;

2

06.12.2012 — 15:43

V77s.Application

3

06.12.2012 — 19:45

DeiMos, и v77 и v77s пробовал — результат одинаковый

4

06.12.2012 — 22:14

Скорее всего, попортился реестр. Где этот самый Application связан с утилитой. И с ее расположением, естественно.
Проще всего для исправления инсталлировать «семерку» заново.
Ну, или глянуть комп, где все хорошо вызывается, и сравнить соответствующие ветви реестра.

5

06.12.2012 — 22:29

И исчё… Бывают трудности, если имеются несколько (т.е. больше одного BIN-а с екзешникоми разных компонент. Например, один — для бухии, другой — для расчета. И вызов ОЛЕ должен быть адресным: вызывать екзешник с определенного БИНа. Вот здесь не обойтись правкой реестра, ибо инсталлятор засандаливает один адрес БИНа для всех апликаторов: и v77s, и v77l, v77m, и, конечно v77. Затирая прежнюю работу инсталлятора другой компоненты.
Но это полбеды: по каким-то неизвестным причинам эта тонкая настройка реестра ломается. Поскольку у данного клиента я не торчу постоянно, обнаружить «когда» мне не удалось. И, между прочим, все юзеры, цепляющиеся к базам, не имеют никаких прав (виндовых, конечно) лазать в этот реестр, и что-то менять.
Но тем не менее…

6

07.12.2012 — 06:15

VZ, две базы лежат на одном сервере рядом, одна SQL а другая ДБФ — к дбф подключается без проблем… что может быть с скл базой?

7

07.12.2012 — 10:51

скажу даже больше — проверил подключение из 77 к 77 с той же строкой подключения и все работает! и даже если запускать это все в клиентской части на своем компе — все работает, а на сервере — ну никак( чего серверу то не хватает?

8

07.12.2012 — 12:10

7-exDenver > Внимательно читать (5). Для вызова 1С в качестве сервера OLE, последний должен быть прописан в реестре. Это первое, что надо проверить.
Ищем в реестре ветку V77.Application. Находим (в HLCR). И смотрим подветвь CLSD. Там адрес ветви реестра, где оси надо искать исполняемую часть: {63112D80-94F0-11D2-9F39-008048DA120F**
Ищем эту самую ветвь реестра, находим. Там есть параметр LocalServer32, где находится эта самая серверная часть олейного соединения. Например, C:PROGRA~21Cv77BIN1cv7.exe. Смотрим, соответствует ли это действительности. Нет — поправляем.
Кстати, для 64-разрядных осей PROGRA~2 — это Program Files (x86). Бо именно в этот раздел должен быть запулен «семерочный» екзешник. А ветвь {63112D80-94F0-11D2-9F39-008048DA120F** содержать параметр InprocHandler32 со значением Ole32.dll.
Аналогичное строение реестра для V77s.Application и прочих «.Application»-ов.
При поиске V77.Application видны соответствующие соседи. А рядом с {63112D80-94F0-11D2-9F39-008048DA120F** — их параметры. Все разложено по кучкам ;)

9

07.12.2012 — 12:18

VZ спасибо! пойду админа мучать а то к серверу доступ только у него

10

07.12.2012 — 12:32

посмотрели все вроде на месте и совпадает. Ну это и логично — на том же сервере к дбфной базе без проблем подключается. я вот думаю может проблема в 2005 SQL?

11

07.12.2012 — 17:00

10-exDenver > Вроде?
«Аналогичное строение реестра для V77s.Application» — точно присутствует?

12

07.12.2012 — 17:39

10-exDenver > Смотреть надо, начиная с очевидного. OLE-сервер организует не «1С», хоть «семерка», хот «восьмерка», да хоть «тридцатьчетверка». А ось. А ей все равно на вызывающий клиент.
Потому надо внимательно изучить строки подключения на предмет ошибок. Путь к базе может быть без кавычек, если нет внутренних пробелов, или от в нотации 8.2 (пример: C:PROGRA~21Cv77BIN1cv7.exe). Хотя представление 8.2 в NT-ых осях может быть запрещено (конкретное место реестра не помню, и искать сейчас не буду).
Лучше всего строку вызова отладить в значке. Т.е., делаем значок вызова конкретной базы с конкретным пользователем, конкретным пассом. Если все отлично запускается, перетаскиваем параметры в модуль в скобки Initialize (без начала C:PROGRA~21Cv77BIN1cv7.exe — это подставит ось из реестра).
Сообщение «Неизвестная ошибка» может быть при нарушении баланса кавычек.
Можно выкинуть ключи /N и /P (из-за чего появтся приглашение ввести юзера и пароль ручками), и заводить их потом, последовательно, убедившись, что инициализация клюет на путь к базе.

13

07.12.2012 — 17:49

+12 Пользуйся утилами, которые могут показать захват базы. Например, 1calmin. Starter1C тоже это умеет (мой выбор).

14

07.12.2012 — 18:28

VZ, я в (7) писал что с этой же строкой подключения в клиентской части подключение проходит — т.е. на моем локальном компе с компоненатми и правами все в норме. а на сервере происходят какие странности

15

07.12.2012 — 19:42

DEP?

16

07.12.2012 — 20:01

14-exDenver > Сервер OLE вызывается из той же среды, где его инициировал клиент. Т.е., если клиент в локальном компе — значит, и сервер OLE вызывается с того же локального компа. Если клиент на снрвенре — соответственно, и OLE-сервер должен быть на сервере. Потому как при вызове COM-объекта V77.Application ось лезет в свой реестр.
И причем здесь «на моем локальном компе с компоненатми и правами все в норме»? А на сервере — все в норме? Реестр правильно настроен для вызова сом-объекта, или как?
15-DeiMos > DEP здесь непричем: если можно вызвать одноэсину интерактивно, значит, можно вызапть как и оле-объект.
Другое дело, что пользователь «1С» может не обладать правами работать с оле-вызовом. Но это забота ТС проверить.

17

08.12.2012 — 05:52

много раз обращал внимание на тот факт, что ОС запоминает в реестре путь к приложению при каждом его вызове. Мне тоже нужно было неоднократно настраивать OLE-обмен между V82 и V77.
К примеру V77 на компе не установлена,запускаю её с флэшки, прописываю путь к базе, открываю базу, закрываю её. Цепляюсь к V77 из V82 — всё работает.
Переношу bin V77 на комп локально, флэшку вынимаю. Снова запускаю V77 теперь уже с HDD, закрываю. Снова цепляюсь цепляюсь к V77 из V82 — снова всё работает.

18

10.12.2012 — 08:50

доброго времени суток всем!
16 — я это все понимаю
У меня задача чтобы подключение к 7.7 работало на сервере, т.е под пользователем под которым запущен сервер 1с 8.2. При условии что база 7.7 лежит на SQL2005. Все необходимые права у этого пользователя есть (проверял даже с предоставлением админских прав). COM-объект создается, а на строке Initialize вешается… При этом я вижу в мониторе что пользователь зашел в базу. Подключение к рядом лежащей базе в формате ДБФ проходит на ура (т.е. проблемы с написанием пути отпадают). Вот и не могу понять в чем проблема

19

11.12.2012 — 07:53

(18) А база 77 самописная? ВК какие-нить используются?
Попробуй эксперимента ради взять типовую Бухгалтерию 7.7, создай базу на SQL2005 и подключись к ней штатными средствами из БП8.2 хотя бы для переноса справочников :)
Ну и, попробуй наконец так
База=Новый COMObject(«V1CEnterprise.Application»);

20

11.12.2012 — 07:56

19+ надеюсь, что у тебя comcntr.dll из правильной папки Bin зарегистрирован как OLE-сервер

21

12.12.2012 — 09:28

19 — попробовал к новой базе на 2005, пробовал к базе на 2000, перебрал все вариации объектов… у меня БП82 нет к сожалению — только документооборот, попробую поискать конфу

22

12.12.2012 — 12:43

пробовал запускать на самом сервере 1с под пользователем под которым запущен сервер — с директивой &НаКлиенте все отрабатывает, а &НаСервере — фигвам… замучался сам и админа замучал

23

12.12.2012 — 14:09

(22) стрянно всё это, что-то в твоей консерватории не тогойт …
а ты директиву &НаСервере c каким обработчиком используешь??? уж не «ПриОткрытии(Отказ)» ли???
нужно использовать обработчик ПриСозданииНаСервере(…), как то так

да и ваще, ты зачем эту директиву используешь??? ведь если не указано где исполнять, по умолчанию выбирается — &НаСервере

24

12.12.2012 — 14:13

(23) да и потом, у тебя конфа под 8.2 в режиме управляемого приложения работает, или в обычном режиме?

25

13.12.2012 — 06:46

23-24 Конфа работает в режиме управляемого приложения, на данный момент подключение запускается по кнопке с формы. &НаСервере я написал тут просто для наглядности). В общем написал я одному человеку статейку которого по переносу данных из 82 в 77 через OLE нашел в нете. он ответил вот что: «Из сеанса сервера 1с 8 вызвать 7.7 по OLE не получиться. Суть в том, что вызов OLE — интерактивный режим (вызывается не COM ядро, а вся программа 77).
Нужно организовывать подключение с клиентского сеанса 8.» В общем можно считать тему закрытой)

   ExDenver

07.12.12 — 07:27

Доброго времени суток. Есть необходимость переноса некоторых данных из 8.2 в 7.7. при попытке инициализировать 7.7 выдает ошибку: Ошибка при вызове метода контекста (Initialize): Неизвестная ошибка. База 7.7 на SQL 2005, с дбфной базой лежащей рядом отрабатывает нормально. Где собака порылась — не могу понять

   Wobland

1 — 07.12.12 — 07:31

информацию принял

   dk

2 — 07.12.12 — 07:57

в 7.7 скуль 2005 нормально заходит с этого компа?

т.к. 7-ку надо «подлечить» для подключению к скулю 2005

   ExDenver

3 — 07.12.12 — 08:02

да, bkend заменен, в обычном режиме запускается и работает нормально. может есть еще какие то нюансы?

   Рэйв

4 — 07.12.12 — 08:03

парметры вообще то разные при подключении к скул и дбф.вполне вероятно, что на скуль ты их неверно указал

   ExDenver

5 — 07.12.12 — 09:16

(4) Вы имеете в виду v77 и v77s?

   hhhh

6 — 07.12.12 — 09:29

(5) ну, в sql указываете имя сервера и имя базы. А в dbf просто имя базы.

   dk

7 — 07.12.12 — 09:36

(6) мимо — это не 8-ка

(0) показывай код ужо

   dk

8 — 07.12.12 — 09:36

пароль / пути с пробелами?

   ExDenver

9 — 07.12.12 — 09:40

(7)

ПутьКБД = «»»\s70-xen02TRCBase_Test»»»;

ПользовательБД = «Exchange»;

ПарольБД = «exchange»;

       
СерверOLE = Новый COMОбъект(«V77s.Application»);

Открыта = СерверOLE.Initialize(СерверOLE.RMTrade,»/D «+СокрЛП(ПутьКБД)+» /N»+СокрЛП(ПользовательБД)+» /P»+СокрЛП(ПарольБД),»NO_SPLASH_SHOW»);

   sidalexsandr

10 — 07.12.12 — 09:41

(9)  Подключи ПутьКБД = «»»\s70-xen02TRCBase_Test»»»; как сетевой диск. И обращайся по имени диска.

   Рэйв

11 — 07.12.12 — 09:44

(7)Еще как не мимо

подключение ДБФ,Параметры:

ПутьКБазе,Пользователь,Пароль

Подключение Скульное , параметры:

ИмяСервера,ИмяБазы,Пользователь,Пароль

   informts

12 — 07.12.12 — 09:45

База=»»;

   База=Новый COMОбъект(«V77.Application»);

   
   Попытка  

       СтрокаПодключения = «/D»»»+СокрЛП(ПутьКБазе)+»»» /N»»»+СокрЛП(Пользователь)+»»» /P»»»+СокрЛП(Пароль)+»»»»;

       Открыта=База.Initialize(База.RMTrade,СтрокаПодключения,»NO_SPLASH_SHOW»);

       
       Если Открыта Тогда

           ЕстьПодключение = Истина;

       Иначе

           Предупреждение(«Ошибка при подключении!»);

           ЕстьПодключение = Ложь;

       КонецЕсли;    

   Исключение

       Предупреждение(«Ошибка при подключении!»);

       ЕстьПодключение = Ложь;

   КонецПопытки;

   Рэйв

13 — 07.12.12 — 09:45

(9)Так что исправляй с учетом (11)

   Рэйв

14 — 07.12.12 — 09:46

ааа..Стоп. сторно!:-)

Это я из 7.7 к 8-ке по СОМ цеплялся:-)

   dk

15 — 07.12.12 — 09:46

(11) еще 1 пациент )

   Рэйв

16 — 07.12.12 — 09:46

(15)Уже осознал:-)

   dk

17 — 07.12.12 — 09:55

(9) попробуй из командной строки запустить с твоей строкой запуска ну и + путь до бинарника впереди

   ExDenver

18 — 07.12.12 — 10:20

(17) появляется окно выбора базы хотя база зарегена

   dk

19 — 07.12.12 — 11:07

кодировка наверно

   ExDenver

20 — 07.12.12 — 11:26

(19) не, все нормально, надо добавить enterprise и тогда из командной строки проходит без выбора базы

   ExDenver

21 — 07.12.12 — 11:49

проверил подключение из 77 к 77 с той же строкой подключения — и все работает! и даже если запускать это все в клиентской части на своем компе — все работает — а на сервере — ну никак(

  

ExDenver

22 — 10.12.12 — 06:50

ну вот и новая рабочая неделя наступила) а проблему так и не удалось победить

  

Palll

25.10.17 — 12:31

Столкнулся с проблемой подключения к 7.7 из 8.3.

Есть список баз к которым поочерёдно подключаюсь для получения данных. Часть из них выдаёт ошибку при вызове метода контекста Initialize, часть же подключается без проблем. Подключение происходит на сервере. При «ручной» авторизации проблем не возникает.

Строка подключения:

Попытка

        V7        = Новый COMОбъект(«v77.Application»);   // («V1CEnterprise.Application»); // Новый COMОбъект(«v77.Application»);;

        Исключение

        V7        = Новый COMОбъект(«V1CEnterprise.Application»);

        КонецПопытки;

        Польз    = ?(ЗначениеЗаполнено(ИсхТаблБаз.Пользователь)=Ложь,»»,» /N»+СокрЛП(ИсхТаблБаз.Пользователь));

        Парол    = ?(ЗначениеЗаполнено(ИсхТаблБаз.Пароль)=Ложь,»»,» /P»+СокрЛП(ИсхТаблБаз.Пароль));

        Попытка

        РезЗап  = V7.Initialize(V7.RMTrade,»/D»+СокрЛП(ИсхТаблБаз.ПутьБазы)+Польз+Парол, «NO_SPLASH_SHOW»); // «NO_SPLASH_SHOW»); // «»); //,»NO_SPLASH_SHOW»);

        Исключение

        Сообщить(ОписаниеОшибки());

        РезЗап = 0;

        КонецПопытки;

  

h-sp

1 — 25.10.17 — 12:35

(0) ЗначениеЗаполнено нет в семерке

    Ложь — тоже нет в семерке.

что вы написали такое?

  

Ёпрст

2 — 25.10.17 — 12:36

база не зарегена на сервере

  

Ёпрст

3 — 25.10.17 — 12:36

(1) подключение из снеговика в клюшки

  

Palll

4 — 25.10.17 — 12:38

(1) Неверно указал секцию при создании темы. Вопрос по 8ке.

  

Palll

5 — 25.10.17 — 12:42

(2) Как раз таки на сервере «руками» и захожу в 7ку. Запуск 7ки и служба сервера 8ки под одной доменной учётной записью.

  

Builder

6 — 25.10.17 — 12:44

(2) Если база не зарегана, то вылезает окно с регистрацией и вроде висит до посинения.

  

Franchiser

7 — 25.10.17 — 12:44

Эти базы всегда не подключаются или только когда по очереди выполняешь подключение?

  

Palll

8 — 25.10.17 — 12:56

(6) Думаю так бы было запусти я авторизацию на клиенте.

(7) Не подключаются и поочерёдно, и по отдельности.

  

Palll

9 — 25.10.17 — 13:10

Попробовал перенести авторизацию на клиент. Всё работает, но сбор данных должен работать как фоновое задание.

  

бомболюк

10 — 25.10.17 — 14:38

проверь, в точности ли путь к базе соответствует тому, как он зарегистрирован на сервере, до последнего слеша, надо чтоб было как в реестре (HKEY_CURRENT_USERSoftware1C1Cv77.7Titles)

  

бомболюк

11 — 25.10.17 — 14:39

+(10), и да, смотреть надо от пользователя, под которым крутится сервер приложения 8ки.

  

Palll

12 — 25.10.17 — 15:07

(10),(11) Всё запускаю под одной и той же учётной записью. В путях была разница как раз в последнем слешэ, но его добавление результата не принесло.

  

бомболюк

13 — 25.10.17 — 15:26

а если вместо «/D» попробовать «enterprise /D» лучше не станет?

  

бомболюк

14 — 25.10.17 — 15:27

и может стоит заключать параметры в кавычки?

  

h-sp

15 — 25.10.17 — 15:33

(12) посмотри может кто-то еще в базе сидит

  

Palll

16 — 25.10.17 — 16:01

(15) Базы не в монопольном режиме, запуская авторизацию через клиент без проблем в неё захожу.

  

Palll

17 — 25.10.17 — 16:15

(13) Без изменений. Думаю дело не в строке подключения, с учётом того, что авторизация на клиенте работает.

  

h-sp

18 — 25.10.17 — 16:16

(16) попробуйте «v77s.Application»

  

uno-group

19 — 25.10.17 — 16:24

Проверяй путь к базе видать кривой. может где руская буква вместо английской или наоборот

  

uno-group

20 — 25.10.17 — 16:25

РезЗап  = V7.Initialize(V7.RMTrade,»/D»+СокрЛП(ИсхТаблБаз.ПутьБазы)

+» «+Польз+» «+Парол

Пробелы между путем пользователем и паролем кто будет ставить

  

Palll

21 — 25.10.17 — 16:28

(18) Все базы развёрнуты на SQL при этом только часть из них не авторизуется. Не помогло.

(19),(20) Пути верные. При запуске на клиенте авторизация успешна, на сервере — нет. То же и про строку авторизации, дело не в пробелах.

  

Palll

22 — 26.10.17 — 14:24

В итоге сделал костыль. Другая обработка выполняется в фоне и создаёт скрипт который запускает клиент 1с с обработкой опроса баз. Подскажите, может есть решение поизящнее?

0

06.12.2012 — 13:05


Доброго времени суток. Есть необходимость перноса некоторых данных из 8.2 в 7.7. при попытке инициализировать 7.7 выдает ошибку: Ошибка при вызове метода контекста (Initialize): Неизвестная ошибка. База 7.7 на SQL 2005, с дбфной базой отрабатывает нормально. Где собака порылась — не могу понять

1

06.12.2012 — 14:50

База=»»;
База=Новый COMОбъект(«V77.Application»);
Попытка
СтрокаПодключения = «/D»»»+СокрЛП(ПутьКБазе)+»»» /N»»»+СокрЛП(Пользователь)+»»» /P»»»+СокрЛП(Пароль)+»»»»;
Открыта=База.Initialize(База.RMTrade,СтрокаПодключ ения,»NO_SPLASH_SHOW»);
Если Открыта Тогда
ЕстьПодключение = Истина;
Сообщить(«Есть подключение»);
Иначе
Предупреждение(«Ошибка при подключении!»);
ЕстьПодключение = Ложь;
КонецЕсли;
Исключение
Предупреждение(«Ошибка при подключении!»);
ЕстьПодключение = Ложь;
КонецПопытки;
Возврат ЕстьПодключение;

2

06.12.2012 — 15:43

V77s.Application

3

06.12.2012 — 19:45

DeiMos, и v77 и v77s пробовал — результат одинаковый

4

06.12.2012 — 22:14

Скорее всего, попортился реестр. Где этот самый Application связан с утилитой. И с ее расположением, естественно.
Проще всего для исправления инсталлировать «семерку» заново.
Ну, или глянуть комп, где все хорошо вызывается, и сравнить соответствующие ветви реестра.

5

06.12.2012 — 22:29

И исчё… Бывают трудности, если имеются несколько (т.е. больше одного BIN-а с екзешникоми разных компонент. Например, один — для бухии, другой — для расчета. И вызов ОЛЕ должен быть адресным: вызывать екзешник с определенного БИНа. Вот здесь не обойтись правкой реестра, ибо инсталлятор засандаливает один адрес БИНа для всех апликаторов: и v77s, и v77l, v77m, и, конечно v77. Затирая прежнюю работу инсталлятора другой компоненты.
Но это полбеды: по каким-то неизвестным причинам эта тонкая настройка реестра ломается. Поскольку у данного клиента я не торчу постоянно, обнаружить «когда» мне не удалось. И, между прочим, все юзеры, цепляющиеся к базам, не имеют никаких прав (виндовых, конечно) лазать в этот реестр, и что-то менять.
Но тем не менее…

6

07.12.2012 — 06:15

VZ, две базы лежат на одном сервере рядом, одна SQL а другая ДБФ — к дбф подключается без проблем… что может быть с скл базой?

7

07.12.2012 — 10:51

скажу даже больше — проверил подключение из 77 к 77 с той же строкой подключения и все работает! и даже если запускать это все в клиентской части на своем компе — все работает, а на сервере — ну никак( чего серверу то не хватает?

8

07.12.2012 — 12:10

7-exDenver > Внимательно читать (5). Для вызова 1С в качестве сервера OLE, последний должен быть прописан в реестре. Это первое, что надо проверить.
Ищем в реестре ветку V77.Application. Находим (в HLCR). И смотрим подветвь CLSD. Там адрес ветви реестра, где оси надо искать исполняемую часть: {63112D80-94F0-11D2-9F39-008048DA120F**
Ищем эту самую ветвь реестра, находим. Там есть параметр LocalServer32, где находится эта самая серверная часть олейного соединения. Например, C:PROGRA~21Cv77BIN1cv7.exe. Смотрим, соответствует ли это действительности. Нет — поправляем.
Кстати, для 64-разрядных осей PROGRA~2 — это Program Files (x86). Бо именно в этот раздел должен быть запулен «семерочный» екзешник. А ветвь {63112D80-94F0-11D2-9F39-008048DA120F** содержать параметр InprocHandler32 со значением Ole32.dll.
Аналогичное строение реестра для V77s.Application и прочих «.Application»-ов.
При поиске V77.Application видны соответствующие соседи. А рядом с {63112D80-94F0-11D2-9F39-008048DA120F** — их параметры. Все разложено по кучкам ;)

9

07.12.2012 — 12:18

VZ спасибо! пойду админа мучать а то к серверу доступ только у него

10

07.12.2012 — 12:32

посмотрели все вроде на месте и совпадает. Ну это и логично — на том же сервере к дбфной базе без проблем подключается. я вот думаю может проблема в 2005 SQL?

11

07.12.2012 — 17:00

10-exDenver > Вроде?
«Аналогичное строение реестра для V77s.Application» — точно присутствует?

12

07.12.2012 — 17:39

10-exDenver > Смотреть надо, начиная с очевидного. OLE-сервер организует не «1С», хоть «семерка», хот «восьмерка», да хоть «тридцатьчетверка». А ось. А ей все равно на вызывающий клиент.
Потому надо внимательно изучить строки подключения на предмет ошибок. Путь к базе может быть без кавычек, если нет внутренних пробелов, или от в нотации 8.2 (пример: C:PROGRA~21Cv77BIN1cv7.exe). Хотя представление 8.2 в NT-ых осях может быть запрещено (конкретное место реестра не помню, и искать сейчас не буду).
Лучше всего строку вызова отладить в значке. Т.е., делаем значок вызова конкретной базы с конкретным пользователем, конкретным пассом. Если все отлично запускается, перетаскиваем параметры в модуль в скобки Initialize (без начала C:PROGRA~21Cv77BIN1cv7.exe — это подставит ось из реестра).
Сообщение «Неизвестная ошибка» может быть при нарушении баланса кавычек.
Можно выкинуть ключи /N и /P (из-за чего появтся приглашение ввести юзера и пароль ручками), и заводить их потом, последовательно, убедившись, что инициализация клюет на путь к базе.

13

07.12.2012 — 17:49

+12 Пользуйся утилами, которые могут показать захват базы. Например, 1calmin. Starter1C тоже это умеет (мой выбор).

14

07.12.2012 — 18:28

VZ, я в (7) писал что с этой же строкой подключения в клиентской части подключение проходит — т.е. на моем локальном компе с компоненатми и правами все в норме. а на сервере происходят какие странности

15

07.12.2012 — 19:42

DEP?

16

07.12.2012 — 20:01

14-exDenver > Сервер OLE вызывается из той же среды, где его инициировал клиент. Т.е., если клиент в локальном компе — значит, и сервер OLE вызывается с того же локального компа. Если клиент на снрвенре — соответственно, и OLE-сервер должен быть на сервере. Потому как при вызове COM-объекта V77.Application ось лезет в свой реестр.
И причем здесь «на моем локальном компе с компоненатми и правами все в норме»? А на сервере — все в норме? Реестр правильно настроен для вызова сом-объекта, или как?
15-DeiMos > DEP здесь непричем: если можно вызвать одноэсину интерактивно, значит, можно вызапть как и оле-объект.
Другое дело, что пользователь «1С» может не обладать правами работать с оле-вызовом. Но это забота ТС проверить.

17

08.12.2012 — 05:52

много раз обращал внимание на тот факт, что ОС запоминает в реестре путь к приложению при каждом его вызове. Мне тоже нужно было неоднократно настраивать OLE-обмен между V82 и V77.
К примеру V77 на компе не установлена,запускаю её с флэшки, прописываю путь к базе, открываю базу, закрываю её. Цепляюсь к V77 из V82 — всё работает.
Переношу bin V77 на комп локально, флэшку вынимаю. Снова запускаю V77 теперь уже с HDD, закрываю. Снова цепляюсь цепляюсь к V77 из V82 — снова всё работает.

18

10.12.2012 — 08:50

доброго времени суток всем!
16 — я это все понимаю
У меня задача чтобы подключение к 7.7 работало на сервере, т.е под пользователем под которым запущен сервер 1с 8.2. При условии что база 7.7 лежит на SQL2005. Все необходимые права у этого пользователя есть (проверял даже с предоставлением админских прав). COM-объект создается, а на строке Initialize вешается… При этом я вижу в мониторе что пользователь зашел в базу. Подключение к рядом лежащей базе в формате ДБФ проходит на ура (т.е. проблемы с написанием пути отпадают). Вот и не могу понять в чем проблема

19

11.12.2012 — 07:53

(18) А база 77 самописная? ВК какие-нить используются?
Попробуй эксперимента ради взять типовую Бухгалтерию 7.7, создай базу на SQL2005 и подключись к ней штатными средствами из БП8.2 хотя бы для переноса справочников :)
Ну и, попробуй наконец так
База=Новый COMObject(«V1CEnterprise.Application»);

20

11.12.2012 — 07:56

19+ надеюсь, что у тебя comcntr.dll из правильной папки Bin зарегистрирован как OLE-сервер

21

12.12.2012 — 09:28

19 — попробовал к новой базе на 2005, пробовал к базе на 2000, перебрал все вариации объектов… у меня БП82 нет к сожалению — только документооборот, попробую поискать конфу

22

12.12.2012 — 12:43

пробовал запускать на самом сервере 1с под пользователем под которым запущен сервер — с директивой &НаКлиенте все отрабатывает, а &НаСервере — фигвам… замучался сам и админа замучал

23

12.12.2012 — 14:09

(22) стрянно всё это, что-то в твоей консерватории не тогойт …
а ты директиву &НаСервере c каким обработчиком используешь??? уж не «ПриОткрытии(Отказ)» ли???
нужно использовать обработчик ПриСозданииНаСервере(…), как то так

да и ваще, ты зачем эту директиву используешь??? ведь если не указано где исполнять, по умолчанию выбирается — &НаСервере

24

12.12.2012 — 14:13

(23) да и потом, у тебя конфа под 8.2 в режиме управляемого приложения работает, или в обычном режиме?

25

13.12.2012 — 06:46

23-24 Конфа работает в режиме управляемого приложения, на данный момент подключение запускается по кнопке с формы. &НаСервере я написал тут просто для наглядности). В общем написал я одному человеку статейку которого по переносу данных из 82 в 77 через OLE нашел в нете. он ответил вот что: «Из сеанса сервера 1с 8 вызвать 7.7 по OLE не получиться. Суть в том, что вызов OLE — интерактивный режим (вызывается не COM ядро, а вся программа 77).
Нужно организовывать подключение с клиентского сеанса 8.» В общем можно считать тему закрытой)

ghostrid3r
11.12.2012 14:12 Прочитано: 10968

Добрый день подскажите пожалуйста, выполнял эту процедуру пару раз все отлично проходило, сейчас не могу изза того что Initialize выдает всегда ЛОЖЬ, это происходит потому что такая строка: База77 = Новый СОМОбъект(«v77.Application») выдает всплывающее окно с выбором пользователя и пароля, как убрать его.
вот сама процедура:Код 1C v 8.х

 База77Открыта = Ложь;
БазаПуть = ПутьКБазе77;

Если НЕ ПустаяСтрока(БазаПуть) Тогда
Попытка
База77 = Новый COMОбъект("V77.Application");
БазаПользователь = ИмяПользователя77;
БазаПароль = Пароль77;

Если не ЗначениеЗаполнено(БазаПользователь) и не ЗначениеЗаполнено(БазаПуть) Тогда
Сообщить("Не все параметры подключения к базе указаны в настройках");
Возврат;
КонецЕсли;
Состояние("Подключение к информационной базе 1С:Предприятие 7.7. Путь к базе:" + БазаПуть + ", имя пользователя:" + БазаПользователь);
СтрокаПодключения = "/D"""+СокрЛП(БазаПуть)+""" /N"""+СокрЛП(БазаПользователь)+""" /P"""+СокрЛП(БазаПароль)+"""";
Открыта = База77.Initialize(База77.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
Если Открыта = 1 Тогда
Попытка
Если ПустаяСтрока(База77.Метаданные.Идентификатор) Тогда
Открыта = 0;
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
Открыта = 0;
КонецПопытки;
КонецЕсли;
Если Открыта = 0 ТОгда
Сообщить("Ошибка подключения к информационной базе 1С:Предприятие 7.7!",СтатусСообщения.Важное);
Сообщить(ОписаниеОшибки());
Иначе
База77Открыта = Истина;
Состояние("Подключение к информационной базе 1С:Предприятие 7.7 выполнено успешно.");
КонецЕсли;
Исключение
Сообщить("Ошибка подключения! Программа 1С:Предприятие 7.7 на данном компьютере не установлена!", СтатусСообщения.Важное);
КонецПопытки;
КонецЕсли;


Изменено 11.12.12 14:13:17

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
11.12.2012 14:43 Ответ № 1

Проверь пользователя и пароль, если все правильно, то не должно выводиться сообщение

ghostrid3r
11.12.2012 14:48 Ответ № 2

все правильно и пользователь и пароль, и почему открывается семерка вроде бы до обьявления пользователя и пароля вызывается новый сомобъект

ghostrid3r
11.12.2012 14:49 Ответ № 3

а когда открывается выбор пользователя и пароля то уже не срабатывает Initialize и база получается не открыта

ghostrid3r
11.12.2012 14:57 Ответ № 4

не понял конечно в чем причина: но при таком случае

База7 = Новый COMОбъект(«V77.Application»);
База77 = Новый COMОбъект(«V77.Application»);

в первом случае все отлично проходит, а во втором выбивает окно пользователя и пароля

ghostrid3r
11.12.2012 15:02 Ответ № 5

все равно беда

E_Migachev
11.12.2012 15:14 Ответ № 6

вот рабочий пример
Код 1C v 8.х

 // в v 8.1 подключаюсь к семерочной базе

База= Новый COMObject("v77.Application");

Открыта=База.Initialize(Опер.RMTrade," /d"+Путь+" /N" + СокрЛП(Пользователь)+ " /P" +СокрЛП(Пароль),"");

СпрСотр = База.CreateObject("Справочник.Сотрудники");
Если СпрСотр.Выбрать("Укажите откуда берем остатки:") = 0 Тогда

Предупреждение("Не указано место остатков!");
Возврат;

КонецЕсли;

ghostrid3r
11.12.2012 16:59 Ответ № 7

не работает этот пример, выдает всеравно Ложь, если после пароля поставить + вместо запятой то выдает ошибку при вызове метода контекста «Initialize»

E_Migachev
11.12.2012 17:14 Ответ № 8

(7) ghostrid3r, попробуй на базе без пользователей

ghostrid3r
11.12.2012 18:14 Ответ № 9

на базе без пользователь тоже Ложь.

ghostrid3r
11.12.2012 18:15 Ответ № 10

мне кажется строка инициализации нужна другая, только вот какая?

E_Migachev
11.12.2012 18:42 Ответ № 11

(10) ghostrid3r, строка должна быть как в примереКод 1C v 8.х

 БазаТам = Новый COMОбъект("V77.Application"); 
ПутьККаталогу = "D:DBTEST";
ПользовательОле = "Admin";
ПарольОле = "1004";
МонопольныйРежимOLE = "";
ЗапускБезЗаставки = 1;

Результат = БазаТам .Initialize ( БазаТам.RMTrade , "/d" + ПутьККаталогу + " /n" + ПользовательОле + " /p" + ПарольОле + МонопольныйРежимOLE ,?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));

еще можно попробовать V77S.Application

Слушай… а может у тебя висит повисший процесс соединения!? удали в диспетчере все процессы 7-ки

ghostrid3r
12.12.2012 17:49 Ответ № 12

теперь пишет что значение не являеться значением объектного типа RMTrade. Я просто не могу понять как оно до этого у людей работало, у меня с самого начало не стало подсоединятся

Подсказка: Для выделения Кода используйте (в редакторе).
ghostrid3r
11.12.2012 14:12 Прочитано: 11136

Добрый день подскажите пожалуйста, выполнял эту процедуру пару раз все отлично проходило, сейчас не могу изза того что Initialize выдает всегда ЛОЖЬ, это происходит потому что такая строка: База77 = Новый СОМОбъект(«v77.Application») выдает всплывающее окно с выбором пользователя и пароля, как убрать его.
вот сама процедура:Код 1C v 8.х

 База77Открыта = Ложь;
БазаПуть = ПутьКБазе77;

Если НЕ ПустаяСтрока(БазаПуть) Тогда
Попытка
База77 = Новый COMОбъект("V77.Application");
БазаПользователь = ИмяПользователя77;
БазаПароль = Пароль77;

Если не ЗначениеЗаполнено(БазаПользователь) и не ЗначениеЗаполнено(БазаПуть) Тогда
Сообщить("Не все параметры подключения к базе указаны в настройках");
Возврат;
КонецЕсли;
Состояние("Подключение к информационной базе 1С:Предприятие 7.7. Путь к базе:" + БазаПуть + ", имя пользователя:" + БазаПользователь);
СтрокаПодключения = "/D"""+СокрЛП(БазаПуть)+""" /N"""+СокрЛП(БазаПользователь)+""" /P"""+СокрЛП(БазаПароль)+"""";
Открыта = База77.Initialize(База77.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
Если Открыта = 1 Тогда
Попытка
Если ПустаяСтрока(База77.Метаданные.Идентификатор) Тогда
Открыта = 0;
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки());
Открыта = 0;
КонецПопытки;
КонецЕсли;
Если Открыта = 0 ТОгда
Сообщить("Ошибка подключения к информационной базе 1С:Предприятие 7.7!",СтатусСообщения.Важное);
Сообщить(ОписаниеОшибки());
Иначе
База77Открыта = Истина;
Состояние("Подключение к информационной базе 1С:Предприятие 7.7 выполнено успешно.");
КонецЕсли;
Исключение
Сообщить("Ошибка подключения! Программа 1С:Предприятие 7.7 на данном компьютере не установлена!", СтатусСообщения.Важное);
КонецПопытки;
КонецЕсли;


Изменено 11.12.12 14:13:17

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
11.12.2012 14:43 Ответ № 1

Проверь пользователя и пароль, если все правильно, то не должно выводиться сообщение

ghostrid3r
11.12.2012 14:48 Ответ № 2

все правильно и пользователь и пароль, и почему открывается семерка вроде бы до обьявления пользователя и пароля вызывается новый сомобъект

ghostrid3r
11.12.2012 14:49 Ответ № 3

а когда открывается выбор пользователя и пароля то уже не срабатывает Initialize и база получается не открыта

ghostrid3r
11.12.2012 14:57 Ответ № 4

не понял конечно в чем причина: но при таком случае

База7 = Новый COMОбъект(«V77.Application»);
База77 = Новый COMОбъект(«V77.Application»);

в первом случае все отлично проходит, а во втором выбивает окно пользователя и пароля

ghostrid3r
11.12.2012 15:02 Ответ № 5

все равно беда

E_Migachev
11.12.2012 15:14 Ответ № 6

вот рабочий пример
Код 1C v 8.х

 // в v 8.1 подключаюсь к семерочной базе

База= Новый COMObject("v77.Application");

Открыта=База.Initialize(Опер.RMTrade," /d"+Путь+" /N" + СокрЛП(Пользователь)+ " /P" +СокрЛП(Пароль),"");

СпрСотр = База.CreateObject("Справочник.Сотрудники");
Если СпрСотр.Выбрать("Укажите откуда берем остатки:") = 0 Тогда

Предупреждение("Не указано место остатков!");
Возврат;

КонецЕсли;

ghostrid3r
11.12.2012 16:59 Ответ № 7

не работает этот пример, выдает всеравно Ложь, если после пароля поставить + вместо запятой то выдает ошибку при вызове метода контекста «Initialize»

E_Migachev
11.12.2012 17:14 Ответ № 8

(7) ghostrid3r, попробуй на базе без пользователей

ghostrid3r
11.12.2012 18:14 Ответ № 9

на базе без пользователь тоже Ложь.

ghostrid3r
11.12.2012 18:15 Ответ № 10

мне кажется строка инициализации нужна другая, только вот какая?

E_Migachev
11.12.2012 18:42 Ответ № 11

(10) ghostrid3r, строка должна быть как в примереКод 1C v 8.х

 БазаТам = Новый COMОбъект("V77.Application"); 
ПутьККаталогу = "D:DBTEST";
ПользовательОле = "Admin";
ПарольОле = "1004";
МонопольныйРежимOLE = "";
ЗапускБезЗаставки = 1;

Результат = БазаТам .Initialize ( БазаТам.RMTrade , "/d" + ПутьККаталогу + " /n" + ПользовательОле + " /p" + ПарольОле + МонопольныйРежимOLE ,?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));

еще можно попробовать V77S.Application

Слушай… а может у тебя висит повисший процесс соединения!? удали в диспетчере все процессы 7-ки

ghostrid3r
12.12.2012 17:49 Ответ № 12

теперь пишет что значение не являеться значением объектного типа RMTrade. Я просто не могу понять как оно до этого у людей работало, у меня с самого начало не стало подсоединятся

Подсказка: Для редактирования своего ответа щелкните по значку (справа)

Столкнулся с проблемой подключения к 7.7 из 8.3. Есть список баз к которым поочерёдно подключаюсь для получения данных. Часть из них выдаёт ошибку при вызове метода контекста Initialize, часть же подключается без проблем. Подключение происходит на сервере. При «ручной» авторизации проблем не возникает. Строка подключения:

ЗначениеЗаполнено нет в семерке     Ложь — тоже нет в семерке. что вы написали такое?

база не зарегена на сервере

подключение из снеговика в клюшки

Неверно указал секцию при создании темы. Вопрос по 8ке.

Как раз таки на сервере «руками» и захожу в 7ку. Запуск 7ки и служба сервера 8ки под одной доменной учётной записью.

Если база не зарегана, то вылезает окно с регистрацией и вроде висит до посинения.

Эти базы всегда не подключаются или только когда по очереди выполняешь подключение?

Думаю так бы было запусти я авторизацию на клиенте. Не подключаются и поочерёдно, и по отдельности.

Попробовал перенести авторизацию на клиент. Всё работает, но сбор данных должен работать как фоновое задание.

проверь, в точности ли путь к базе соответствует тому, как он зарегистрирован на сервере, до последнего слеша, надо чтоб было как в реестре (HKEY_CURRENT_USERSoftware1C1Cv77.7Titles)

+, и да, смотреть надо от пользователя, под которым крутится сервер приложения 8ки.

, Всё запускаю под одной и той же учётной записью. В путях была разница как раз в последнем слешэ, но его добавление результата не принесло.

а если вместо «/D» попробовать «enterprise /D» лучше не станет?

и может стоит заключать параметры в кавычки?

посмотри может кто-то еще в базе сидит

Базы не в монопольном режиме, запуская авторизацию через клиент без проблем в неё захожу.

Без изменений. Думаю дело не в строке подключения, с учётом того, что авторизация на клиенте работает.

попробуйте «v77s.Application»

Проверяй путь к базе видать кривой. может где руская буква вместо английской или наоборот

+» «+Польз+» «+Парол Пробелы между путем пользователем и паролем кто будет ставить

Все базы развёрнуты на SQL при этом только часть из них не авторизуется. Не помогло. , Пути верные. При запуске на клиенте авторизация успешна, на сервере — нет. То же и про строку авторизации, дело не в пробелах.

В итоге сделал костыль. Другая обработка выполняется в фоне и создаёт скрипт который запускает клиент 1с с обработкой опроса баз. Подскажите, может есть решение поизящнее?

Тэги: 1С 7.7 и ранее

Комментарии доступны только авторизированным пользователям

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста getcorporationrequisitesbyinn
  • Ошибка при вызове метода контекста add word
  • Ошибка при вызове метода контекста execute произошла исключительная ситуация
  • Ошибка при вызове метода контекста 1с транзакция
  • Ошибка при вызове метода контекста converttoshape