Работа с 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 21 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) тут я не силен ...
не смогу помочь
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день