Вход | Регистрация
 

Нелепая ошибка COM-объект-ом на сервере

Нелепая ошибка COM-объект-ом на сервере
Я
   usd1001
 
10.07.20 - 11:44
Помогите пожалуйста разобраться с причиной ошибки.

Есть внешняя компонента Контура. И код, который без проблем выполняется на клиенте. На сервере код тоже выполняется, но ровно 1 раз. Что на клиенте, что на сервере всегда выполняется первая строка (возвращается результат - Истина). Но на сервере при последующих попытка ошибка на второй строке - "Неверная строка указания класса". Помогает перезапуск 1С с чисткой серверного кэша. После этого код тоже ровно 1 раз выполняется и при последующих попытках падает с ошибкой.

Платформа 8.3.15, конфигурация - УТ 11.1, режим запуска - толстый клиент

Код:

  ПодключитьВнешнююКомпоненту(ИмяФайла, "AddInDiadocAPI", ТипВнешнейКомпоненты.Native); // результат - Истина
  DiadocApi = Новый COMОбъект("Diadoc.Api.InvoiceApi"); // На сервере при повторном вызове - "Неверная строка с указанием класса"
   unbred
 
1 - 10.07.20 - 11:54
вангую: у тебя Истина только при первом выполнении)
   acht
 
2 - 10.07.20 - 11:56
> ТипВнешнейКомпоненты.Native);
> Новый COMОбъект("Diadoc.Api.InvoiceApi");

Эти строки вообще никак не связаны
   usd1001
 
3 - 10.07.20 - 11:59
(1) не, при последующих тоже
   acht
 
4 - 10.07.20 - 12:00
А так можно долго гадать. Ну, например второй вызов приходит на другой сервер кластера и т.п.
   usd1001
 
5 - 10.07.20 - 12:00
(2) Смущает, что Com и Native в одном месте? Но ведь как-то же работает и это можно сказать промышленный код, который я перекопировал для своей обработки)
   usd1001
 
6 - 10.07.20 - 12:01
(4) Спасибо за важное замечание. Клиент и сервер на одном ПК. Пытаюсь у себя чинить.
   acht
 
7 - 10.07.20 - 12:02
(5) > Но ведь как-то же работает
Если бы работало, этой ветки не было б
   Garykom
 
8 - 10.07.20 - 12:05
(5) косяк у тебя в коде для 
Новый COMОбъект("Diadoc.Api.InvoiceApi");
предыдущий код не нужен

и да на сервере 1С NativeAPI там гм
   usd1001
 
9 - 10.07.20 - 12:06
(7) Да, у Контура работает На Клиенте. А мне нужно регламетное задание сделать по обновлению статусов документов. Соответственно код должен быть на сервере. Синтакс помощник одобряет.
   Garykom
 
10 - 10.07.20 - 12:06
Прочитай http://1c-docs.diadoc.ru/ru/latest/HowTo/HowTo_auth.html там где про сервер
   usd1001
 
11 - 10.07.20 - 12:07
(8) Можно пожалуйста поподробнее? Что за гм?
   Garykom
 
12 - 10.07.20 - 12:07
"В случае, когда режим запуска 1С не позволяет запуск внешних компонент, использующих технологию COM, (например, на стороне сервера 1С), необходимо использовать сборку компоненты, которая реализована в виде классического COM-объекта. Перед использованием компоненты нужно зарегистрировать файл DiadocComApi.dll с помощью команды regsvr32"
   Garykom
 
13 - 10.07.20 - 12:07
(12)+ И да regsvr32 надо из правильного каталога
   Garykom
 
14 - 10.07.20 - 12:08
(13)+ от разрядности
   usd1001
 
15 - 10.07.20 - 12:09
(10) спасибо большое, попробую
   usd1001
 
16 - 10.07.20 - 12:10
(15) только боюсь, что так и было с самого начала) код то оттуда и брал)
   Garykom
 
17 - 10.07.20 - 12:15
(16) ты свою строчку: "adocApi = Новый COMОбъект("Diadoc.Api.InvoiceApi");"

от их строчки: DiadocApi_ = Новый("AddIn.DiadocInvoiceAPI");

отличаешь?
   Garykom
 
18 - 10.07.20 - 12:16
DiadocApi = Новый COMОбъект("Diadoc.Api.InvoiceApi");
DiadocApi = Новый("AddIn.DiadocInvoiceAPI");

найди два отличия?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.