|
Подключение библиотеки mesprowrp.dll | ☑ | ||
---|---|---|---|---|
0
busy1
25.12.20
✎
16:22
|
Добрый день. Необходимо использовать mesprowrp.dll для интеграции с ПС Contact. Библиотеку подключил успешно. Но при попытки подписать, подпись не формирует. Может быть кто то имеет успешный опыт использования этой библиотеки. Поделитесь кодом, пожалуйста.
Вот мой пример: Функция СоздатьПодпись(strBuffer) strBuffer = "This Unicode string has 2 characters outside the ASCII range"; ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки(strBuffer,КодировкаТекста.UTF8,Истина); Buffer = Base64Строка(ДвоичныеДанные); SignObj = Новый COMОбъект("System.Object"); Cryptor = Новый COMОбъект("MesProWrp.ContactCryptor"); Cryptor.IsBase64 = True; Signature = Cryptor.Sign(Buffer,SignObj); Возврат Signature; КонецФункции |
|||
1
acht
25.12.20
✎
16:45
|
Традиционный вопрос - а что по этому говорит автор этой dll?
|
|||
2
busy1
25.12.20
✎
16:47
|
Автор говорит, что всё ОК. Все работает.
|
|||
3
acht
25.12.20
✎
16:49
|
(2) И, наверно, показывает это на конкретных примерах?
|
|||
4
busy1
25.12.20
✎
16:50
|
Да только эти примеры в exe и не фига не 1с
|
|||
5
acht
25.12.20
✎
16:51
|
(4) Тогда откуда ожидание, что это вообще подключается к 1С?
|
|||
6
b_ru
25.12.20
✎
16:55
|
А что это за SignObj такой пустой и зачем он Cryptor'у нужен? Наверное в нем же должен быть "This Unicode string has 2 characters outside the ASCII range", а сейчас там пустота
|
|||
7
busy1
25.12.20
✎
17:02
|
Есть документация:
function Sign(constBuffer: OleVariant; outSignature: OleVariant): Integer; stdcall; |
|||
8
busy1
25.12.20
✎
17:10
|
Меня смущает вот эта строка MesProWrp.dll представляет собой Active X библиотеку
|
|||
9
acht
25.12.20
✎
17:18
|
(7) А что еще написано в документации по поводу параметров?
|
|||
10
Kassern
25.12.20
✎
17:21
|
(7) скинь пример кода для других языков
|
|||
11
busy1
25.12.20
✎
17:41
|
(10) Сейчас студию установлю
|
|||
12
busy1
25.12.20
✎
17:43
|
Вот пример от разработчика, который тоже не работает
|
|||
13
busy1
25.12.20
✎
17:43
|
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MesProWrp; namespace SignTest { class Program { static void Main(string[] args) { string Data = "Some text data"; string Data64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(Data)); object SignObj; ContactCryptor Cryptor = new ContactCryptor(); Cryptor.IsBase64 = true; int Res = Cryptor.Sign(Data64, out SignObj); Console.WriteLine($"Sign result:{Res}"); if (Res == 0) { Console.WriteLine($"Signature:{SignObj.ToString()}"); } Console.Write("Press any key"); Console.ReadKey(); } } } |
|||
14
acht
25.12.20
✎
17:46
|
(12) > который тоже не работает
Гм/ |
|||
15
busy1
25.12.20
✎
17:54
|
(14) Возможно я там не так работаю в visual stidio
|
|||
16
busy1
25.12.20
✎
17:56
|
Меня беспокоит out SignObj. А именно out - это указатель. Как это перевести в термины 1с.
|
|||
17
acht
25.12.20
✎
18:04
|
(16) Метод создаст объект нужного типа и вернет указатель на него переменную SignObj. Какой у объекта тип и что с ним делать - в документации. Нет в документации - не будет в 1С.
|
|||
18
acht
25.12.20
✎
18:09
|
Можешь попробовать перед вызовом поставить переменную SignObj = Неопределено и посмотреть, что в ней будет после вызова Sign
|
|||
19
Perchik1984
15.03.21
✎
07:06
|
Приветствую Коллега!.)
Удалось ли решить проблему? У меня сейчас точно такая же задача. |
|||
20
Максим Нижегородец
15.03.21
✎
15:17
|
(19) Если эта DLL - Active X, то работать с ней как с 1С ВК нельзя. Можно попробовать поместить Active X на неуправляемую форму (из этого может, что-нибудь получиться).
|
|||
21
H A D G E H O G s
15.03.21
✎
15:23
|
На всякий случай не забываем делать
Buffer = Base64Строка(ДвоичныеДанные); Buffer = СтрЗаменить(Buffer,Символы.ПС,""); |
|||
22
Perchik1984
15.03.21
✎
15:56
|
(21) Убрать символы переноса строки тоже не помогает. Переменная SignObj = неопределено.
|
|||
23
fisher
15.03.21
✎
15:58
|
Если типы данных параметров с одинэсными не стыкуются, тады ой.
|
|||
24
Perchik1984
15.03.21
✎
16:08
|
Вроде стыкуются
|
|||
25
fisher
15.03.21
✎
16:15
|
(24) Тогда бы у тебя не было проблем с SignObj
|
|||
26
fisher
15.03.21
✎
16:16
|
И кстати. Что не так? Ошибка? Неправильный результат?
|
|||
27
Garykom
гуру
15.03.21
✎
16:19
|
1. Разрядность должна совпадать. Имхается dll 32 бит а сервер 1С часто 64
|
|||
28
Serginio1
15.03.21
✎
17:19
|
https://infostart.ru/1c/articles/448668/ есть поддержка ref и out параметров
https://ru.stackoverflow.com/questions/527763/%d0%9a%d0%b0%d0%ba-%d0%b2%d1%8b%d0%b7%d0%b2%d0%b0%d1%82%d1%8c-%d0%bc%d0%b5%d1%82%d0%be%d0%b4-%d0%b8%d0%b7-c-%d0%b2-1%d0%a1/527802#527802 Можешь написать свою dll для упрощения подписи |
|||
29
Perchik1984
16.03.21
✎
12:07
|
За ссылки спасибо! Все перепробовал. Результат прежний.
busy1 - не поделитесь опытом решения данной проблемы? |
|||
30
Serginio1
16.03.21
✎
18:10
|
(13)И никаких ошибок?
mesprowrp.dll какй разрядности? https://stackoverflow.com/questions/10852634/using-a-32bit-or-64bit-dll-in-c-sharp-dllimport |
|||
31
Perchik1984
17.03.21
✎
10:31
|
Получилось добиться от процедуры выдачу кодов ошибок.
Что сделал: Зарегистрировал компоненту через regsvr32.exe (Ранее это тоже было сделано) Потом в оснастке службы компонентов добавил в Приложения COM+ новое приложение и в компоненты подгрузил mesprowrp.dll Теперь процедура начала выдавать ошибки. Но проблема другая: Коды ошибок, которые выдает процедура не описаны в таблице кодов ошибок в документации к mesprowrp.dll. |
|||
32
Perchik1984
17.03.21
✎
10:32
|
(30) mesprowrp.dll есть 32 и есть 64
Пробовал и ту и другую. |
|||
33
Perchik1984
17.03.21
✎
14:51
|
Есть какие нибудь мысли?
|
|||
34
Garykom
гуру
17.03.21
✎
14:56
|
(33) Есть мысли трясти менагеров которые вам эту хре "продали"
|
|||
35
Garykom
гуру
17.03.21
✎
15:00
|
||||
36
Garykom
гуру
17.03.21
✎
15:07
|
На самом деле очень странно на левом форуме спрашивать как работать со специфической библиотекой.
Надо наверно напрямую обратиться к представителю/разработчику (или кому там еще где ее взяли) и попросить документацию с примерами на разных ЯП? |
|||
37
oleg_km
17.03.21
✎
16:57
|
(36) Ну вообще да, это же наверное Сигнал-КОМ, один из разработчиков криптопровайдера. У них вроде даже форум есть, вот http://forum.signal-com.ru/.
|
|||
38
Perchik1984
18.03.21
✎
08:00
|
Разобрался. Всем спасибо!
Будущим поколениям: 1. Все файлы: mespro.dll, MesProWrp.dll, MesPro.INI - помещаем в папку с запускным файлом 1С, в моем случае C:\Program Files\1cv8\8.3.16.1148\bin\MesPro.ini 2. Помещаем файл MesProWrp.dll в C:\Windows\System32 3. Выполняем регистрацию c:\windows\system32\regsvr32.exe mesprowrp.dll ВНИМАНИЕ! - ТОЛЬКО В ТАКОМ ПОРЯДКЕ РАБОТАЕТ! Содержимое файла MesPro.INI: [Folders] CA Path=C:\QIWI\TestKeys2012\CA Crl Path=C:\QIWI\TestKeys2012\Crls Cert Path=C:\QIWI\TestKeys2012\Openkeys Service Path=C:\QIWI\TestKeys2012\rand.opq Private Key=C:\QIWI\TestKeys2012\Keys\00000001.key Temp Path=c:\tmp [CERTIFICATES] Abonent Cert=C:\QIWI\TestKeys2012\Openkeys\stend2012.pem Corresponder Cert=C:\QIWI\TestKeys2012\Openkeys\stend2012.pem ТОЛЬКО В ТАКОМ ПОРЯДКЕ РАСПОЛАГАЙТЕ ОПИСАНИЕ ПУТЕЙ!!!!! Листинг: Cryptor = Новый COMОбъект("MesProWrp.ContactCryptor"); ФайлОтветаТУ = ""; Ответ = Cryptor.PrepareRequest(СтрокаФайлЗапросаБУ,НастрокиТочки.КодТочки,ФайлОтветаТУ,False,True); |
|||
39
Kassern
18.03.21
✎
09:52
|
(38) Неужели обязательно в System32 пихать библиотеку? Разве нельзя было под админом запустить cmd и прописать regsvr32.exe "ПолныйПутьДоБиблиотеки"?
|
|||
40
Garykom
гуру
18.03.21
✎
10:15
|
(39) Там еще правильный regsvr32 (32 или 64 бит) надо https://support.ucs.ru/ru/book/export/html/8561
|
|||
41
Perchik1984
18.03.21
✎
10:22
|
(39) Пихал по разному. Завелось только так.
|
|||
42
Garykom
гуру
18.03.21
✎
10:40
|
(41) ты когда дела "3. Выполняем регистрацию c:\windows\system32\regsvr32.exe mesprowrp.dll"
в каталоге находился? У тебя выше в 1 копия mesprowrp.dll в bin |
|||
43
Garykom
гуру
18.03.21
✎
10:41
|
(42) *когда делал в каком каталоге находился?
какую копию " mesprowrp.dll" без путей зарегал? |
|||
44
Perchik1984
19.03.21
✎
07:28
|
(43) В каталоге C:\QIWI\
какую копию " mesprowrp.dll" без путей зарегал? - c:\windows\system32\mesprowrp.dll |
|||
45
Garykom
гуру
19.03.21
✎
08:51
|
(44) ыыы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |