![]() |
|
Подключение к 1С 7.7 из SQL баз 1С 8 | ☑ | ||
---|---|---|---|---|
0
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", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки()); Иначе Возврат ОписаниеОшибки(); КонецЕсли; КонецЕсли; КонецПопытки; КонецФункции |
|||
1
Aleksey
21.07.20
✎
15:34
|
оле не очень
|
|||
2
alex-79
21.07.20
✎
15:36
|
(1) В 7-ке вроде бы только один интерфейс доступа
|
|||
3
Aleksey
21.07.20
✎
15:36
|
зачем тебе оле, 7-ка простая как 5 копеек, почему сразу со скуля данные не тащить?
|
|||
4
fisher
21.07.20
✎
15:36
|
Вероятно как всегда - серверные права/реестры.
|
|||
5
Garykom
гуру
21.07.20
✎
15:36
|
Я на go написал для 77 обертку (понятно через ole) чтобы из 1С 8 по http запросы "на коде 1С 77" выполнять и таблицы возвращать с данными.
|
|||
6
alex-79
21.07.20
✎
15:37
|
(3) Обработка уже написана и переписывать под прямое чтение данных SQL слишком долго
|
|||
7
Garykom
гуру
21.07.20
✎
15:38
|
(5)+ Суть что пишется обычный код как будто мы внутри 1С 77 и данные загоняются в "стандартную выходную таблицу".
Этот код в 1С 8 находится внутри строки как обычные ТекстЗапроса. Далее тупо делаем из 1С 8 вызов по http с передачей ТекстаКода и получаем таблицу результата. |
|||
8
Garykom
гуру
21.07.20
✎
15:39
|
(7)+ Очень удобно что выглядит как работа через COM но асинхронно как запросы а не в онлайне дергаем туда-сюда.
|
|||
9
alex-79
21.07.20
✎
15:47
|
(4) Реестр подправлен. Знать бы какие права назначить
|
|||
10
alex-79
21.07.20
✎
16:07
|
(8) Можно написать базу 1С, в которой будет только веб-сервис и подцепить к апачу к примеру. База торговли общается в веб-сервису файловой базы 1С8, а файловая база 1С8 подключается к 1С 7.7
Нашел такую статью https://expert.chistov.pro/public/422230/ Слишком много манипуляций. На боевом сервере особо не проэсперементируешь |
|||
11
Garykom
гуру
21.07.20
✎
16:14
|
(10) там слишком сложно у меня нечто похожее но намного проще
всего один .exe (скомпилированный из golang) запускается (с параметрами подключения к 1С 77) там где 1С 77 установлена и нормально работает (у меня в виртуалке на win 2003 server) и можно делать запросы по ip сервера из 8-ки |
|||
12
Kigo_Kigo
21.07.20
✎
16:24
|
а не из 64 -й битной вы туда ломитесь?
|
|||
13
alex-79
21.07.20
✎
16:27
|
(12) 32-х битная
|
|||
14
Garykom
гуру
21.07.20
✎
16:34
|
(13) а сервер или клиент?
|
|||
15
alex-79
21.07.20
✎
16:36
|
(14) Туплю. Клиент 32 разрядный, а сервер 64-х
|
|||
16
Kigo_Kigo
21.07.20
✎
16:37
|
(15) Начинаем плясать отсюда?
|
|||
17
Kigo_Kigo
21.07.20
✎
16:43
|
Не уверен, заюзать толстый клиент и попробовать подключится от туда с клиента
|
|||
18
alex-79
21.07.20
✎
17:10
|
(17) Попробовал. В SQL базе не ошибку выдает. Пробовала на сервере и на клиенте
|
|||
19
Карст
21.07.20
✎
17:40
|
(18) 1cv8.exe" /RunModeOrdinaryApplication ???? в ярлыке
|
|||
20
alex-79
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 Тема закрыта |
|||
21
Garykom
гуру
23.07.20
✎
08:55
|
(20) ыыы
Ты пришел в результате к тому же что у меня но у меня промежуточная база на голанге, стучится по ole к 77 а отдает по http |
|||
22
alex-79
23.07.20
✎
10:24
|
(21) Есть один момент, который я не учёл. 1С 7.7 может зависнуть процессе запуска по ole и будет висеть. Надо в процедуре модуля внешнего соединения killtask запускать, чтобы под пользователем USR1CV8 удалялись все процессы 1С 7.7
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |