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