|  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." В общем можно считать тему закрытой) |  | 
| Интернет-форум Краснодарского края и Краснодара |