|   |   | 
| 
 | Тип 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 регистрировать подскажите кто в курсе ? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |