Загрузка ЭЛН (электронных листов нетрудоспособности) из файлов

Публикация № 998437

Обмен - Обмен с другими системами

ФСС электронные больничные ЭЛН

2
Что делать, если по каким-то причинам нет возможности разместить 1С и Крипто-Про на одном рабочем месте? Правильно - открывать конфигуратор и пилить. Благо, там не сложно. Непосредственно решение для УПП 1.3. Для ЗиК 2.5 и Комплексной автоматизации должно быть аналогично.

Крипто-Про не ставится,

Не растет кокос.

Итак, по какому-то стечению обстоятельств у вас нет никакой возможности организовать рабочее место, где одновременно есть

а) 1С

б) КриптоПро

в) доступ в интернет

но, слава Тенгри, вы научились добывать файлы ЭЛН из личного кабинета ФСС.

 

Что остается делать? Правильно - курить код и думать. 

По сути, нужно найти место, где 1Ска УЖЕ получила зашифрованный/подписанный файл ЭЛН, расшифровала его, но ЕЩЕ не успела загрузить - и попробовать аккуратно вклиниться туда.

ВНЕЗАПНО, оказывается, что нужная нам точка находится в модуле формы докумета НачислениеПоБольничномуЛисту:

В процедуре КнопкаПолучитьДанныеИзФССНажатие (это обработчик кнопки "ЭЛН из ФСС"):

вызов функции ОбменСведениямиОПособияхСФСС.ПолучитьДанныеЭЛНИзСервисаФСС(...)  в третий параметр (ФайлЗашифрованногоОтветаSOAP) возвращает путь к временному файлу с зашифрованным/подписанным ЭЛН,

следом идет вызов ПроверитьПодписьSOAPОтветаЭЛНВФСС(...) - собственно, проверка валидности подписи

и дальше - то самое ценное - непосредственно загрузка данных из файла в документ ОбменСведениямиОПособияхСФСС.ПолучитьДанныеЭЛНИзСервисаФСС(), где третьим параметром (РезультатПроверки.ФайлРасшифрованногоОтветаSOAP) передается путь к расшифрованному XML-файлу. 

ВНИМАНИЕ! Эта этот вызов функции приводит к удалению файла после загрузки данных! Просто имейте это ввиду.

 

В общем, дальше дело за малым. Я сделал так:

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

    // далее сохранен оригинальный код процедуры для упрощения последующей поддержки


 

2

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение