![]() |
|
Тип OleEnum в 1С | ☑ | ||
---|---|---|---|---|
0
dchumak
21.12.21
✎
11:36
|
Добрый день.
Можно-ли в 1С 8 использовать типы OleEnum для работы с внешней компонентой. Есть компонента для подписи ЭЦП. Код в 1С Попытка KalkanCryptCOM = Новый COMОбъект("KalkanCryptCOMLib.KalkanCryptCOM"); Исключение ВызватьИсключение "Не установлен KalkanCryptCOMLib!"; КонецПопытки; KalkanCryptCOM.Init(); Далее нужно вызвать у нее метод Ответ = KalkanCryptCOM.SignData(АлиасСертификата, Флаги, ЗашифрованнаяДата, ВыходнаяПодпись); Во флаги нужно передать список флагов в типе OleEnum. Есть пример на Delphi, там тип описан вот так type KALKANCRYPTCOM_FLAGS = TOleEnum; const KC_SIGN_DRAFT = $00000001; KC_SIGN_CMS = $00000002; KC_IN_PEM = $00000004; KC_IN_DER = $00000008; KC_IN_BASE64 = $00000010; KC_IN2_BASE64 = $00000020; KC_DETACHED_DATA = $00000040; KC_WITH_CERT = $00000080; KC_WITH_TIMESTAMP = $00000100; KC_OUT_PEM = $00000200; KC_OUT_DER = $00000400; KC_OUT_BASE64 = $00000800; KC_PROXY_OFF = $00001000; KC_PROXY_ON = $00002000; KC_PROXY_AUTH = $00004000; Как подобное реализовать на 1С? Спасибо. 1С:Предприятие 8.3 (8.3.18.1289). |
|||
1
acht
21.12.21
✎
11:43
|
(0) Числами. TOleEnum - это банальное число: https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.OleCtrls.TOleEnum
KC_SIGN_DRAFT = 1; KC_SIGN_CMS = 2; KC_IN_PEM = 4; KC_IN_DER = 8; ... Флаги = KC_SIGN_DRAFT + KC_IN_PEM; |
|||
2
H A D G E H O G s
21.12.21
✎
12:18
|
Осталось только не отыграть хлебушка и понять, что все что после KC_IN_DER - не то, чем кажется и перевести из Hex в Dex
|
|||
3
Garykom
гуру
21.12.21
✎
12:33
|
(2) дык там банально *2
|
|||
4
dchumak
21.12.21
✎
12:33
|
(2) это нужно перевести из 16-ричной в десятичную системы?
KC_IN_BASE64 = $00000010; это KC_IN_BASE64 = 16; ? |
|||
5
Garykom
гуру
21.12.21
✎
12:34
|
(4) угу
точнее ты из 1С юзаешь 10-е же |
|||
6
Garykom
гуру
21.12.21
✎
12:37
|
для общего развития это просто флаги из бит
которые можно удобно складывать получая составные KC_SIGN_DRAFT = 1; //0001 KC_IN_PEM = 4; //0100 KC_SIGN_DRAFT + KC_IN_PEM //0101 |
|||
7
H A D G E H O G s
21.12.21
✎
12:40
|
(3) Это тебе банально.
|
|||
8
Garykom
гуру
21.12.21
✎
12:41
|
(7) так это уровень школьной информатики
|
|||
9
H A D G E H O G s
21.12.21
✎
12:45
|
(8) Ты забыл в каком году живешь? Тут тебе не начало 2000-х.
|
|||
10
dchumak
21.12.21
✎
16:58
|
Спасибо большое, все получилось сделать.
|
|||
11
dchumak
21.12.21
✎
16:58
|
Это было нужно для отправки данных в маркировку Казахстана
|
|||
12
dchumak
21.12.21
✎
17:03
|
KCST_PKCS12 = 1;
Ответ = KalkanCryptCOM.LoadKeyStore(KCST_PKCS12, ПарольСертификата, ПутьКСертификату, ""); KC_SIGN_CMS = 2; KC_IN_BASE64 = 16; KC_WITH_TIMESTAMP = 256; KC_OUT_BASE64 = 2048; Флаги = KC_SIGN_CMS + KC_IN_BASE64 + KC_OUT_BASE64 + KC_WITH_TIMESTAMP; АлиасСертификата = "3c67d5b3fb14684d26b4cc6a543fba065f46fd64"; Ответ = KalkanCryptCOM.SignData(АлиасСертификата, Флаги, ЗашифрованнаяДатаВБейс64, Сигнатура); может кому пригодится. |
|||
13
dchumak
21.12.21
✎
17:04
|
Попытка
KalkanCryptCOM = Новый COMОбъект("KalkanCryptCOMLib.KalkanCryptCOM"); Исключение ВызватьИсключение "Не установлен KalkanCryptCOMLib!"; КонецПопытки; KalkanCryptCOM.Init(); перед этим компоненту берем из комплекта разработчика, также нужно будет поставить корневые и доверительные сертификаты (гост и рса). |
|||
14
makfromkz
26.12.21
✎
19:30
|
(13) dchumak, давай общаться на эту тему, я ею тоже пытаюсь заниматься.
черкани мне на makospanov@mail.ru |
|||
15
gelpen28
25.04.22
✎
20:23
|
Добрый день. не совсем понятно как подключить библиотеку разработчика к 1С достаточно перенести только файл KalkanCryptCOM.dll в папку с платформой или надо
что то переносить дополнительно из SDK, или необходимо всю папку SDK регистрировать подскажите кто в курсе ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |