Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Подключение библиотеки mesprowrp.dll

Подключение библиотеки mesprowrp.dll
Я
   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;
    
КонецФункции
   acht
 
1 - 25.12.20 - 16:45
Традиционный вопрос - а что по этому говорит автор этой dll?
   busy1
 
2 - 25.12.20 - 16:47
Автор говорит, что всё ОК. Все работает.
   acht
 
3 - 25.12.20 - 16:49
(2) И, наверно, показывает это на конкретных примерах?
   busy1
 
4 - 25.12.20 - 16:50
Да только эти примеры в exe и не фига не 1с
   acht
 
5 - 25.12.20 - 16:51
(4) Тогда откуда ожидание, что это вообще подключается к 1С?
   b_ru
 
6 - 25.12.20 - 16:55
А что это за SignObj такой пустой и зачем он Cryptor'у нужен? Наверное в нем же должен быть "This Unicode string has 2 characters outside the ASCII range", а сейчас там пустота
   busy1
 
7 - 25.12.20 - 17:02
Есть документация:
function Sign(constBuffer: OleVariant; outSignature: OleVariant): Integer; stdcall;
   busy1
 
8 - 25.12.20 - 17:10
Меня смущает вот эта строка MesProWrp.dll представляет собой Active X библиотеку
   acht
 
9 - 25.12.20 - 17:18
(7) А что еще написано в документации по поводу параметров?
   Kassern
 
10 - 25.12.20 - 17:21
(7) скинь пример кода для других языков
   busy1
 
11 - 25.12.20 - 17:41
(10) Сейчас студию установлю
   busy1
 
12 - 25.12.20 - 17:43
Вот пример от разработчика, который тоже не работает
   busy1
 
13 - 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();
        }
    }
}
   acht
 
14 - 25.12.20 - 17:46
(12) > который тоже не работает
Гм/
   busy1
 
15 - 25.12.20 - 17:54
(14) Возможно я там не так работаю в visual stidio
   busy1
 
16 - 25.12.20 - 17:56
Меня беспокоит out SignObj. А именно out - это указатель. Как это перевести в термины 1с.
   acht
 
17 - 25.12.20 - 18:04
(16) Метод создаст объект нужного типа и вернет указатель на него переменную SignObj. Какой у объекта тип и что с ним делать - в документации. Нет в документации - не будет в 1С.
   acht
 
18 - 25.12.20 - 18:09
Можешь попробовать перед вызовом поставить переменную SignObj = Неопределено и посмотреть, что в ней будет после вызова Sign
   Perchik1984
 
19 - 15.03.21 - 07:06
Приветствую Коллега!.)
Удалось ли решить проблему? У меня сейчас точно такая же задача.
   МаксимНижегородец
 
20 - 15.03.21 - 15:17
(19) Если эта DLL - Active X, то работать с ней как с 1С ВК нельзя. Можно попробовать поместить Active X на неуправляемую форму (из этого может, что-нибудь получиться).
   H A D G E H O G s
 
21 - 15.03.21 - 15:23
На всякий случай не забываем делать

Buffer = Base64Строка(ДвоичныеДанные); 

Buffer = СтрЗаменить(Buffer,Символы.ПС,"");
   Perchik1984
 
22 - 15.03.21 - 15:56
(21) Убрать символы переноса строки тоже не помогает. Переменная SignObj = неопределено.
   fisher
 
23 - 15.03.21 - 15:58
Если типы данных параметров с одинэсными не стыкуются, тады ой.
   Perchik1984
 
24 - 15.03.21 - 16:08
Вроде стыкуются
   fisher
 
25 - 15.03.21 - 16:15
(24) Тогда бы у тебя не было проблем с SignObj
   fisher
 
26 - 15.03.21 - 16:16
И кстати. Что не так? Ошибка? Неправильный результат?
   Garykom
 
27 - 15.03.21 - 16:19
1. Разрядность должна совпадать. Имхается dll 32 бит а сервер 1С часто 64
   Serginio1
 
28 - 15.03.21 - 17:19
   Perchik1984
 
29 - 16.03.21 - 12:07
За ссылки спасибо! Все перепробовал. Результат прежний.
busy1 - не поделитесь опытом решения данной проблемы?
   Serginio1
 
30 - 16.03.21 - 18:10
(13)И никаких ошибок?
mesprowrp.dll какй разрядности?
https://stackoverflow.com/questions/10852634/using-a-32bit-or-64bit-dll-in-c-sharp-dllimport
 
 
   Perchik1984
 
31 - 17.03.21 - 10:31
Получилось добиться от процедуры выдачу кодов ошибок.
Что сделал:
Зарегистрировал компоненту через regsvr32.exe (Ранее это тоже было сделано)
Потом в оснастке службы компонентов добавил в Приложения COM+ новое приложение и в компоненты подгрузил mesprowrp.dll

Теперь процедура начала выдавать ошибки. Но проблема другая:
Коды ошибок, которые выдает процедура не описаны в таблице кодов ошибок в документации к mesprowrp.dll.
   Perchik1984
 
32 - 17.03.21 - 10:32
(30) mesprowrp.dll есть 32 и есть 64
Пробовал и ту и другую.
   Perchik1984
 
33 - 17.03.21 - 14:51
Есть какие нибудь мысли?
   Garykom
 
34 - 17.03.21 - 14:56
(33) Есть мысли трясти менагеров которые вам эту хре "продали"
   Garykom
 
35 - 17.03.21 - 15:00
   Garykom
 
36 - 17.03.21 - 15:07
На самом деле очень странно на левом форуме спрашивать как работать со специфической библиотекой.

Надо наверно напрямую обратиться к представителю/разработчику (или кому там еще где ее взяли) и попросить документацию с примерами на разных ЯП?
   oleg_km
 
37 - 17.03.21 - 16:57
(36) Ну вообще да, это же наверное Сигнал-КОМ, один из разработчиков криптопровайдера. У них вроде даже форум есть, вот http://forum.signal-com.ru/.
   Perchik1984
 
38 - 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);
   Kassern
 
39 - 18.03.21 - 09:52
(38) Неужели обязательно в System32 пихать библиотеку? Разве нельзя было под админом запустить cmd и прописать regsvr32.exe "ПолныйПутьДоБиблиотеки"?
   Garykom
 
40 - 18.03.21 - 10:15
(39) Там еще правильный regsvr32 (32 или 64 бит) надо https://support.ucs.ru/ru/book/export/html/8561
   Perchik1984
 
41 - 18.03.21 - 10:22
(39) Пихал по разному. Завелось только так.
   Garykom
 
42 - 18.03.21 - 10:40
(41) ты когда дела "3. Выполняем регистрацию c:\windows\system32\regsvr32.exe mesprowrp.dll"
в каталоге находился?
У тебя выше в 1 копия mesprowrp.dll в bin
   Garykom
 
43 - 18.03.21 - 10:41
(42) *когда делал в каком каталоге находился?
какую копию " mesprowrp.dll" без путей зарегал?
   Perchik1984
 
44 - 19.03.21 - 07:28
(43) В каталоге C:\QIWI\
какую копию " mesprowrp.dll" без путей зарегал? - c:\windows\system32\mesprowrp.dll
   Garykom
 
45 - 19.03.21 - 08:51
(44) ыыы


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.