Ошибка при создании компоненты cleverence warehouse storageconnector

Последние изменения: 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. Желательно, чтобы промежуточная база драйвера ПРОФ находилась на том же ПК, что и ваша прикладная база 1С.
  2. Проверьте доступность порта сервера 9500. Также проверьте, запущена ли служба сервера 1C driver server PROF.
  3. Запустите 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. Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence
  2. Решение проблемы
  3. Шаг 1: Проверьте версию OC и приложения
  4. Шаг 2: Установите необходимые компоненты
  5. Шаг 3: Проверьте целостность файлов
  6. Шаг 4: Запустите установку от имени администратора
  7. Шаг 5: Обратитесь в службу поддержки

Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence

Если вы столкнулись с проблемой «Не зарегистрирован коннектор 1С для 64-битных процессов v8.3 Application Cleverence», то в данной статье вы найдете решение этой проблемы. Эта ошибка возникает, когда при попытке запустить приложение Cleverence 1С-сервера, оно не может найти зарегистрированный коннектор для 64-битных процессов.

Для решения этой проблемы вам понадобится выполнить следующие шаги:

  1. Убедитесь, что у вас установлена версия 1C:Enterprise 8.3 с поддержкой 64-битных процессов.
  2. Установите последнюю версию Cleverence 1С-сервера.
  3. Проверьте наличие необходимых файлов коннектора в каталоге установки Cleverence 1С-сервера. Если коннектор отсутствует, то скорее всего он не был установлен корректно.
  4. Зарегистрируйте коннектор 1С для 64-битных процессов командой regsvr32 ConnectorName.dll, где «ConnectorName» — имя файла коннектора.
  5. Перезапустите 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, чтобы получить дополнительную помощь и инструкции по устранению ошибки.

Подключение внешней компоненты для ТСД Motorola MC2100 ☑ 0

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

Может регистрировать надо?

2

Nervosa

26.07.13

17:24

И зарегить не даёт — говорит, что модуль Cleverence.Warehouse.TerminalConnector.dll загружен, но точка входа DllRegisterServer не найдена.

3

Grobik

26.07.13

17:26

Наверно нет прав на соответствующую ветку регистра винды.

4

Nervosa

26.07.13

17:32

Сделал себя админом — та же картина.

5

Grobik

26.07.13

17:40

Для начала винда?

6

Nervosa

26.07.13

17:43

7-ка.

7

Nervosa

29.07.13

09:13

И снова здравствуйте! Может на выходных кто-то занимался ТСД Motorola MC2100? :)

8

wowik

29.07.13

09:31

что разрабатываете, велосипед? с драйвером уже идут все необходимы обработки.

9

wowik

29.07.13

09:34

в папке драйвера «Control Panel» есть файл «Зарегистрировать COM.bat».

10

Nervosa

29.07.13

09:35

(8) — тут абсолютно полностью самописная конфигурация, поэтому стандартными обработками воспользоваться, увы, не удастся.

11

wowik

29.07.13

09:39

(10) тогда смотрим содержимое файла (9), запускаем регистрацию от имени администратора. Если не получилось, к администраторам, пусть разбираются с правами.

12

Nervosa

29.07.13

09:44

Ничего не помогло, к сожалению. По прежнему — Ошибка при подключении внешней компоненты. С правами всё в порядке на 100%.

13

wowik

29.07.13

09:48

напишите на суппорт support@cleverence.ru. Возможно, помогут. По крайней мере, попытаются.

14

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, чего делать не стоило.

В общем респект ребятам, они действительно помогли :)

15

0xFFFFFF

31.07.13

09:23

(0) «. Хочу написать обработку для выгрузки/загрузки данных из/в него»

И зачем вам такой геморрой… RDP и обработка в режиме рабочего стола снимает все вопросы.

16

wowik

31.07.13

09:54

17

wowik

31.07.13

09:55

(16) в комментариях обсуждение

18

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С полностью самописная, обработка работает с остатками.

Понравилась статья? Поделить с друзьями:
  • Ошибка при установке portal 2
  • Ошибка при съемках или монтаже фильма 7 букв
  • Ошибка при удалении приложения android
  • Ошибка при установке phpmyadmin ubuntu
  • Ошибка при создании ключевого носителя скзи