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~2\1Cv77\BIN\1cv7.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~2\1Cv77\BIN\1cv7.exe). Хотя представление 8.2 в NT-ых осях может быть запрещено (конкретное место реестра не помню, и искать сейчас не буду). Лучше всего строку вызова отладить в значке. Т.е., делаем значок вызова конкретной базы с конкретным пользователем, конкретным пассом. Если все отлично запускается, перетаскиваем параметры в модуль в скобки Initialize (без начала C:\PROGRA~2\1Cv77\BIN\1cv7.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." В общем можно считать тему закрытой) | |
| Интернет-форум Краснодарского края и Краснодара |