Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подключение к 1С 7.7 из SQL баз 1С 8

Подключение к 1С 7.7 из SQL баз 1С 8
Я
   alex-79
 
21.07.20 - 15:25
Здравствуйте!

Подключаюсь к базе 1С: Бухгалтерия 7.7 из базы 1С: Управление торговлей 11. Обе базы SQL-ные и появляется ошибка:

Ошибка при вызове конструктора (COMОбъект): -2147467262(0x80004002): No such interface supported

Если я подключаюсь из файловой базы Управление торговлей, то соединение с базой 1С: Бухгалтерия 7.7 проходит успешно.

В реестре регистрировал OLE объект для 1С 7.7

Ссылка на reg-файл https://transfiles.ru/0geow


Сама процедура подключения

Функция ПолучитьСоединение_1С_77(ПроверкаПодключения = Истина, Авто = Ложь) Экспорт
    Попытка
        ПутьКБазе    = Путь_1С_77;
        Пользователь = Логин_1С_77;
        Пароль       = Пароль_1С_77;
        
        База77 = Новый COMОбъект("V77S.Application");
        СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазе) + """ /N"""+СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль)+"""";        
        РезультатПодключения = База77.Initialize(База77.RMTrade,СтрокаПодключения, "NO_SPLASH_SHOW");
        
        Если ПроверкаПодключения Тогда
            Возврат "Соединение прошло успешно";
        Иначе
            Возврат База77;
        КонецЕсли;            
    Исключение
        Если ПроверкаПодключения Тогда
            Возврат ОписаниеОшибки();
        Иначе            
            Если Авто Тогда
                ЗаписьЖурналаРегистрации("Обмен с базой 1С Предприятие 7.7", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
            Иначе
                Возврат ОписаниеОшибки();
            КонецЕсли;
        КонецЕсли;
    КонецПопытки;      
КонецФункции
   Aleksey
 
1 - 21.07.20 - 15:34
оле не очень
   alex-79
 
2 - 21.07.20 - 15:36
(1) В 7-ке вроде бы только один интерфейс доступа
   Aleksey
 
3 - 21.07.20 - 15:36
зачем тебе оле, 7-ка простая как 5 копеек, почему сразу со скуля данные не тащить?
   fisher
 
4 - 21.07.20 - 15:36
Вероятно как всегда - серверные права/реестры.
   Garykom
 
5 - 21.07.20 - 15:36
Я на go написал для 77 обертку (понятно через ole) чтобы из 1С 8 по http запросы "на коде 1С 77" выполнять и таблицы возвращать с данными.
   alex-79
 
6 - 21.07.20 - 15:37
(3) Обработка уже написана и переписывать под прямое чтение данных SQL слишком долго
   Garykom
 
7 - 21.07.20 - 15:38
(5)+ Суть что пишется обычный код как будто мы внутри 1С 77 и данные загоняются в "стандартную выходную таблицу".
Этот код в 1С 8 находится внутри строки как обычные ТекстЗапроса.

Далее тупо делаем из 1С 8 вызов по http с передачей ТекстаКода и получаем таблицу результата.
   Garykom
 
8 - 21.07.20 - 15:39
(7)+ Очень удобно что выглядит как работа через COM но асинхронно как запросы а не в онлайне дергаем туда-сюда.
   alex-79
 
9 - 21.07.20 - 15:47
(4) Реестр подправлен. Знать бы какие права назначить
   alex-79
 
10 - 21.07.20 - 16:07
(8) Можно написать базу 1С, в которой будет только веб-сервис и подцепить к апачу к примеру. База торговли общается в веб-сервису файловой базы 1С8, а файловая база 1С8 подключается к 1С 7.7


Нашел такую статью https://expert.chistov.pro/public/422230/
Слишком много манипуляций. На боевом сервере особо не проэсперементируешь
   Garykom
 
11 - 21.07.20 - 16:14
(10) там слишком сложно у меня нечто похожее но намного проще

всего один .exe (скомпилированный из golang) запускается (с параметрами подключения к 1С 77) там где 1С 77 установлена и нормально работает (у меня в виртуалке на win 2003 server)
и можно делать запросы по ip сервера из 8-ки
   Kigo_Kigo
 
12 - 21.07.20 - 16:24
а не из 64 -й битной вы туда ломитесь?
   alex-79
 
13 - 21.07.20 - 16:27
(12) 32-х битная
   Garykom
 
14 - 21.07.20 - 16:34
(13) а сервер или клиент?
   alex-79
 
15 - 21.07.20 - 16:36
(14) Туплю. Клиент 32 разрядный, а сервер 64-х
   Kigo_Kigo
 
16 - 21.07.20 - 16:37
(15) Начинаем плясать отсюда?
   Kigo_Kigo
 
17 - 21.07.20 - 16:43
Не уверен, заюзать толстый клиент и попробовать подключится от туда с клиента
   alex-79
 
18 - 21.07.20 - 17:10
(17) Попробовал. В SQL базе не ошибку выдает. Пробовала на сервере и на клиенте
   Карст
 
19 - 21.07.20 - 17:40
(18) 1cv8.exe" /RunModeOrdinaryApplication   ???? в ярлыке
   alex-79
 
20 - 22.07.20 - 23:38
Я сделал промежуточную файловую базу 1С8 между базами Управление торговлей и 1С:7.7.

Из базы Управление торговлей подключаюсь к промежуточной базе и промежуточная база создает COM-объект и подключается к базе 1С: 7.7.

В модуле внешнего соединения промежуточной базы я вызываю экспортную процедуру
    ЗапуститьПриложение("REGEDIT /S E:\1\1c77_bases.reg");// запускать достаточно одно раза

    
    ПутьКБазе    = СтруктураПараметров.Путь;
    Пользователь = СтруктураПараметров.Логин;
    Пароль       = СтруктураПараметров.Пароль;
    
    База77 = Новый COMОбъект("V77S.Application");
        СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазе) + """ /N"""+СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль)+"""";        
    РезультатПодключения = База77.Initialize(База77.RMTrade,СтрокаПодключения, "NO_SPLASH_SHOW");
 

В файле 1c77_bases.reg ветка реестра со список баз 1С 7.7, чтобы она прописалась под пользователем службы сервера 1С Предприятия.
Ещё надо каталогу базы 1С 7.7 дать полные права для пользователя 1С Предприятия. По умолчанию пользователь USR1CV8

Тема закрыта
   Garykom
 
21 - 23.07.20 - 08:55
(20) ыыы

Ты пришел в результате к тому же что у меня но у меня промежуточная база на голанге, стучится по ole к 77 а отдает по http
   alex-79
 
22 - 23.07.20 - 10:24
(21) Есть один момент, который я не учёл. 1С 7.7 может зависнуть процессе запуска по ole и будет висеть. Надо в процедуре модуля внешнего соединения killtask запускать, чтобы под пользователем USR1CV8 удалялись все процессы 1С 7.7


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.