Работа с COM компонентой ошибка?

1. DeniNikitin 36 29.07.20 11:07 Сейчас в теме
Добрый день!
Имеются две конфигурации БП 2.0 и БП 3.0 и имеется сторонняя библиотека для работы с ключами, платформа 8.3.16 32х серверная, сервер БД postgres 12.

Код для БП 2.0 работает идеально и всё отрабатывает хорошо:
	ПрогИД = "Ком";
	СтрокаКомпоненты = КаталогИБ()+"SenselockKey.dll";
	Попытка 
		ПодключитьВнешнююКомпоненту(СтрокаКомпоненты,ПрогИД);
	Исключение
		Возврат Ложь;	
	КонецПопытки;                      


	senselock = Новый ("AddIn.SenselockKey");
	Парам = senselock.sense_setmode(2, "978660000000217F"); 
	КоличествоКлючей = senselock.sense_enum();    
	Если КоличествоКлючей > 0 Тогда
		Возврат Истина;		
	Иначе
		Возврат Ложь;
	КонецЕсли;
Показать


Но код для управляемых форм в БП 3.0 не отрабатывает com объект создаётся но при вызове метода senselock.sense_setmode говорит что метод не обнаружен:
	senselock = Новый ("AddIn.SenselockKey");
	Парам = senselock.sense_setmode(2, "978660000000217F"); 
	КоличествоКлючей = senselock.sense_enum();    
	Если КоличествоКлючей > 0 Тогда
		Возврат Истина;		
	Иначе
		Возврат Ложь;
	КонецЕсли;
Показать


Подскажите пожалуйста в чём может быть проблема я что-то не так делаю для УФ или надо переписывать библиотеку?

Заранее благодарен!
Прикрепленные файлы:
SenselockKey.dll
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. andy_zhav 197 29.07.20 11:41 Сейчас в теме
(1) SenseLock в отладчике какое значение имеет?
2. VictorRGB2 13 29.07.20 11:10 Сейчас в теме
для УФ лучше вынести работу с dll на сервер и саму dll зарегистрировать на сервере 1С
pvlunegov; +1 Ответить
3. DeniNikitin 36 29.07.20 11:13 Сейчас в теме
(2) Зарегистрировать имеется ввиду в службе компонентов или где?
5. VictorRGB2 13 29.07.20 11:56 Сейчас в теме
(3) да, перенести ее физически на комп, где кластер серверов 1С крутится, на нем зарегистрировать, в службе компонентов не скажу точно, что надо добавлять, вроде как по коду достаточно просто ей регистрацию в винде сделать
6. platonov.e 158 29.07.20 12:11 Сейчас в теме
(2) Так может наоборот, лучше на клиенте это делать?
7. serg33rus 28 29.07.20 12:16 Сейчас в теме
Попробуй в процедуре где это все вызывается явно указать &НаКлиенте. БП 2 на клиенте отрабатывает.
8. DeniNikitin 36 29.07.20 12:52 Сейчас в теме
И на клиенте и на сервере одинаково отрабатывает, ничего не помогает! Зарегестрирована она на кластере серверов!
9. DeniNikitin 36 29.07.20 12:54 Сейчас в теме
И самое интересное платформа и разрядность не имеет значения! Дело именно в обычном или управляемом приложении!
11. VictorRGB2 13 29.07.20 15:11 Сейчас в теме
(9) УФ выполняет операции с dll на сервере, т.е. или в модуле формы конкретно писать #НаСервере или переносить в модуль объекта
в любом случае потребуется две процедуры делать
первая отработает нажатие кнопки (или без) и передачу обработки на сервер
вторая выполнение операции на сервере

например так
#НаКлиенте
Процедура ВыполнитьЧтоТоТамНаКлиенте()
 лРезультат = ВыполнитьЧтоТоТамНаСервере();
КонецПроцедуры

#НаСервере
Функция ВыполнитьЧтоТоТамНаСервере()
ПрогИД = "Ком";
    СтрокаКомпоненты = КаталогИБ()+"SenselockKey.dll";
    Попытка 
        ПодключитьВнешнююКомпоненту(СтрокаКомпоненты,ПрогИД);
    Исключение
        Возврат Ложь;    
    КонецПопытки;                      


    senselock = Новый ("AddIn.SenselockKey");
    Парам = senselock.sense_setmode(2, "978660000000217F"); 
    КоличествоКлючей = senselock.sense_enum();    
    Если КоличествоКлючей > 0 Тогда
        Возврат Истина;        
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции
Показать
10. pvlunegov 157 29.07.20 14:59 Сейчас в теме
Приведенный кусок кода выполняется на БП 3.0 в контексте Сервера или Клиента?
Это важно.
Приведенный Код надо поместить в процедуру, выполняемую в контексте Сервера.
На Клиенте разместить команду, выполнять ее при нажатии на клавишу.
12. DeniNikitin 36 29.07.20 16:02 Сейчас в теме
(10) Так оно и сделано я прекрасно знаю работу сервера и клиента! Я же приложил компоненту скачай и простая обработка выполни на обычном, потом на управляемом и скажи что не так!
13. DeniNikitin 36 29.07.20 16:19 Сейчас в теме
14. platonov.e 158 29.07.20 16:28 Сейчас в теме
(13) А вы сами не видите 10 отличий?

ОФ
senselock = Новый ("AddIn.Ком.SenselockKey");


УФ
senselock = Новый COMОбъект("AddIn.SenselockKey");
15. DeniNikitin 36 29.07.20 16:33 Сейчас в теме
(14) Если я ставлю в УФ новый возникает ошибка "Тип не определён AddIn.SenselockKey", я уже всё перепробовал, но ни как!!! Приложил новый вариант обработки разница в одной строке выриант 1 "senselock = Новый ("AddIn.SenselockKey");", "senselock = Новый COMОбъект("AddIn.Ком.SenselockKey");" - второй вариант как в обычной форме!
Прикрепленные файлы:
УправляемыеФормы.epf
16. platonov.e 158 29.07.20 16:38 Сейчас в теме
(15) Только всегда 0 возвращает, хз правильно ли это
Прикрепленные файлы:
17. DeniNikitin 36 29.07.20 16:42 Сейчас в теме
(16) У меня ошибка у тебя файловый или серверный вариант? Вываливается 0 - это нормально у тебя ключ не вставлен! Как запустил?
Прикрепленные файлы:
18. DeniNikitin 36 29.07.20 16:45 Сейчас в теме
У меня как у тебя на скрине на Новый показывает такую ошибку!
Прикрепленные файлы:
19. platonov.e 158 29.07.20 16:46 Сейчас в теме
(18) Посмотри еще лучше, у тебя не как у меня
20. DeniNikitin 36 29.07.20 16:49 Сейчас в теме
(19) Как у тебя! Но у меня вот так происходит!
Прикрепленные файлы:
23. platonov.e 158 29.07.20 16:57 Сейчас в теме
(20)
У меня:
senselock = Новый ("AddIn.Ком.SenselockKey");


У Вас:
senselock = Новый ("AddIn.SenselockKey");
21. DeniNikitin 36 29.07.20 16:49 Сейчас в теме
Платформа у тебя какая?
24. platonov.e 158 29.07.20 16:58 Сейчас в теме
22. DeniNikitin 36 29.07.20 16:52 Сейчас в теме
И всё таки файловый или серверный?
25. platonov.e 158 29.07.20 16:58 Сейчас в теме
26. DeniNikitin 36 29.07.20 17:02 Сейчас в теме
8.3.16.1502 и серверный
Прикрепленные файлы:
27. DeniNikitin 36 29.07.20 17:04 Сейчас в теме
Значит не понятно в чём косяк толи в 1С и они работу с com поменяли, толи надо компоненту переписывать, под новые релизы! Или варианты работы!
28. DeniNikitin 36 29.07.20 17:24 Сейчас в теме
Платформа не причём сейчас запустил файловый вариант на текущей платформе всё работает! Значит разница в варианте запуска серверный или файловый! У кого ни будить есть мысли на этот счёт?
29. platonov.e 158 29.07.20 17:53 Сейчас в теме
(28) Я в самом начале сказал свою мысль - инициализировать компоненту нужно на клиенте, а не на сервере. И держать компоненту нужно на клиенте. Платформу вы ведь на клиенте запускаете, так с чего бы компонента должна быть на сервер тогда?
30. DeniNikitin 36 29.07.20 18:02 Сейчас в теме
(29) Postgres у меня на виртуальной машине Centos, Сервер 1с и клиент на одной машине и в чём разница?
31. VictorRGB2 13 29.07.20 18:37 Сейчас в теме
(28) 8.3.14.15.65
запихнул dll в макет
и через

Макет = ПолучитьМакетНаСервере();
АдресКомпоненты = ПоместитьВоВременноеХранилище(Макет);
ПодключитьВнешнююКомпоненту(АдресКомпоненты, ПрогИД);

взлетело и &НаКлиенте и &НаСервере
32. DeniNikitin 36 30.07.20 03:31 Сейчас в теме
(31)
Макет = ПолучитьМакетНаСервере();
- процедуру можно скинуть?
33. DeniNikitin 36 30.07.20 03:43 Сейчас в теме
(31) А можно поправить в обработке как взлетело кнопка "Вариант3", а то у меня не взлетает что-то?
Прикрепленные файлы:
УправляемыеФормы.epf
36. VictorRGB2 13 30.07.20 10:10 Сейчас в теме
34. DeniNikitin 36 30.07.20 03:46 Сейчас в теме
Макет - это добавленная dll тип был выбран внешняя компонента.
37. VictorRGB2 13 30.07.20 10:11 Сейчас в теме
(34) да
в принципе, я пробовал и как внешняя компонента и как двоичные данные
и так и эдак понимает
35. DeniNikitin 36 30.07.20 03:56 Сейчас в теме
ПодключитьВнешнююКомпоненту(АдресКомпоненты, ПрогИД); - У меня возвращает "Ложь"! Если не сложно поправь обработку, чтобы взлетело!
38. VictorRGB2 13 30.07.20 10:14 Сейчас в теме
(35) по ходу таки в платформе что-о намудрили
у коллеги на 8.3.13 работает
у меня на 8.3.14 заработало
попробовал на 8.3.17 - и обломался на серверной базе по полной программе
39. DeniNikitin 36 30.07.20 11:06 Сейчас в теме
(38) А в dll может быть дело? У меня просто исходники dll есть!
40. VictorRGB2 13 30.07.20 13:58 Сейчас в теме
(39) тут я не силен ...
не смогу помочь
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот