Имя: Пароль:
1C
 
Модуль ЭДО для 1С Контур.Диадок. Получение сертификатов с сервера 1с
0 ass1c
 
02.02.24
09:52
Приветствую.
Есть купленный модуль ЭДО для 1с (ERP / клиент-сервер) Контур.Диадок.

Diadoc_4_37_0.epf
Версия модуля: 4.37.0.2817
Версия плагина: 1.5.0.308

Обработка умеет читать сертификаты только из хранилища локальной машины - откуда запущена 1с. С сервера 1с по проведенному анализу и консультации в тех. поддержке она сертификаты читать не умеет. Обработка сложна по структуре и по отладке, а сертификаты читает при помощи собственной dllки - не средствами 1с. Причем типовые модули работы с ЭДО в БСП умеют читать сертификаты с сервера 1с.

Кто-нибудь сталкивался ли с такой проблемой и переделывал ли обработку на чтение сертификатов с сервера 1с?
1 Ненавижу 1С
 
гуру
04.02.24
15:16
Аналогичный вопрос. И ещё
Есть ли расширение (не внешняя обработка) для эдо (именно эдо)?
Потому что для работы с сетями есть расширение EDI. И в нем есть поддержка работы с сертификатом на сервере.
2 ПросТак
 
04.02.24
15:26
(0) Насколько я слышал, Контур не дает доступ самопискам, пускают только свое изделие. Даже если вы стырите модуль с БСП, то вы никак ее в обработку Диадока не засунете.
3 ProxyInspector
 
04.02.24
16:00
(0) Обработка умеет читать сертификаты только из хранилища локальной машины.
  Это глупость. Обработка вполне может читать сертификаты из Хранилища сервера. Откуда обработка может знать где она запущена :) У меня реализовано автоматическое подписание исходяших ЭДО в фоновом режиме.
  Для этого пришлось создавать ОбщийМодуль с параметрами &НаСервере.
  На сервер копируются сертификаты. В нашем случае их там от пяти фирм. И в регламентном задании подписываются документы по накладным, уехавшим с фабрики. В сутки наверное тысяч пять.
4 ProxyInspector
 
04.02.24
16:04
У нас 100% самописка. Поэтому пришлось типовую Внешнюю обработку втаскивать во внутреннюю Обработку, Делать внутренние Интеграционный и Подключаемые модуль. А для автоматического подписания документов ОбщийМодуль.
5 ProxyInspector
 
04.02.24
16:26
К слову. С помощью общего модуля я реализовал непосредственно из Формы обработки, подписание выделенных документов в Фоновом режиме. Или синхронизацию с сервером ЭДО в фоновом режиме. Синхронизацию с сервером ЭДО в регламентном задании. Подписание документов в регламентном задании.
  Когда много документов не так раскорячишься.
  Так что дерзайте путь открыт.
6 ПросТак
 
04.02.24
16:40
(5) Этож какая нагрузка на сервер, фоном херачить 5 тысяч накладных. Каждые 5 секунд запрос идет за рабочий день. По шапке бы надавать исполнителю такого решения.
7 ProxyInspector
 
04.02.24
16:51
(6)  Этож какая нагрузка на сервер
  Никакой нагрузки раз в 10 минут запустить регламентное задание подписать сотню документов. Можно конечно посадить 20 человек, что бы они на подписывали эти документы &НаКлиенте. Но нагрузка на сервер будет раз в 20 больше
8 Ненавижу 1С
 
гуру
04.02.24
16:52
и все-таки оно (расширение) существует, ну либо есть попытки его создать:

Функция ОбработкаМодуляЯдра()
    
    Если ИспользуетсяРасширениеКонтурДиадок() Тогда
        Результат = Обработки.КонтурДиадокЯдро.Создать();
    Иначе
        ФайлЯдра = ФайлМодуляЯдра();
        Результат = ВнешниеОбработки_СоздатьБезПредупреждений(ФайлЯдра);
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
9 ProxyInspector
 
04.02.24
16:58
Обработка КонтурДиадок написана достаточно не плохо. На твердую 4. И она хорошо работает как &НаКлиенте так и &НаСервере.
10 ПросТак
 
04.02.24
17:03
(7) А тут можно попасть. Человек уже с работы ушел, а сервер за него только подписал.
11 ProxyInspector
 
04.02.24
17:12
(10) Есть такая этическая проблема. Альтернатива - двадцать человек наподписывали неизвестно что.
12 ass1c
 
05.02.24
09:10
(3) Получается что обработка заточена читать сертификаты с сервера 1с, но из-за каких то моих настроек она сделать это не может? У нас есть типовая бухглатерия и она видит сертификаты с сервера 1с, а обработка запущенная из этой же базы читает только сертификаты с локальной машины. В какую сторону подкопать что бы она читала их также с сервера?
Интересует именно момент авторизации пользователя в обработке под сертификатами для дальнейшей интерактивной работы.
13 ass1c
 
05.02.24
09:30
(3) Я так понял нужно их клиентские алгоритмы получения сертификатов переписывать на серверные
14 ass1c
 
05.02.24
14:47
(1) В общем покопался немного и кое что нашел. Спасибо (3)
В форме авторизации:
Diadoc_4_37_0.epf ВнешняяОбработка.КонтурЭДО.Форма.АвторизацияУправляемая

Меняем эту процедуру с клиента на сервер
&НаСервере
Процедура ЗаполнитьТаблицуСертификатов()

В этой процедуре переопределяем модуль ядра с формы на объект, так как в обработке Ядро в модуле объекта есть аналогичные серверные процедуры...

//+-ass1c
//Модуль_Ядро = Модуль_ЯдроНаКлиенте();
Модуль_Ядро = Модуль_ЯдроНаСервере();
//+-ass1c

В этой процедуре комментируем ошибки которые появляются в результате смены контекста. Далее меняем контекст еще нескольких процедур и в них соответственно переопределяем модуль ядра

&НаСервере
Функция ТекущееСоединение(ОтпечатокСертификата)

    ДанныеСертификата    = Модуль_ЯдроНаСервере().Сертификаты_ДанныеСертификата(ОтпечатокСертификата);
    ОписаниеСертификата    = Модуль_ЯдроНаСервере().Сертификаты_ОписаниеСертификата(ДанныеСертификата);
    СертBase64            = Модуль_ЯдроНаСервере().Сертификаты_СертификатВBase64(ОтпечатокСертификата);
    РасшифрованныйТокен    = Модуль_ЯдроНаСервере().Авторизация_ПоСертификату(ОтпечатокСертификата);
    ГОСТСертификата        = Модуль_ЯдроНаСервере().ПолучитьГОСТСертификата(ОтпечатокСертификата);


&НаСервере
Функция ТекущиеСоединененияВСоответствие()

//&НаКлиенте
&НаСервере
Функция ОписаниеСоединения()

Ну и еще если что вылезет по мелочи. После этого обработка читает сертификаты с сервера 1с - как минимум проводит авторизацию по ним, создает контексты подключения, отображает и открывает документы. Больше пока не проверял дальйнейшую работу.

Думаю дальше еще вылезут подобные места. Но с виду как это можно будет порешать.

Так и не понял почему этот функционал не реализовали в этой обработке - это же удобно...
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший