Крипто-Про не ставится,
Не растет кокос.
Итак, по какому-то стечению обстоятельств у вас нет никакой возможности организовать рабочее место, где одновременно есть
а) 1С
б) КриптоПро
в) доступ в интернет
но, слава Тенгри, вы научились добывать файлы ЭЛН из личного кабинета ФСС.
Что остается делать? Правильно - курить код и думать.
По сути, нужно найти место, где 1Ска УЖЕ получила зашифрованный/подписанный файл ЭЛН, расшифровала его, но ЕЩЕ не успела загрузить - и попробовать аккуратно вклиниться туда.
ВНЕЗАПНО, оказывается, что нужная нам точка находится в модуле формы докумета НачислениеПоБольничномуЛисту:
В процедуре КнопкаПолучитьДанныеИзФССНажатие (это обработчик кнопки "ЭЛН из ФСС"):
вызов функции ОбменСведениямиОПособияхСФСС.ПолучитьДанныеЭЛНИзСервисаФСС(...) в третий параметр (ФайлЗашифрованногоОтветаSOAP) возвращает путь к временному файлу с зашифрованным/подписанным ЭЛН,
следом идет вызов ПроверитьПодписьSOAPОтветаЭЛНВФСС(...) - собственно, проверка валидности подписи
и дальше - то самое ценное - непосредственно загрузка данных из файла в документ ОбменСведениямиОПособияхСФСС.ПолучитьДанныеЭЛНИзСервисаФСС(), где третьим параметром (РезультатПроверки.ФайлРасшифрованногоОтветаSOAP) передается путь к расшифрованному XML-файлу.
ВНИМАНИЕ! Эта этот вызов функции приводит к удалению файла после загрузки данных! Просто имейте это ввиду.
В общем, дальше дело за малым. Я сделал так:
Процедура КнопкаПолучитьДанныеИзФССНажатие(Элемент)
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.Фильтр = "XML файлы ЭЛН (*.xml)|*.xml";
ВыборФайла.МножественныйВыбор = Ложь;
ВыборФайла.Заголовок = "Укажите файл с ЭЛН из ФСС";
Если ВыборФайла.Выбрать() Тогда
ИмяФайлаЭЛН = ПолучитьИмяВременногоФайла();
КопироватьФайл(ВыборФайла.ВыбранныеФайлы[0], ИмяФайлаЭЛН);
ОбменВыполненУспешно = ОбменСведениямиОПособияхСФСС.ПолучитьДанныеЭЛНИзСервисаФСС(ДокументОбъект, Неопределено, ИмяФайлаЭЛН, Ложь, Истина);
Если ОбменВыполненУспешно Тогда
ПричинаНетрудоспособностиПриИзменении(ЭлементыФормы.ПричинаНетрудоспособности);
ДатаНачалаСобытияПриИзменении(ЭлементыФормы.ДатаНачалаСобытия);
ДатаНачалаПриИзменении(ЭлементыФормы.ДатаНачала);
КнопкаРассчитатьВсеНажатие(ЭлементыФормы.КнопкаРассчитатьВсе);
Иначе
Сообщить("Ошибка загрузки файла!", СтатусСообщения.Важное);
КонецЕсли;
Состояние();
Иначе
Сообщить("Файл не выбран!");
Возврат;
КонецЕсли;
Возврат;
// далее сохранен оригинальный код процедуры для упрощения последующей поддержки