![]() |
![]() |
![]() |
|
Не проходит COM соединение с базой Timon1405, zenon46, denk32, craxx, Ботаник Гарден Меран, DiMel_77, Garykom, Vstur, PR, Ногаминебить, X Leshiy, pasha_d, scanduta, ReaLg, d_monah, LLeonidov, Daniilvb, arsik, viraboy, Гость из Мариуполя, ColonelAp4u, ALCAPONA, KJlag, Fish, WB789, piter3, Михаил Козлов, p-soft, Lama12, Saval1986, boozin, Волшебник, Prog_man, Климов Сергей, программистище, НачинающийВосьмерочн, zenik, obs191, Franchiser, abfm, DrZombi, СвинТуз, _Batoo, DimVad, Мультук, Trucker, ptiz, skafandr, Бычье сердце, phabeZ, Dzenn, Сергиус, Niveus, Табуретко, LuckyStar, evorle145, butterbean, Страждущий, H A D G E H O G s, Шурик71, timurhv, АгентБезопаснойНацио, KuznecovvIvan, Мимо Проходил, bobark, НаборДанных, Chai Nic, sansys, 2S, TormozIT, Chameleon1980, MM, ads55, takefive
| ☑ | ||
---|---|---|---|---|
0
zenon46
04.09.25
✎
09:50
|
Господа, не получается соединиться с базой 7.7 из-под Сервера 1С.
Вкратце - написал внешнюю обработку по получению нужных данных из базы 7.7 в базу на УФ, на файловом режиме все оттестировал - все работает как нужно и в ручном режим и в регламентном задании. Перенес все на серверную базу 8, ну и ест-но вот тут отвал Попытка V77 = Новый COMОбъект("V77.Application"); ЗаписьЖурналаРегистрации("Подключение к базе 7.7", УровеньЖурналаРегистрации.Информация,,,"Выполнено", РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная); Исключение ЗаписьЖурналаРегистрации("Подключение к базе 7.7", УровеньЖурналаРегистрации.Ошибка,,,"НЕ выполнено", РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная); Возврат; КонецПопытки; Сервер 1С предприятия по дефолту крутится под пользователем USR1CV8 - понимаю что для этого пользователя не создается COMОбъект("V77.Application"); Собственно в этом и вопрос как заставить? Думал на сервере тупо залогиниться интерактивно под пользователем USR1CV8 и запустить 7.7 для регистрации - а нет его в списке выбора для интерактивного входа. |
|||
1
Волшебник
04.09.25
✎
09:51
|
7.7 на сервере установлена?
|
|||
2
zenon46
04.09.25
✎
09:56
|
(1) скопирована и запущена под Администратором.
Собственно точно так же, как и на ПК, на котором я тестировал файловый вариант работы. |
|||
3
Волшебник
04.09.25
✎
09:56
|
(2) ну так может класс не зарегистрирован?
regsrv32 ...\bin\comcntr.dll и вдогонку ещё: V7plus.dll, v7chart.dll, zlibeng.dll |
|||
4
arsik
гуру
04.09.25
✎
09:58
|
(0) А погуглить не пробовали? Первая ссылка.
https://forum.infostart.ru/forum86/topic77413/ |
|||
5
arsik
гуру
04.09.25
✎
09:58
|
(3) Там в другом проблема. В (4) в топике все расписано
|
|||
6
zenon46
04.09.25
✎
10:07
|
(3) это все зарегистрировано
|
|||
7
Garykom
гуру
04.09.25
✎
10:21
|
хехе
в свое время намучавшись с этим наваял микросервис на Go который базу 1С 7.7 через OLE превращает в http-сервис с которой можно удобно работать по сети, тупо передавая кусок кода (на языке 1С77) для выполнения и получая результат т.е. из 1С 8 не надо никаких Новый COMОбъект, достаточно Новый HTTPСоединение |
|||
8
Garykom
гуру
04.09.25
✎
10:20
|
(7)+ исполняемый код передается в 1С 7.7 через обработку-шаблон с #ЗагрузитьИзФайла <ИмяФайла>
|
|||
9
zenon46
04.09.25
✎
10:23
|
(7) Ну хотелось бы "заставить" работать без таких вот выкрутасов.
Попробовал сейчас в файловом режим на этом же сервере, на котором стоит сервер 1С Пердприятия - запуститься и подключиться к 7.7 - все подключилось, запустилось и отработало как нужно. Вопрос может и дурацкий, но все же, а если агент сервера переключить с пользователя USR1CV8 - на запуск системной службой ? |
|||
10
arsik
гуру
04.09.25
✎
10:36
|
(7) (8) Мы знаем что ты извращенец, но не до такой же степени.
|
|||
11
Garykom
гуру
04.09.25
✎
10:33
|
(9) Учетку, от которой пашет сервер 1С. Надо авторизоваться-войти под ней в интерактивном режиме и от админа (с админскими правами) подключиться к 1С по OLE.
Далее будет и в неинтерактивном работать, но с глюками иногда. Если учетка неправильная — сделать правильную для сервера 1С, возможно, даже доменную, а не тупо локальную. |
|||
12
Garykom
гуру
04.09.25
✎
10:26
|
(10) зато удобно
там просто 1С 7.7 в виртуалке крутилась под древней виндой а 8-ка была понятно на другом под современной и как то совсем не хотелось шаманить с бубном |
|||
13
zenon46
04.09.25
✎
10:27
|
(11) учетка дефолтная созданная при установке сервера - я пытался сделать выход и вход, но система предлагает только Гостя и Администратора...
|
|||
14
Garykom
гуру
04.09.25
✎
10:30
|
(13) так и я про что
зайти в управление юзерами и для учетки USR1CV8 разрешить взаимодействие с рабочим столом и интерактивный вход |
|||
15
Garykom
гуру
04.09.25
✎
10:31
|
(14)+ не забыть пароль поставить для безопасности
|
|||
16
zenon46
04.09.25
✎
10:47
|
(14) я так понимаю, отсюда его надо убрать ?
А вот про "разрешить взаимодействие с рабочим столом" - не нашел Залогинился, пробую.
|
|||
17
Garykom
гуру
04.09.25
✎
10:51
|
(16) это я перепутал про взаимодействие, это когда по расписанию скрипт/прогу запускаешь, которая с ole работает
|
|||
18
zenon46
04.09.25
✎
10:59
|
(17) не помогло, к сожалению.
Что сделал : 1. Залогинился под USR1CV8 2. Запустил 7.7 от имени администратора - зашел в базу 3. Запустил 7.7 от имени под которым залогинился 4. Запустил 8 от имени администратора - зашел в базу попробовал обмен - не пошел 5. Запустил 8 от имени под которым залогинился - зашел в базу попробовал обмен - не пошел |
|||
19
p-soft
04.09.25
✎
11:02
|
(12) а я удаленное резервирование так делал: хттп сервис на дельфях лез в базу скл семерки, читал и писал туда данные.
|
|||
20
Garykom
гуру
04.09.25
✎
11:05
|
(19) слишком ограниченно
мне надо было что угодно и удобно с базой 1С 7.7 делать делать на самом языке 1С как раз удобно и похоже на COM/OLE вышло хотя отличие что вместо синхронно по одной команде разом кусок кода отправляется с данными и забираются данные-результат |
|||
21
Garykom
гуру
04.09.25
✎
11:07
|
(18) regsrv32 сделана для 77?
там же из одной 77 к другой 77 работает? |
|||
22
p-soft
04.09.25
✎
11:09
|
(20) задачи с обменом я решил другим способом - сделал свой урбд с хмл и версионированием. а тут надо было с баз филиалов резервы делать на товар ходовой, все секунды решали
|
|||
23
zenon46
04.09.25
✎
11:09
|
(21) а что регать то для 7.7 если я ее под админином запустил у USR1CV8 ?
там же из одной 77 к другой 77 работает? - не совсем понял ? |
|||
24
Garykom
гуру
04.09.25
✎
11:24
|
(22) согласен, у тебя четкая задачка
у меня же была задача поднять аналог http-сервиса в 1C 7.7 потом уже понял, что код обработки запросов можно не хранить в 7.7, а тупо передавать для выполнения |
|||
25
Garykom
гуру
04.09.25
✎
11:14
|
(23) >там же из одной 77 к другой 77 работает? - не совсем понял ?
V7 = СоздатьОбъект("V77.Application") из 77 внешнюю обработку накидай, причем можно к той же базе подключаться, в которой работаешь, или создай пустую |
|||
26
Garykom
гуру
04.09.25
✎
11:24
|
и да разницу
V77.Application 77S.Application и т.д. понимаешь? надо подключаться именно к тому компоненту, который используется |
|||
27
zenon46
04.09.25
✎
11:19
|
(25) сделал в 7.7 внешнюю обработку
Попытка V7 = СоздатьОбъект("V77.Application"); Сообщить("Подключились к 1С 7.7"); Исключение Сообщить("Не подключились к 7.7"); Возврат; КонецПопытки; И к V77s - тоже подключился Результат Подключились к 1С 7.7 |
|||
28
zenon46
04.09.25
✎
11:33
|
И даже вызвал ту функцию из глобальника, которая для 8-ки готовит данные..получается что из 7.7 в 7.7 работает
И да, все это делал под пользователем USR1CV8 |
|||
29
zenon46
04.09.25
✎
12:31
|
Попробовал в файловом варианте из 8-ки соединиться с 7.7 и получить данные - предварительно локально залогинившись на сервере под USR1CV8 - так же все сработало...куда копать не понятно.
|
|||
30
Сергиус
04.09.25
✎
14:27
|
(0)А сам текст ошибки какой?
|
|||
31
zenon46
04.09.25
✎
14:28
|
Дополняю, с COM объектом вроде как разобрался, хотя бы уже
COM объект создается : V77 = Новый COMОбъект("V77.Application"); Но появилась новая ошибка, падает вот на этой строке : V77.Initialize(V77.RMTrade,Стр,"NO_SPLASH_SHOW") |
|||
32
skafandr
04.09.25
✎
14:46
|
(31)
Проверьте строку подключения Стр Вот из рабочего V7=""; V7=Новый COMОбъект("V77.Application"); ПутьКБазе="\\Server\Baza7\"; Пользователь="hihi"; Пароль="haha"; Попытка СтрокаПодключения = "/d"+СокрЛП(ПутьКБазе)+" /N"+СокрЛП(Пользователь)+" /P"+СокрЛП(Пароль)+" """; СтрокаПодключения = СтрокаПодключения + ";"; ОткрытаСемь=V7.Initialize(V7.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW"); Если ОткрытаСемь Тогда ЕстьПодключение = Истина; Предупреждение("Подцепились!"); Иначе ЕстьПодключение = Ложь; КонецЕсли; Исключение ЕстьПодключение = Ложь; КонецПопытки; |
|||
33
zenon46
04.09.25
✎
14:47
|
(32) ну эта строка подключения работает в обычном файловом режиме без проблем.
|
|||
34
arsik
гуру
04.09.25
✎
15:10
|
(31) Тебя постоянно нужно за язык тянуть? Ошибка то какая?
|
|||
35
zenon46
04.09.25
✎
15:12
|
(34) Ошибка при вызове метода контекста (Initialize)
{ВнешняяОбработка.ЗагурзкаНоменклатурыИЗ77.Форма.Форма.Форма(268)}:Открыта = V77.Initialize(V77.RMTrade,Стр,"NO_SPLASH_SHOW"); {ВнешняяОбработка.ЗагурзкаНоменклатурыИЗ77.Форма.Форма.Форма(281)}:ПодключениеНаСервере(); [ОшибкаВоВремяВыполненияВстроенногоЯзыка] по причине: Неизвестная ошибка [ОшибкаИспользованияВстроенногоЯзыка] |
|||
36
Волшебник
04.09.25
✎
15:21
|
(35) это всё от небрежности: ЗагурзкаНоменклатурыИЗ77
|
|||
37
Garykom
гуру
04.09.25
✎
15:34
|
Может уже возьмешь мой изврат (7)?
Я даже откопал и на гитхаб закинул https://github.com/Garykom/http1C77 Используется вот так&НаСервере Функция ВыполнитьЗапрос(КодНаВыполнение, КолонкиРезультата) База = "\\Server1c77\Bases1C\BaseSQL\"; Пользователь = "Администратор"; Пароль = ""; Соединение = Новый HTTPСоединение("192.168.1.11",8090,,,,,); Заголовки = Новый Соответствие; Заголовки.Вставить("Base", СтрокаВBase64(База)); Заголовки.Вставить("User", СтрокаВBase64(Пользователь)); Заголовки.Вставить("Password", СтрокаВBase64(Пароль)); Запрос = Новый HTTPЗапрос("/eval", Заголовки); Запрос.УстановитьТелоИзСтроки(""+КодНаВыполнение, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); Ответ = Соединение.ОтправитьДляОбработки(Запрос); ТекстОтвета = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); Таблица = СтрокуВТаблицу(ТекстОтвета, КолонкиРезультата); Возврат Таблица; КонецФункции |
|||
38
zenon46
04.09.25
✎
15:39
|
Заметил что когда 1С выдает ошибку по V77.Initialize(V77.RMTrade,Стр,"NO_SPLASH_SHOW");
В системном журнале появляется ошибка. Имя сбойного приложения: 1cv7s.exe, версия: 7.70.0.27, метка времени: 0x4573fcd8 Имя сбойного модуля: Frame.dll, версия: 7.70.0.14, метка времени: 0x3e9e540a |
|||
39
Garykom
гуру
04.09.25
✎
15:42
|
(37)+ Фактически передается строка с кодом 1С 77
В ответ тоже получается строка текста с результатом Для удобства получения данных я строку результата парсю в таблицу, для передачи использовал формат wiki:TSV Туда в 1С 77 данные можно передавать прямо в коде, кодируя их как угодно Например так же строку и кодом же парсишь Выглядит со стороны 1С 8 примерно так&НаСервере Процедура ЗагрузитьКонтрагентыНаСервере() КодНаВыполнение = " | |лтзКонтрагенты = СоздатьОбъект(""ТаблицаЗначений""); |лтзКонтрагенты.НоваяКолонка(""Контрагент""); | |лдокПлатежка = СоздатьОбъект(""Документ.Платежка""); | |ДатаС = '01.01.2017'; |ДатаПо = РабочаяДата(); | |лдокПлатежка.ВыбратьДокументы(ДатаС, ДатаПо); |Пока лдокПлатежка.ПолучитьДокумент() = 1 Цикл | Если лдокПлатежка.Проведен()<>1 Тогда | Продолжить; | КонецЕсли; | лтзКонтрагенты.НоваяСтрока(); | лтзКонтрагенты.Контрагент = лдокПлатежка.Получатель; |КонецЦикла; | |лдокПриходная = СоздатьОбъект(""Документ.Приходная""); |лдокПриходная.ВыбратьДокументы(ДатаС, ДатаПо); |Пока лдокПриходная.ПолучитьДокумент() = 1 Цикл | Если лдокПриходная.Проведен()<>1 Тогда | Продолжить; | КонецЕсли; | лтзКонтрагенты.НоваяСтрока(); | лтзКонтрагенты.Контрагент = лдокПриходная.Поставщик; |КонецЦикла; | |лтзКонтрагенты.Свернуть(""Контрагент"",""""); | |КоличествоКонтрагентов = лтзКонтрагенты.КоличествоСтрок(); |лтзКонтрагенты.ВыбратьСтроки(); |Пока лтзКонтрагенты.ПолучитьСтроку() = 1 Цикл | Контрагент = лтзКонтрагенты.Контрагент; | Поле(Контрагент.ИНН); | Поле(Контрагент.КПП); | Поле(Контрагент.Наименование); | Поле(Контрагент.ЮрЛицо); | Поле(Контрагент.ОсновнойСчет); | Поле(Контрагент.Банк); | Поле(Контрагент.БИК); | Поле(Контрагент.КорСчет); | Поле(Контрагент.ЮрАдрес); | Поле(Контрагент.ФактАдрес); | Поле(Контрагент.Телефоны); | Поле(Контрагент.ДоговорНомер); | | ДоговорДата = Контрагент.ДоговорДата; | СтрокаГод = Формат(ДатаГод(ДоговорДата),""Ч(0)4""); | СтрокаМесяц = Формат(ДатаМесяц(ДоговорДата),""Ч(0)2""); | СтрокаЧисло = Формат(ДатаЧисло(ДоговорДата),""Ч(0)2""); | ДоговорДата = """"+СтрокаГод+""-""+СтрокаМесяц+""-""+СтрокаЧисло; | Поле(ДоговорДата); | | Ввод(); |КонецЦикла; | |"; Колонки = "ИНН,КПП,Наименование,ЮрЛицо,ОсновнойСчет,Банк,БИК,КорСчет,ЮрАдрес,ФактАдрес,Телефоны,ДоговорНомер,ДоговорДата"; Таблица = ВыполнитьЗапрос(КодНаВыполнение, Колонки); Для Каждого ТекСтр Из Таблица Цикл Сообщить("Загрузка "+ТекСтр.ИНН+" "+ТекСтр.Наименование+" "+ТекСтр.ДоговорДата); Элемент = СтруктураИзСтрокиТЗ(ТекСтр); ЗагрузитьКонтрагент(Элемент); КонецЦикла; КонецПроцедуры |
|||
40
Garykom
гуру
04.09.25
✎
15:45
|
(38) попробуй уже с S
V77 = Новый COMОбъект("V77S.Application"); |
|||
41
zenon46
04.09.25
✎
15:46
|
(40) уже пробовал )
|
|||
42
Garykom
гуру
04.09.25
✎
15:51
|
(41) Ну тогда хрен его знает почему у тебя из сервера 1С8 не хочет по OLE к 1С77
Вполне возможно проблемы (глюки) с платформой 1С8 Попробуй перезагрузить сервак )) |
|||
43
zenon46
04.09.25
✎
15:55
|
(42) только что перезапустил полностью сервер.
Пользователя USR1CV8 - включил в группу администраторы, все равно : Имя сбойного приложения: 1cv7s.exe, версия: 7.70.0.27, метка времени: 0x4573fcd8 Имя сбойного модуля: Frame.dll, версия: 7.70.0.14, метка времени: 0x3e9e540a |
|||
44
arsik
гуру
04.09.25
✎
16:05
|
(43) Ой ну переведи уже в клиентский контекст работу с ком соединением.
|
|||
45
Garykom
гуру
04.09.25
✎
16:10
|
(44) Есть подозрение что они хотят в регламентном/фоновом
|
|||
46
zenon46
04.09.25
✎
16:12
|
(45) именно так
|
|||
47
zenon46
04.09.25
✎
16:23
|
Так сказать уже начал методом различных проб :
попробовал вот так V77.Initialize(V77.RMTrade,"","NO_SPLASH_SHOW"); Без указания строки подключения, процесс 7.7 появляется, а вот окошка для выбора пользователя и указания пути к базе нет... А вот если такой же финт провернуть на файловой базе - окошко появляется... |
|||
48
arsik
гуру
04.09.25
✎
16:26
|
(47) Под USR1CV8 добавь в список баз 77 нужную базу.
|
|||
49
zenon46
04.09.25
✎
16:31
|
(48) я уже логинился интерактивно под USR1CV8 и прописал нужную базу и даже запускал
|
|||
50
Garykom
гуру
04.09.25
✎
16:37
|
(48) У него прикол что 7.7->7.7 пашет
А 8.3 (НаСервере)->7.7 нет |
|||
51
Garykom
гуру
04.09.25
✎
16:44
|
Чтобы исключить сервер винды, права и прочее
Попробуй коннектнуться из 1С8 &НаСервере к 1С77 через vbscript или powershell |
|||
52
zenon46
04.09.25
✎
16:47
|
(51) через vbscript или powershell - не умею (
|
|||
53
Garykom
гуру
04.09.25
✎
16:48
|
(51)+ https://infostart.ru/1c/tools/285771/
Set v77 = CreateObject("V77.Application") v77.Initialize v77.RMTrade, "/D""E:\1С77Тестовая\""", "NO_SPLASH_SHOW" v77.OpenForm "Report", "", "c:\Регламент\Регламент.ert" |
|||
54
zenon46
04.09.25
✎
16:58
|
Наткнулся на такую же проблему com объект V77.Application...похоже у проблемы нет решения, на одной системе работает на другой нет.
|
|||
55
Garykom
гуру
04.09.25
✎
17:01
|
(54) проверь уже через vbscript
если работает - проблема в серверной платформе 1С 8 |
|||
56
zenon46
04.09.25
✎
17:01
|
(55) честно говоря, я нифига не понял, как оно должно работать с vbs скриптами никогда не работал.
|
|||
57
Garykom
гуру
04.09.25
✎
17:05
|
(56) эмм создаешь файлик .vbs с текстом (53)
правишь как надо пути и прочее тупо запускаешь сначала вручную для проверки а затем из 1С |
|||
58
arsik
гуру
04.09.25
✎
17:05
|
Вот это читал?
https://forum.infostart.ru/forum86/topic77413/message827270/ |
|||
59
zenon46
04.09.25
✎
17:09
|
(57) значит правильно догадался, сделал запустил - пароль в VBS не вводил, ввел пароль - запустился процесс 1С, отработал и закрылся, самого окна предприятия не появлялось.
|
|||
60
Garykom
гуру
04.09.25
✎
17:10
|
(58) это очень плохой способ от системной учетной записи запускать сервер 1С
имхо должен быть аналогичный вариант "Разрешить взаимодействие с рабочим столом" и для конкретной учетки |
|||
61
zenon46
04.09.25
✎
17:10
|
(59) читал - делал - тоже самое
|
|||
62
zenon46
04.09.25
✎
17:21
|
(57) в 8-ке сделал - повисла
COMОбъект = Новый COMОбъект("WScript.Shell"); VBSFile = "D:\123.vbs"; COMОбъект.Run("wscript.exe """ + VBSFile + """", 1, Истина); Запустил это же самое но в файловой базе, запустилась 7.7, отработала и закрылась. |
|||
63
Garykom
гуру
04.09.25
✎
17:31
|
(62) походу проблема все же с настройками серверной винды
|
|||
64
zenon46
04.09.25
✎
17:32
|
(63) файловую базу запускал на том же сервере
|
|||
65
Garykom
гуру
04.09.25
✎
17:36
|
есть подозрение что придется держать активный сеанс (интерактивный RDP или в основном запускать) для работы OLE V77.Application
|
|||
66
zenon46
04.09.25
✎
17:38
|
(63) вообще не досмотрел, оказалось что после выполнения скрипта из клиент-серверной, процесс 7.7 появился, но окна авторизации нет..потому и 8-ка просто "висит" и ошибка
Имя сбойного модуля: Frame.dll, версия: 7.70.0.14, метка времени: 0x3e9e540a снова в логах |
|||
67
Garykom
гуру
04.09.25
✎
17:39
|
как насчет варианта обмена чтобы не 8-ка была клиентом а 7-ка?
запускать 77 тупо скриптом по расписанию и пусть к 8-ке коннектится |
|||
68
zenon46
04.09.25
✎
18:37
|
(67) наверное буду json-ами пуляться, в 7.7 уже есть куча роботов, то отправка на сайт, то на b2b площадку, то на маркетплейсы, прицеплюсь к какому-нибудь из них, и буду выпуливать файл, а в 8-ке регламентом проверять есть файл обрабатываем, нет файл ничего не делаем.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |