|
Нелепая ошибка COM-объект-ом на сервере | ☑ | ||
---|---|---|---|---|
0
usd1001
10.07.20
✎
11:44
|
Помогите пожалуйста разобраться с причиной ошибки.
Есть внешняя компонента Контура. И код, который без проблем выполняется на клиенте. На сервере код тоже выполняется, но ровно 1 раз. Что на клиенте, что на сервере всегда выполняется первая строка (возвращается результат - Истина). Но на сервере при последующих попытка ошибка на второй строке - "Неверная строка указания класса". Помогает перезапуск 1С с чисткой серверного кэша. После этого код тоже ровно 1 раз выполняется и при последующих попытках падает с ошибкой. Платформа 8.3.15, конфигурация - УТ 11.1, режим запуска - толстый клиент Код: ПодключитьВнешнююКомпоненту(ИмяФайла, "AddInDiadocAPI", ТипВнешнейКомпоненты.Native); // результат - Истина DiadocApi = Новый COMОбъект("Diadoc.Api.InvoiceApi"); // На сервере при повторном вызове - "Неверная строка с указанием класса" |
|||
1
unbred
10.07.20
✎
11:54
|
вангую: у тебя Истина только при первом выполнении)
|
|||
2
acht
10.07.20
✎
11:56
|
> ТипВнешнейКомпоненты.Native);
> Новый COMОбъект("Diadoc.Api.InvoiceApi"); Эти строки вообще никак не связаны |
|||
3
usd1001
10.07.20
✎
11:59
|
(1) не, при последующих тоже
|
|||
4
acht
10.07.20
✎
12:00
|
А так можно долго гадать. Ну, например второй вызов приходит на другой сервер кластера и т.п.
|
|||
5
usd1001
10.07.20
✎
12:00
|
(2) Смущает, что Com и Native в одном месте? Но ведь как-то же работает и это можно сказать промышленный код, который я перекопировал для своей обработки)
|
|||
6
usd1001
10.07.20
✎
12:01
|
(4) Спасибо за важное замечание. Клиент и сервер на одном ПК. Пытаюсь у себя чинить.
|
|||
7
acht
10.07.20
✎
12:02
|
(5) > Но ведь как-то же работает
Если бы работало, этой ветки не было б |
|||
8
Garykom
гуру
10.07.20
✎
12:05
|
(5) косяк у тебя в коде для
Новый COMОбъект("Diadoc.Api.InvoiceApi"); предыдущий код не нужен и да на сервере 1С NativeAPI там гм |
|||
9
usd1001
10.07.20
✎
12:06
|
(7) Да, у Контура работает На Клиенте. А мне нужно регламетное задание сделать по обновлению статусов документов. Соответственно код должен быть на сервере. Синтакс помощник одобряет.
|
|||
10
Garykom
гуру
10.07.20
✎
12:06
|
Прочитай http://1c-docs.diadoc.ru/ru/latest/HowTo/HowTo_auth.html там где про сервер
|
|||
11
usd1001
10.07.20
✎
12:07
|
(8) Можно пожалуйста поподробнее? Что за гм?
|
|||
12
Garykom
гуру
10.07.20
✎
12:07
|
"В случае, когда режим запуска 1С не позволяет запуск внешних компонент, использующих технологию COM, (например, на стороне сервера 1С), необходимо использовать сборку компоненты, которая реализована в виде классического COM-объекта. Перед использованием компоненты нужно зарегистрировать файл DiadocComApi.dll с помощью команды regsvr32"
|
|||
13
Garykom
гуру
10.07.20
✎
12:07
|
(12)+ И да regsvr32 надо из правильного каталога
|
|||
14
Garykom
гуру
10.07.20
✎
12:08
|
(13)+ от разрядности
|
|||
15
usd1001
10.07.20
✎
12:09
|
(10) спасибо большое, попробую
|
|||
16
usd1001
10.07.20
✎
12:10
|
(15) только боюсь, что так и было с самого начала) код то оттуда и брал)
|
|||
17
Garykom
гуру
10.07.20
✎
12:15
|
(16) ты свою строчку: "adocApi = Новый COMОбъект("Diadoc.Api.InvoiceApi");"
от их строчки: DiadocApi_ = Новый("AddIn.DiadocInvoiceAPI"); отличаешь? |
|||
18
Garykom
гуру
10.07.20
✎
12:16
|
DiadocApi = Новый COMОбъект("Diadoc.Api.InvoiceApi");
DiadocApi = Новый("AddIn.DiadocInvoiceAPI"); найди два отличия? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |