|   |   | 
| 
 | Не проходит COM соединение с базой | ☑ | ||
|---|---|---|---|---|
| 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-ке регламентом проверять есть файл обрабатываем, нет файл ничего не делаем.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |