Последние изменения: 2022-02-10
Ошибка:
При проверке соединения из промежуточной базы возникает ошибка:
Ошибки в ПРОФ драйвере, название конфигурации =
"РозницаМагазинОдеждыИОбуви", редакция= "2.0.7.6", версия драйвера =
"2.6.7.14":
Дата =17.01.2014 19:59:13, ФункцияИсточник =
ИнициализироватьStorageConnector, Комментарий =#Ошибка выполнения
операции - #Ошибка при создании компоненты Cleverence.Warehouse.StorageConnector:
"ОбщийМодуль.УниверсальныеМеханизмы(2057)": Ошибка при вызове метода
контекста (InitializeServerConnection): Произошла исключительная
ситуация (System.Web.Services): The underlying connection was closed: An unexpected error occurred on a receive. (1С: версия приложения =
"8.2.18.109", название конфигурации = "РозницаМагазинОдеждыИОбуви",
редакция= "2.0.7.6", версия драйвера = "2.6.7.14")
При этом название конфигурации 1С в тексте ошибки не соответствует действительности.
В логе на сервере присутствует следующее сообщение:
MESSAGE: Удаленный хост принудительно разорвал существующее подключение
Желательно что бы промежуточная находилась на том же ПК что и база 1С. У вас постоянно данная ошибка. Скорее всего дело в брандмауэре, антивирусе или файрволл. Проверьте доступность порта сервера 9500. Так же проверьте запущена ли служба сервера. Есть ли соединение в панели управления — внешние вызовы.
Так же — Запустите cmd.exe от администратора и не важно если Вы админ на пк, запуск именно правой кнопкой мыши! — запуск от имени …
перейти в папку C:\Program Files\Cleverence Soft\Driver1C WiFi Prof\Control Panel
запустить «Зарегистрировать COM.bat»
После этого службу драйвера опять перезапустите.
Решение:
- Желательно, чтобы промежуточная база драйвера ПРОФ находилась на том же ПК, что и ваша прикладная база 1С.
- Проверьте доступность порта сервера 9500. Также проверьте, запущена ли служба сервера 1C driver server PROF.
-
Запустите cmd.exe от администратора, перейдите в папку «C:\Program Files\Cleverence Soft\Driver1C WiFi Prof\Control Panel» и запустите файл «Зарегистрировать COM.bat».
После этого опять перезапустите службу 1C driver server PROF.
Просмотр полной версии : Проблема с созданием экземпляра com-объекта на сервере
Добрый день,
AX2009 интегрирую с внешней системой.
Внешняя система предоставляет com-объект для манипуляций с ней,
в AX2009 запилил класс для запуска в пакетном режиме, который будет периодически обменивается данными с внешней системой посредством использования экземпляра данного com-объекта.
Для начала сделал по-старинке:
класс клиентский, пакетный сервер запускается в отдельной клиентской сессии.
Все работает.
Можно переводить и на серверный вариант, чтобы не париться с клиентской сессией.
Поставил RunOn = Server.
Метод new подпилил так:
void new()
{
InteropPermission p;
;
super();
p = new InteropPermission(InteropKind::ComInterop);
p.assert();
storageConnector = new COM(«Cleverence.Warehouse.StorageConnector»);
// storageConnector = new COM(«CDO.Message»); // для проверки создаются ли другие объекты
CodeAccessPermission::revertAssert();
}
Пробую. Получаю:
COM-объект класса «Cleverence.Warehouse.StorageConnector» не удалось создать. Убедитесь, что объект был должным образом зарегистрирован на компьютере «AOS-DEV-01V».
Убедился.
На указанном AOS установлен также и клиент. Открываю его.
Ставлю у класса RunOn = Client — запускается.
Ставлю у класса RunOn = Server — указанная выше ошибка.
Под доменным админом то же самое.
Другие объекты типа CDO.Message или ADODB.Recordset создаются нормально при любом значении RunOn.
Если кто в состоянии, подскажите, пожалуйста, в каком направлении копать.
Нужно искать 64-битный вариант COM-объекта «Cleverence.Warehouse.StorageConnector».
Либо АОС делать 32-битным.
Либо париться с клиентской сессией
Здесь прописано как запустить СОМ коннектор 1с8х в режиме 32 бит на 64-битовом сервере.
http://gilev.ru/1c/hasp/
в ссылке есть пункт
15. Для COM-соединений к 64х битному серверу приложений использование возможно только на том компьютере, на котором установлен ключ 64-разрядного сервера 1С:Предприятия (и не из терминальной сессии).
Для использования V81.COMConnector на компьютерах, которым доступны только клиентские ключи, можно зарегистрировать 32-разрядный V81.COMConnector в COM+.
— запустите Component Services;
— создайте пустое COM+ приложение с Activation type — Server application и именем, например, V81_COMConnector, укажите имя пользователя Windows, от имени которого компонента будет запускаться в адресном пространстве отдельного процесса dllhost.exe;
— в ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.
В этом случае V81.COMConnector будет запускаться в отдельном 32-разрядном процессе и может использоваться как 32-разрядными, так и 64-разрядными приложениями.
Данная рекомендация была использована как для СОМ коннектора 1с (не было ключей 64-бит), так и еще для одной компоненты СОМ сторонней фирмы, под которую не было 64- битовой dll.
Пакеты ax2009 АОС 64-бит Window server 2008 sp2 работают с этими СОМ компонентами, проблем не было.
Всем привет.
Обновил версию 1с до 8.2., теперь интеграция с АХ 2009 SP1 накрылась медным тазом. Добавил новое приложение com+ (как в сообщении выше), загрузил компоненту из папки с установленным 1с8.2. Импорт поставщиков из 1С в АХ 2009 не работает: «COM-объект класса «V81.COMConnector» не удалось создать. Убедитесь, что объект был должным образом зарегистрирован на компьютере «AX-DEMO».» Зачем-то АХ 2009 упорно сигнализирует о том, что используется объект V81* которого уже впомине нет. В макросе используется следующее. Перепробывал все варианты.
//define.COMConnectorProgId(«V81.COMConnector») // исходник
//define.COMConnectorProgId(«V82.COMConnector») // второе чтение
define.COMConnectorProgId(«82.COMConnector.1») // по принципу названия компоненты в component services
В методе поиска/создания ком объекта, если последний не нашелся, указано:
comConnector = new COM( #COMConnectorProgId);//V81.COMConnector
Сервер перезагружал. АОС тоже. Поможите кто чем богат на знания.
Попробуйте для начала не использовать макрос, а явно указать строку «V82.COMConnector»
Всем привет!
Помогите пожалуйста решить подобную проблему. Создал на сервере (Windows Server 2008 R2 Standard SP1, 64bit) приложение COM+, как описано выше (от имени Network Service). Объект создается, но на методе Connect все намертво виснет (DAX 4.0):
c1COMObj = new COM(«V82.COMConnector»);
connection = c1COMObj.Connect(«Srvr=\»» + c1Params.DBCluster + «\»;Ref=\»» + c1Params.DBClusterName + «\»;Usr=\»» + c1Params.User1C + «\»;Pwd=\»» + c1Params.User1CPassword + «\»;»);
При этом для «V82.Application» все работает.
comcntr.dll нашел 2 штуки — в Program Files и в Program Files (x86). Пробовал подставлять обе, результат один. В чем может быть дело?
Основные моменты при создании приложений COM+:
1. Когда создаете приложение COM+, указывайте, что это серверное приложение;
2. Далее в мастере создания в окне «Удостоверение приложения» необходимо указать пользователя и пароль от имени которого стартует АОС;
3. Далее в мастере создания в окне «Добавление пользователей и ролей» также необходимо добавить пользователя от имени которого стартует АОС;
4. При создании конкретного компонента внутри приложения COM+ выбирайте библиотеку comcntr.dll из папки «Program Files (x86)».
Нижеприведенный код должен отрабатывать без проблем:
new InteropPermission(InteropKind::ComInterop).assert();
COMconnector = new COM(this.getCOMConnectorProg());
CodeAccessPermission::revertAssert();
где функция getCOMConnectorProg() имеет вид:
private str getCOMConnectorProg()
{
str getCOMConnectorProg;
;
switch(Version)
{
case ::V80 :
getCOMConnectorProg = #V80_COMConnector;
break;
case ::V81 :
getCOMConnectorProg = #V81_COMConnector;
break;
case ::V82 :
getCOMConnectorProg = #V82_COMConnector;
break;
default :
throw error(strFmt(«Для версии %1 не реализовано»,Version));
}
return getCOMConnectorProg;
}
макросы:
#define.V80_COMConnector(‘V8.COMConnector’)
#define.V81_COMConnector(‘V81.COMConnector’)
#define.V82_COMConnector(‘V82.COMConnector’)
Огромное спасибо! Заработало. Похоже ключевым был пользователь, от имени которого запускается АОС.
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например:
result = connection.axSyncClient(«Test»);
вылетает ошибка, в данном случае: «Метод «axSyncClient» в COM-объекте класса «<неизвестно>» возвратил код ошибки 0x80020009 (DISP_E_EXCEPTION), который означает: {ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)}: Процедура или функция с указанным именем не определена (ВвестиЗначение).»
Такая функция в 1С точно есть, для «V82.Application» это работает. Подскажите пожалуйста, в чем может быть дело?
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например:
result = connection.axSyncClient(«Test»);
вылетает ошибка, в данном случае: «Метод «axSyncClient» в COM-объекте класса «<неизвестно>» возвратил код ошибки 0x80020009 (DISP_E_EXCEPTION), который означает: {ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)}: Процедура или функция с указанным именем не определена (ВвестиЗначение).»
Такая функция в 1С точно есть, для «V82.Application» это работает. Подскажите пожалуйста, в чем может быть дело?
Не путайте COM и OLE.
В данном случае «V82.Application» — это OLE.
А функция «ВвестиЗначение» — функция клиентского исполнения, которая представляет собой показ диалога для ввода значение переданного типа и требует работы с интерфейсной составляющей платформы 1С. Через COM-объект («V82.COMConnector») она работать не будет.
Но там и не должно быть никакого диалога. Функция должна отработать без взаимодействия с пользователем и вернуть результат в виде текстовой строки. Может быть для работы через COMConnector функции в 1С должны быть написаны с учетом некоторых ограничений?
Функция «ВвестиЗначение» — это функция глобального контекста, т.е. функция ядра платформы 1С.
Вот ее описание из встроенной справки:
Вызывает диалог для ввода значения заданного типа. Если тип переменной не определен и <Тип> представляет собой составной тип данных, то в поле ввода появляется кнопка выбора типа.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Обратите внимание на раздел «Доступность», среди перечисленного нет «Внешнее соединение», что требуется для работы с процедурами/функциями через COM-соединение.
Касательно вашего случая, возможно, что по бизнес логике функция «ВвестиЗначение» и не вызывается, может быть она даже используется в другой процедуре/функции общего модуля, не в той, которую вы пытаетесь вызвать через COM. Но при подключении через COM и вызове чего-либо из общего модуля, платформа проверяет этот модуль в режиме Внешнего соединения, для которого вызов этой функции недопустим, поэтому у вас и появляется указанная ошибка.
Найдите вот это место «ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)» и логику работы функции ВвестиЗначение обрамите в директивы препроцессора:
#Если Клиент Тогда
#КонецЕсли
Я думаю, что проблема у вас пропадет, ну или наткнетесь на другое место неверного вызова функций контекста, не предназначенных для Внешнего соединения.
Спасибо большое! Получилось.
FYI
_________
COM-объект класса «V83.COMConnector.1» не удалось создать
Возможно после обновления 1С получили ошибку при запуске класса, выгружающего данные в 1С в пакетном режиме и запускающего функцию 1С посредством COM LoadData (возможно просто совпало), т.к. до этого момента выгрузка запускалась только вручную.
Вручную класс отрабатывал без ошибки.
Регистрация comcntr.dll в режиме 32 и 64 бит на 64-битовом сервере не помогла.
Помогло добавление пользователей aos-ов — пакетных серверов в роли компоненты приложения COM+
Работает на vBulletin® версия 3.8.5. Copyright ©2000-2023, Jelsoft Enterprises Ltd. Перевод: zCarot
В настоящее время многие организации работают с программами 1С:Предприятие, которые включают в себя клиент-серверную архитектуру. Однако при использовании 64-битных версий операционных систем может возникнуть проблема с неизвестным типом подключения, а именно: «Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence».
Данная проблема возникает, когда установленная версия 1С:Предприятие требует установки дополнительного компонента — коннектора, который обеспечивает работу 64-битных процессов. Чтобы решить данную проблему, необходимо зарегистрировать указанный коннектор в операционной системе.
Для регистрации коннектора необходимо открыть командную строку с правами администратора и выполнить несколько команд. Сначала необходимо перейти в каталог, где расположен данный коннектор. Затем следует выполнить команду «regsvr32 XXX.dll», где XXX — название файла коннектора. После успешного выполнения команды, коннектор будет зарегистрирован в системе и проблема будет решена.
Содержание
- Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence
- Решение проблемы
- Шаг 1: Проверьте версию OC и приложения
- Шаг 2: Установите необходимые компоненты
- Шаг 3: Проверьте целостность файлов
- Шаг 4: Запустите установку от имени администратора
- Шаг 5: Обратитесь в службу поддержки
Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence
Если вы столкнулись с проблемой «Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence», то в данной статье вы найдете решение этой проблемы. Эта ошибка возникает, когда при попытке запустить приложение Cleverence 1С-сервера, оно не может найти зарегистрированный коннектор для 64-битных процессов.
Для решения этой проблемы вам понадобится выполнить следующие шаги:
- Убедитесь, что у вас установлена версия 1C:Enterprise 8.3 с поддержкой 64-битных процессов.
- Установите последнюю версию Cleverence 1С-сервера.
- Проверьте наличие необходимых файлов коннектора в каталоге установки Cleverence 1С-сервера. Если коннектор отсутствует, то скорее всего он не был установлен корректно.
- Зарегистрируйте коннектор 1С для 64-битных процессов командой
regsvr32 ConnectorName.dll
, где «ConnectorName» — имя файла коннектора. - Перезапустите Cleverence 1С-сервер.
После выполнения этих шагов проблема «Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence» должна быть успешно решена, и вы сможете запустить приложение Cleverence 1С-сервера без ошибок.
Если это решение не сработало, попробуйте переустановить Cleverence 1С-сервер с чистой установкой, убедившись, что у вас установлена версия 1C:Enterprise 8.3 с поддержкой 64-битных процессов. Также убедитесь, что у вас установлены все необходимые компоненты и зависимости для работы Cleverence 1С-сервера.
Надеемся, что данное решение помогло вам решить проблему «Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence». Если у вас остались какие-либо вопросы или проблемы, обратитесь в службу поддержки Cleverence или на форум сообщества разработчиков 1C:Enterprise.
Решение проблемы
Если вы столкнулись с проблемой «Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence», следуйте следующим шагам для ее решения:
Шаг 1: Проверьте версию OC и приложения
Убедитесь, что используемая вами операционная система и приложение v8.3 Application Cleverence поддерживаются 64-битной архитектурой. Если ваша система или приложение работают только в 32-битном режиме, установка коннектора для 64-битных процессов невозможна.
Шаг 2: Установите необходимые компоненты
Возможно, проблема возникает из-за отсутствия или неправильной установки необходимых компонентов. Проверьте установку следующих элементов:
- Компоненты Microsoft Visual C++ Redistributable;
- Компоненты Microsoft .NET Framework;
- Компоненты OLE DB Provider.
Установите отсутствующие или исправьте ошибки при установке указанных компонентов.
Шаг 3: Проверьте целостность файлов
Поврежденные или удаленные файлы могут привести к ошибкам при установке коннектора. Проверьте целостность следующих файлов:
- Файл коннектора для 64-битных процессов v8.3 Application Cleverence;
- Файлы приложения v8.3 Application Cleverence;
- Файлы операционной системы.
Восстановите отсутствующие или поврежденные файлы из резервной копии или переустановите приложение v8.3 Application Cleverence.
Шаг 4: Запустите установку от имени администратора
В некоторых случаях проблемы с установкой и регистрацией коннектора могут происходить из-за ограничений прав доступа. Попробуйте запустить установку от имени администратора, чтобы предоставить достаточные права для выполнения операций.
Шаг 5: Обратитесь в службу поддержки
Если после выполнения вышеперечисленных шагов проблема не решена, обратитесь в службу поддержки 1С или разработчикам приложения v8.3 Application Cleverence, чтобы получить дополнительную помощь и инструкции по устранению ошибки.
Nervosa
26.07.13
✎
17:04
Здравствуйте!
Взяли на тест сканер штрихкодов Motorola MC2100. Хочу написать обработку для выгрузки/загрузки данных из/в него. Смотрю в мануал от фирмы CleverenceSoft:
Функции драйвера объединены во внешней компоненте «Addin.Cl.TerminalConnector», содержащейся в библиотеке Cleverence.Warehouse.TerminalConnector.dll в подпапке ControlPanel папки установки драйвера.
Окей. Кладу Cleverence.Warehouse.TerminalConnector.dll в папку bin 1C-ки, а в обработке в методе ПриОткрытии() пишу:
Процедура ПриОткрытии()
Попытка
ПрогИД = «AddIn.Cl.TerminalConnector»;
ПодключитьВнешнююКомпоненту(ПрогИД);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
В итоге вижу ошибку — Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Ошибка при подключении внешней компоненты
Что же я делаю неправильно?
Заранее спасибо.
Галахад
26.07.13
✎
17:16
Может регистрировать надо?
Nervosa
26.07.13
✎
17:24
И зарегить не даёт — говорит, что модуль Cleverence.Warehouse.TerminalConnector.dll загружен, но точка входа DllRegisterServer не найдена.
Grobik
26.07.13
✎
17:26
Наверно нет прав на соответствующую ветку регистра винды.
Nervosa
26.07.13
✎
17:32
Сделал себя админом — та же картина.
Grobik
26.07.13
✎
17:40
Для начала винда?
Nervosa
26.07.13
✎
17:43
7-ка.
Nervosa
29.07.13
✎
09:13
И снова здравствуйте! Может на выходных кто-то занимался ТСД Motorola MC2100?
wowik
29.07.13
✎
09:31
что разрабатываете, велосипед? с драйвером уже идут все необходимы обработки.
wowik
29.07.13
✎
09:34
в папке драйвера «Control Panel» есть файл «Зарегистрировать COM.bat».
Nervosa
29.07.13
✎
09:35
(8) — тут абсолютно полностью самописная конфигурация, поэтому стандартными обработками воспользоваться, увы, не удастся.
wowik
29.07.13
✎
09:39
(10) тогда смотрим содержимое файла (9), запускаем регистрацию от имени администратора. Если не получилось, к администраторам, пусть разбираются с правами.
Nervosa
29.07.13
✎
09:44
Ничего не помогло, к сожалению. По прежнему — Ошибка при подключении внешней компоненты. С правами всё в порядке на 100%.
wowik
29.07.13
✎
09:48
напишите на суппорт support@cleverence.ru. Возможно, помогут. По крайней мере, попытаются.
Nervosa
31.07.13
✎
09:17
По совету wowik я обратился в суппорт Cleverence и мне там действительно помогли
Последовательность действий следующая —
1) Устанавливаем выбранный драйвер — в моём случае этот — http://www.cleverence.ru//site.aspx?page=MobileSmarts-1C-Driver.
2) Из папки с установленным ПО Cleverence Soft\Driver1C\Control Panel\ запускаем Зарегистрировать COM.bat.
3) Затем в самой 1С 8.1 подключаем следующим образом:
Попытка
ПрогИД = «AddIn.Cl.TerminalConnector»;
ПодключитьВнешнююКомпоненту(ПрогИД);
Сканер = Новый (ПрогИД);
Исключение
Инфо = ИнформацияОбОшибке();
Сообщить(«Описание='» + Инфо.Описание + «‘»);
КонецПопытки;
Всё работает!
Моя же ошибка заключалась в том, что я не просто запускал Зарегистрировать COM.bat, но и копировал Cleverence.Warehouse.TerminalConnector.dll в 1С\bin, чего делать не стоило.
В общем респект ребятам, они действительно помогли
0xFFFFFF
31.07.13
✎
09:23
(0) «. Хочу написать обработку для выгрузки/загрузки данных из/в него»
И зачем вам такой геморрой… RDP и обработка в режиме рабочего стола снимает все вопросы.
wowik
31.07.13
✎
09:54
wowik
31.07.13
✎
09:55
(16) в комментариях обсуждение
Nervosa
31.07.13
✎
10:11
(15) конфигурация 1С полностью самописная, обработка работает с остатками.
Ваш код, в том виде, в котором он приведен в вопросе, работает. В нем, правда, XML зачем-то прогоняется через XmlDocument
вместо прямой записи в файл, но на результат это не влияет. Т.е. код вида
SerializeObject(obj, @"some.xml");
DeSerializeObject<ArrayOfApiData>(@"some.xml");
возвращает копию оригинального объекта. Вот только XML при этом отличается от приведенного в примере. Он начинается с
<?xml version="1.0"?>
Т.е. тот XML, который у вас приведен — это не результат работы кода из вопроса. И он вполне может быть битым. Например, у него может быть неправильный BOM — первые байты файла, задающие формат. При несоответствии из кодировке, указанной в <?xml>
, чтение документа упадет именно с такой ошибкой.
Уберите лишний код из своего сериализатора и десериализатора, это скорее всего уберет ошибку:
var serializer = new XmlSerializer(serializableObject.GetType());
using (var stream = File.Create(fileName))
{
serializer.Serialize(stream, serializableObject);
}
var serializer = new XmlSerializer(typeof(T));
using (var stream = File.OpenRead(fileName))
{
return (T)serializer.Deserialize(stream);
}
Просмотр полной версии : Проблема с созданием экземпляра com-объекта на сервере
Добрый день,
AX2009 интегрирую с внешней системой.
Внешняя система предоставляет com-объект для манипуляций с ней,
в AX2009 запилил класс для запуска в пакетном режиме, который будет периодически обменивается данными с внешней системой посредством использования экземпляра данного com-объекта.
Для начала сделал по-старинке:
класс клиентский, пакетный сервер запускается в отдельной клиентской сессии.
Все работает.
Можно переводить и на серверный вариант, чтобы не париться с клиентской сессией.
Поставил RunOn = Server.
Метод new подпилил так:
void new()
{
InteropPermission p;
;
super();
p = new InteropPermission(InteropKind::ComInterop);
p.assert();
storageConnector = new COM(«Cleverence.Warehouse.StorageConnector»);
// storageConnector = new COM(«CDO.Message»); // для проверки создаются ли другие объекты
CodeAccessPermission::revertAssert();
}
Пробую. Получаю:
COM-объект класса «Cleverence.Warehouse.StorageConnector» не удалось создать. Убедитесь, что объект был должным образом зарегистрирован на компьютере «AOS-DEV-01V».
Убедился.
На указанном AOS установлен также и клиент. Открываю его.
Ставлю у класса RunOn = Client — запускается.
Ставлю у класса RunOn = Server — указанная выше ошибка.
Под доменным админом то же самое.
Другие объекты типа CDO.Message или ADODB.Recordset создаются нормально при любом значении RunOn.
Если кто в состоянии, подскажите, пожалуйста, в каком направлении копать.
Нужно искать 64-битный вариант COM-объекта «Cleverence.Warehouse.StorageConnector».
Либо АОС делать 32-битным.
Либо париться с клиентской сессией
Здесь прописано как запустить СОМ коннектор 1с8х в режиме 32 бит на 64-битовом сервере.
http://gilev.ru/1c/hasp/
в ссылке есть пункт
15. Для COM-соединений к 64х битному серверу приложений использование возможно только на том компьютере, на котором установлен ключ 64-разрядного сервера 1С:Предприятия (и не из терминальной сессии).
Для использования V81.COMConnector на компьютерах, которым доступны только клиентские ключи, можно зарегистрировать 32-разрядный V81.COMConnector в COM+.
— запустите Component Services;
— создайте пустое COM+ приложение с Activation type — Server application и именем, например, V81_COMConnector, укажите имя пользователя Windows, от имени которого компонента будет запускаться в адресном пространстве отдельного процесса dllhost.exe;
— в ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.
В этом случае V81.COMConnector будет запускаться в отдельном 32-разрядном процессе и может использоваться как 32-разрядными, так и 64-разрядными приложениями.
Данная рекомендация была использована как для СОМ коннектора 1с (не было ключей 64-бит), так и еще для одной компоненты СОМ сторонней фирмы, под которую не было 64- битовой dll.
Пакеты ax2009 АОС 64-бит Window server 2008 sp2 работают с этими СОМ компонентами, проблем не было.
Всем привет.
Обновил версию 1с до 8.2., теперь интеграция с АХ 2009 SP1 накрылась медным тазом. Добавил новое приложение com+ (как в сообщении выше), загрузил компоненту из папки с установленным 1с8.2. Импорт поставщиков из 1С в АХ 2009 не работает: «COM-объект класса «V81.COMConnector» не удалось создать. Убедитесь, что объект был должным образом зарегистрирован на компьютере «AX-DEMO».» Зачем-то АХ 2009 упорно сигнализирует о том, что используется объект V81* которого уже впомине нет. В макросе используется следующее. Перепробывал все варианты.
//define.COMConnectorProgId(«V81.COMConnector») // исходник
//define.COMConnectorProgId(«V82.COMConnector») // второе чтение
define.COMConnectorProgId(«82.COMConnector.1») // по принципу названия компоненты в component services
В методе поиска/создания ком объекта, если последний не нашелся, указано:
comConnector = new COM( #COMConnectorProgId);//V81.COMConnector
Сервер перезагружал. АОС тоже. Поможите кто чем богат на знания.
Попробуйте для начала не использовать макрос, а явно указать строку «V82.COMConnector»
Всем привет!
Помогите пожалуйста решить подобную проблему. Создал на сервере (Windows Server 2008 R2 Standard SP1, 64bit) приложение COM+, как описано выше (от имени Network Service). Объект создается, но на методе Connect все намертво виснет (DAX 4.0):
c1COMObj = new COM(«V82.COMConnector»);
connection = c1COMObj.Connect(«Srvr=»» + c1Params.DBCluster + «»;Ref=»» + c1Params.DBClusterName + «»;Usr=»» + c1Params.User1C + «»;Pwd=»» + c1Params.User1CPassword + «»;»);
При этом для «V82.Application» все работает.
comcntr.dll нашел 2 штуки — в Program Files и в Program Files (x86). Пробовал подставлять обе, результат один. В чем может быть дело?
Основные моменты при создании приложений COM+:
1. Когда создаете приложение COM+, указывайте, что это серверное приложение;
2. Далее в мастере создания в окне «Удостоверение приложения» необходимо указать пользователя и пароль от имени которого стартует АОС;
3. Далее в мастере создания в окне «Добавление пользователей и ролей» также необходимо добавить пользователя от имени которого стартует АОС;
4. При создании конкретного компонента внутри приложения COM+ выбирайте библиотеку comcntr.dll из папки «Program Files (x86)».
Нижеприведенный код должен отрабатывать без проблем:
new InteropPermission(InteropKind::ComInterop).assert();
COMconnector = new COM(this.getCOMConnectorProg());
CodeAccessPermission::revertAssert();
где функция getCOMConnectorProg() имеет вид:
private str getCOMConnectorProg()
{
str getCOMConnectorProg;
;
switch(Version)
{
case ::V80 :
getCOMConnectorProg = #V80_COMConnector;
break;
case ::V81 :
getCOMConnectorProg = #V81_COMConnector;
break;
case ::V82 :
getCOMConnectorProg = #V82_COMConnector;
break;
default :
throw error(strFmt(«Для версии %1 не реализовано»,Version));
}
return getCOMConnectorProg;
}
макросы:
#define.V80_COMConnector(‘V8.COMConnector’)
#define.V81_COMConnector(‘V81.COMConnector’)
#define.V82_COMConnector(‘V82.COMConnector’)
Огромное спасибо! Заработало. Похоже ключевым был пользователь, от имени которого запускается АОС.
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например:
result = connection.axSyncClient(«Test»);
вылетает ошибка, в данном случае: «Метод «axSyncClient» в COM-объекте класса «<неизвестно>» возвратил код ошибки 0x80020009 (DISP_E_EXCEPTION), который означает: {ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)}: Процедура или функция с указанным именем не определена (ВвестиЗначение).»
Такая функция в 1С точно есть, для «V82.Application» это работает. Подскажите пожалуйста, в чем может быть дело?
Еще раз всем привет!
К сожалению, проблема решена не полностью. При вызове любой функции 1С, например:
result = connection.axSyncClient(«Test»);
вылетает ошибка, в данном случае: «Метод «axSyncClient» в COM-объекте класса «<неизвестно>» возвратил код ошибки 0x80020009 (DISP_E_EXCEPTION), который означает: {ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)}: Процедура или функция с указанным именем не определена (ВвестиЗначение).»
Такая функция в 1С точно есть, для «V82.Application» это работает. Подскажите пожалуйста, в чем может быть дело?
Не путайте COM и OLE.
В данном случае «V82.Application» — это OLE.
А функция «ВвестиЗначение» — функция клиентского исполнения, которая представляет собой показ диалога для ввода значение переданного типа и требует работы с интерфейсной составляющей платформы 1С. Через COM-объект («V82.COMConnector») она работать не будет.
Но там и не должно быть никакого диалога. Функция должна отработать без взаимодействия с пользователем и вернуть результат в виде текстовой строки. Может быть для работы через COMConnector функции в 1С должны быть написаны с учетом некоторых ограничений?
Функция «ВвестиЗначение» — это функция глобального контекста, т.е. функция ядра платформы 1С.
Вот ее описание из встроенной справки:
Вызывает диалог для ввода значения заданного типа. Если тип переменной не определен и <Тип> представляет собой составной тип данных, то в поле ввода появляется кнопка выбора типа.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Обратите внимание на раздел «Доступность», среди перечисленного нет «Внешнее соединение», что требуется для работы с процедурами/функциями через COM-соединение.
Касательно вашего случая, возможно, что по бизнес логике функция «ВвестиЗначение» и не вызывается, может быть она даже используется в другой процедуре/функции общего модуля, не в той, которую вы пытаетесь вызвать через COM. Но при подключении через COM и вызове чего-либо из общего модуля, платформа проверяет этот модуль в режиме Внешнего соединения, для которого вызов этой функции недопустим, поэтому у вас и появляется указанная ошибка.
Найдите вот это место «ОбщийМодуль.ВнешниеПроцедуры.Модуль(340,4)» и логику работы функции ВвестиЗначение обрамите в директивы препроцессора:
#Если Клиент Тогда
#КонецЕсли
Я думаю, что проблема у вас пропадет, ну или наткнетесь на другое место неверного вызова функций контекста, не предназначенных для Внешнего соединения.
Спасибо большое! Получилось.
FYI
_________
COM-объект класса «V83.COMConnector.1» не удалось создать
Возможно после обновления 1С получили ошибку при запуске класса, выгружающего данные в 1С в пакетном режиме и запускающего функцию 1С посредством COM LoadData (возможно просто совпало), т.к. до этого момента выгрузка запускалась только вручную.
Вручную класс отрабатывал без ошибки.
Регистрация comcntr.dll в режиме 32 и 64 бит на 64-битовом сервере не помогла.
Помогло добавление пользователей aos-ов — пакетных серверов в роли компоненты приложения COM+
Работает на vBulletin® версия 3.8.5. Copyright ©2000-2023, Jelsoft Enterprises Ltd. Перевод: zCarot
Nervosa
26.07.13 — 17:04
Здравствуйте!
Взяли на тест сканер штрихкодов Motorola MC2100. Хочу написать обработку для выгрузки/загрузки данных из/в него. Смотрю в мануал от фирмы CleverenceSoft:
Функции драйвера объединены во внешней компоненте «Addin.Cl.TerminalConnector», содержащейся в библиотеке Cleverence.Warehouse.TerminalConnector.dll в подпапке ControlPanel папки установки драйвера.
Окей. Кладу Cleverence.Warehouse.TerminalConnector.dll в папку bin 1C-ки, а в обработке в методе ПриОткрытии() пишу:
Процедура ПриОткрытии()
Попытка
ПрогИД = «AddIn.Cl.TerminalConnector»;
ПодключитьВнешнююКомпоненту(ПрогИД);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
В итоге вижу ошибку — Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Ошибка при подключении внешней компоненты
Что же я делаю неправильно?
Заранее спасибо.
Галахад
1 — 26.07.13 — 17:16
Может регистрировать надо?
Nervosa
2 — 26.07.13 — 17:24
И зарегить не даёт — говорит, что модуль Cleverence.Warehouse.TerminalConnector.dll загружен, но точка входа DllRegisterServer не найдена.
Grobik
3 — 26.07.13 — 17:26
Наверно нет прав на соответствующую ветку регистра винды.
Nervosa
4 — 26.07.13 — 17:32
Сделал себя админом — та же картина.
Grobik
5 — 26.07.13 — 17:40
Для начала винда?
Nervosa
6 — 26.07.13 — 17:43
7-ка.
Nervosa
7 — 29.07.13 — 09:13
И снова здравствуйте! Может на выходных кто-то занимался ТСД Motorola MC2100?
wowik
8 — 29.07.13 — 09:31
что разрабатываете, велосипед? с драйвером уже идут все необходимы обработки.
wowik
9 — 29.07.13 — 09:34
в папке драйвера «Control Panel» есть файл «Зарегистрировать COM.bat».
Nervosa
10 — 29.07.13 — 09:35
(8) — тут абсолютно полностью самописная конфигурация, поэтому стандартными обработками воспользоваться, увы, не удастся.
wowik
11 — 29.07.13 — 09:39
(10) тогда смотрим содержимое файла (9), запускаем регистрацию от имени администратора. Если не получилось, к администраторам, пусть разбираются с правами.
Nervosa
12 — 29.07.13 — 09:44
Ничего не помогло, к сожалению. По прежнему — Ошибка при подключении внешней компоненты. С правами всё в порядке на 100%.
wowik
13 — 29.07.13 — 09:48
напишите на суппорт support@cleverence.ru. Возможно, помогут. По крайней мере, попытаются.
Nervosa
14 — 31.07.13 — 09:17
По совету wowik я обратился в суппорт Cleverence и мне там действительно помогли
Последовательность действий следующая —
1) Устанавливаем выбранный драйвер — в моём случае этот — http://www.cleverence.ru//site.aspx?page=MobileSmarts-1C-Driver.
2) Из папки с установленным ПО Cleverence SoftDriver1CControl Panel запускаем Зарегистрировать COM.bat.
3) Затем в самой 1С 8.1 подключаем следующим образом:
Попытка
ПрогИД = «AddIn.Cl.TerminalConnector»;
ПодключитьВнешнююКомпоненту(ПрогИД);
Сканер = Новый (ПрогИД);
Исключение
Инфо = ИнформацияОбОшибке();
Сообщить(«Описание=’» + Инфо.Описание + «‘»);
КонецПопытки;
Всё работает!
Моя же ошибка заключалась в том, что я не просто запускал Зарегистрировать COM.bat, но и копировал Cleverence.Warehouse.TerminalConnector.dll в 1Сbin, чего делать не стоило.
В общем респект ребятам, они действительно помогли
0xFFFFFF
15 — 31.07.13 — 09:23
(0) «. Хочу написать обработку для выгрузки/загрузки данных из/в него»
И зачем вам такой геморрой… RDP и обработка в режиме рабочего стола снимает все вопросы.
wowik
16 — 31.07.13 — 09:54
wowik
17 — 31.07.13 — 09:55
(16) в комментариях обсуждение
Nervosa
18 — 31.07.13 — 10:11
(15) конфигурация 1С полностью самописная, обработка работает с остатками.