Вход | Регистрация
 
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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.