COM соединение 8.3 к 7.7

1. kceon 25.03.21 12:54 Сейчас в теме
Добрый день, возникла необходимость подключаться к 7ке 7.70.027 из обработки 8ки 1С:Предприятие 8.3 (8.3.18.1289)
и там и там переписанная торговля, но, полагаю, это к делу относится опосредованно, 8ка крутится на MS SQL Server 2017.
Все действия происходят в системе Windows Server 2012 R2 Standard
7ка прописана как сетевая, я понимаю это как файловая, 7ка копия, кроме этой обработки туда никто не стучится, естественно все открывается, все работает, если тыркаем её как пользователь.
Но когда пытаюсь подключиться программно:

База77 = Новый COMОбъект("V77.Application"); // Этот фрагмент отрабатывает, все ок

База77.Initialize(База77.RMTrade,"","NO_SPLASH_SHOW"); //Ошибка здесь

Управление переходит на 7ку, и в диспетчере появляется фоновый процесс 1C:V7 starter program (multi-user) и больше ничего не происходит, а 8 ка зависает на много времени, потом вывалится с неинформативной ошибкой подключения

То же самое, под тем же пользователем в той же базе, но файловой(я про 8ку), все отрабатывает нормально, выскакивает окошко выбора базы, выбираешь, заходишь и проходит подключение, все ок

Пробовал менять на:

База77.Initialize(База77.RMTrade, "/d" + ПутьКБазе77 + " /n" + Пользователь77 + " /p" + Пароль,"");//,"NO_SPLASH_SHOW");

Прописывая все переменные, но та же фигня
По теме из базы знаний
Найденные решения
8. morin 59 25.03.21 13:21 Сейчас в теме
(7) Ну, чтоб работало "на сервере" нужно в профиле учетной записи сервера 1с8 в реестре прописать базу.
Если не найдете как - напишите в ЛС, я попозже отвечу.
Иваныч; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AndKovalchuk 195 25.03.21 13:02 Сейчас в теме
Я попробовал так
База77 = Новый COMОбъект("V77s.Application");
5. kceon 25.03.21 13:11 Сейчас в теме
(2)пробовал, тогда на этой строке все и валится: интерфейс не поддерживается

com объекто то создается, База77 = Новый COMОбъект("V77.Application"); с этим все ок
3. DenisCh 25.03.21 13:03 Сейчас в теме
Пользователь-пароль русские буквы содержит?
Путь к базе русские буквы и пробелы содержит?
4. kceon 25.03.21 13:10 Сейчас в теме
(3) пароля нет, пользователь английский
в пути есть русские символы, НО
База77.Initialize(База77.RMTrade,"","NO_SPLASH_SHOW"); //Ошибка здесь

здесь вообще нету указания базы, просто выбор баз должен открыться
6. morin 59 25.03.21 13:16 Сейчас в теме
Сделайте тоже самое в клиентском контексте.
7. kceon 25.03.21 13:19 Сейчас в теме
(6)Да, оно будет работать, Но, весь функционал обработки работает через сервер не ради удобства), просто обрабатывать всю кипу инфы на клиенте обрабатывать очень долго, такой вариант не оптимальный
ну и конечно переписывать 4к строк обработки не очень хочется)
8. morin 59 25.03.21 13:21 Сейчас в теме
(7) Ну, чтоб работало "на сервере" нужно в профиле учетной записи сервера 1с8 в реестре прописать базу.
Если не найдете как - напишите в ЛС, я попозже отвечу.
Иваныч; +1 Ответить
10. kceon 25.03.21 13:38 Сейчас в теме
(8)не совсем ещё сладил с инфостартом, не получается отправить личное сообщение,
но нужны подробности
16. SlavaKron 26.03.21 11:30 Сейчас в теме
(7)
Но, весь функционал обработки работает через сервер не ради удобства), просто обрабатывать всю кипу инфы на клиенте обрабатывать очень долго
А зачем обрабатывать? Получаете на клиенте все необходимые данные (там же все поля примитивного типа будут) и отправляете на сервер. Далее обрабатываете их на сервере так, как если бы вы их получили на сервере, то есть серверный код менять не требуется.
9. DenisVol 2 25.03.21 13:36 Сейчас в теме
Процедура Иниц77(Проверить = Ложь)
	Сообщить("Запускаем 1С 7.7",СтатусСообщения.Информация);
	Попытка
		V77 = Новый COMОбъект("V77.Application");
	Исключение
		ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки());
		Возврат;
	КонецПопытки;
	Сообщить("1С 7.7 успешно запущена, соединяемся с базой",СтатусСообщения.Информация);
	Каталог = СокрЛП(ПутьКИсточнику) + "\";
	Стр	= """" + Каталог77 + """" + "enterprise /d""" + Каталог     + """"
	+ ?(Не ЗначениеЗаполнено(Логин) = 0, " /n", "")  + """" + СокрЛП(Логин)  + """"
	+ ?(Не ЗначениеЗаполнено(Пароль) = 0, " /p", "") + """" + СокрЛП(Пароль) + """";
	Открыта = V77.Initialize(V77.RMTrade,Стр,"NO_SPLASH_SHOW");
	Если Открыта = 0 Тогда
		ОбщегоНазначения.СообщитьОбОшибке("Базу данных открыть не удалось!" + Символы.ПС +
		"- Проверьте параметры подключения." + Символы.ПС +
		"- Проверьте открывается ли база 1С 7.7 (возможно требуется восстановление индексных файлов, либо она уже открыта монопольно).");
		РазорватьСоединение();
		Возврат;
	КонецЕсли;
	Сообщить("Соединение с базой прошло успешно",СтатусСообщения.Информация);
КонецПроцедуры

Показать
11. kceon 25.03.21 13:38 Сейчас в теме
(9)у меня тоже самое написано
12. DenisCh 25.03.21 13:40 Сейчас в теме
Нужно залогиниться на сервер под пользователем, которым запускается сервер 1с.
И запустить 77. Оно само всё пропишет

И да. Если всё это делается в серверном модуле, то кому оно там будет показывать окно выбора базы? О_о
13. kceon 25.03.21 13:42 Сейчас в теме
(12)да сделано это все,
хрен с ним с окном, подключения с прописанными параметрами базы тоже не происходит
и да, убрана кириллица отовсюду
14. CheBurator 3126 25.03.21 22:59 Сейчас в теме
самое первое - подключиться сначала пожд этим пользователем явно интерактивно. убрать все настройки инфоокон. а то может подключились а там окно мастера висит.. ждет...
dvk09; jmw; +2 Ответить
15. dvk09 2 26.03.21 11:03 Сейчас в теме
Вообще, нужно, что бы в списке баз 7.7 эта база присутствовала для пользователя windows, под которым запускается сервер 1С 8.

Для анализа поведения запустите 7.7 под любым пользователем windows, удалите базу 1С из списка баз.
Потом запустите 1С 8 под этим же пользователем и попробуйте запустить COM-соединение не с сервера а с клиента.
Вы увидите что происходит при отсутствии базы 7.7 в списке.

(будет висеть окно добавления новой базы в список баз, и пока не нажмете ОК - ничего дальше не произойдёт, а если база будет в списке, то Ваш код отработает без проблем).

При этом, бывают ситуации, что данные о списке баз куда-то пропадают)))
Для решения этой проблемы я использовал батник, который заносил список баз в реестр, и только после этого запускал 1С.

И ещё:
Я удалял файлы 1cv7Cnfg.tip и 1cv7Main.tip из каталога bin 1С 7.7, что-бы исключить отображение "Советов дня", которые так же могут модально висеть и не давать работать, но это для запуска обработок в 7.7 через Планировщик Windows, тут наверно не должно мешать...
17. kceon 26.03.21 11:50 Сейчас в теме
morin помог, объяснил как базу прописать в реестре, теперь подключение проходит, все ок, Но) дальше следует ошибка создания объекта... и опять тупик, то есть

База77 = Новый COMОбъект("V77.Application"); // Этот фрагмент отрабатывает, все ок

База77.Initialize(База77.RMTrade,"","NO_SPLASH_SHOW"); //Здесь теперь тоже все отрабатывает

Фирма77 = База77.CreateObject("Справочник.Фирмы"); // А вот здесь теперь выскакивает ошибка "Неудачная попытка создания объекта"


в 7ке такой справочник есть, если что)
18. SlavaKron 26.03.21 11:57 Сейчас в теме
(17)
База77.Initialize(База77.RMTrade,"","NO_SPLASH_SHOW"); //Здесь теперь тоже все отрабатывает

Фирма77 = База77.CreateObject("Справочник.Фирмы"); // А вот здесь теперь выскакивает ошибка "Неудачная попытка создания объекта"

Если эти строчки и в коде идут так, то в этом нет никакого смысла – аутентификация не выполнена, база не выбрана. Ну и результат База77.Initialize смотрите.
19. kceon 26.03.21 12:33 Сейчас в теме
(18)Прошу прощения, не то написал

База77.Initialize(База77.RMTrade, "/d" + ПутьКБазе77 + " /n" + Пользователь77 + " /p" + Пароль,"NO_SPLASH_SHOW");
20. kceon 30.03.21 15:20 Сейчас в теме
Последняя проблема была связана с тем, что у пользователя под которым запускается сервер 1с не хватало прав на запуск 7ки)
21. Z_Z 09.04.24 09:18 Сейчас в теме
Так в принципе возможно подключаться к 1с7 (скл) из 1с8 в фоновом режиме или нет? На каком-то форуме читал, что это в принципе не возможно. У меня проблемы с подключением к 1с7 скл в фоновом режиме. К 1с7 фаловой из 1с8 в фоном режиме подключается без проблем. При попытке инициализировать 7.7 выдает ошибку: Ошибка при вызове метода контекста (Initialize): Неизвестная ошибка. База 7.7 на SQL 2008 R2
22. Xershi 1505 09.04.24 12:44 Сейчас в теме
(21) прошло 9 лет, а вопрос еще актуальный=))
Подключение OLE в регламентном задании на 64-битном сервере
Переименную тему, наверное не гуглится?
Подключение OLE в регламентном задании на 64-битном сервере или подключение 1С 8 к 1С 7.7.
Думаю так больше шансов будет!
23. Z_Z 09.04.24 17:34 Сейчас в теме
Как оказалось, тема актуальна)) спасибо за ссылку. Попробую и отпишусь.
24. Z_Z 11.04.24 15:54 Сейчас в теме
это у нас не появилось:
А также как минимум DCOM (нужно проверить, за давностью установки, не уверен в надобности).
Пуск - Выполнить - DCOMCNFG.
Там разворачиваем "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Настройка DCOM":
V77.GeneralPropPage
Если их нет, значит у вас что-то с доступом. Настраиваем и начинаем заново установку.
И заработало только при запуске службы "Агент сервера 1С:Предприятия 8.Х (x86-64)" с системной учеткой и только при влюченой галке "Разрешить взаимодествие с рабочим столом"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот