Как загрузить входящие запросы СФР (ФСС) из XML-файла в 1С:ЗУП 3.1

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Налоговый учет IT и автоматизация бизнеса
← На главную

В процессе работы с электронным документооборотом (СЭДО) бухгалтеры часто сталкиваются с ситуацией, когда входящие запросы от СФР (ранее ФСС) приходят в сторонние системы отчетности, такие как «Контур.Экстерн» или «СБИС», а в базу 1С их необходимо загрузить вручную из XML-файлов — для этой задачи пригодится обработка подготовки данных для СФР в 1С:ЗУП. Штатный механизм 1С ориентирован на прямое получение данных через встроенный сервис 1С-Отчетность, и кнопка прямой загрузки из файла в интерфейсе документа ВходящийЗапросФССДляРасчетаПособия часто отсутствует.

В данной статье мы разберем, как реализовать возможность загрузки запросов из XML-файлов, используя встроенные возможности программного кода 1С:ЗУП 3.1, и какие нюансы следует учитывать при обновлении конфигурации.

Использование метода ЗагрузитьСообщение100

Проанализируем структуру документа ВходящийЗапросФССДляРасчетаПособия. В типовой конфигурации вся логика обработки входящих сообщений СЭДО вынесена в модуль менеджера. Ключевым методом для создания документа на основании полученных данных является процедура ЗагрузитьСообщение100. Число «100» в названии соответствует типу сообщения в протоколе СЭДО — «Входящий запрос страхователю».

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


&НаСервере
Процедура ВыполнитьЗагрузкуНаСервере(АдресХранилища, ДатаСообщения, ИННОрганизации)
    // Получаем двоичные данные из временного хранилища
    ДанныеФайла = ПолучитьИзВременногоХранилища(АдресХранилища);
    
    // Инициализируем структуру для результата обработки
    РезультатОбработки = Новый Структура;
    РезультатОбработки.Вставить("Обработано", Ложь);
    РезультатОбработки.Вставить("ОшибкаОбработки", Ложь);
    РезультатОбработки.Вставить("ОписаниеОшибки", "");

    // Находим организацию по ИНН
    ОрганизацияСсылка = Справочники.Организации.НайтиПоРеквизиту("ИНН", ИННОрганизации);
    
    Если ОрганизацияСсылка.Пустая() Тогда
        Сообщить("Организация с указанным ИНН не найдена!");
        Возврат;
    КонецЕсли;

    // В новых релизах ЗУП (начиная с 3.1.27) добавился обязательный параметр Кэш
    Кэш = Новый Соответствие;

    // Вызываем типовой метод загрузки
    Документы.ВходящийЗапросФССДляРасчетаПособия.ЗагрузитьСообщение100(
        ОрганизацияСсылка, 
        ДатаСообщения, 
        ДанныеФайла, 
        Ложь, // ТребуетсяПодтверждение
        РезультатОбработки,
        Кэш
    );

    Если РезультатОбработки.ОшибкаОбработки Тогда
        Сообщить("Ошибка при загрузке: " + РезультатОбработки.ОписаниеОшибки);
    Иначе
        Сообщить("Загрузка успешно завершена.");
    КонецЕсли;
КонецПроцедуры

Разбор параметров процедуры

Рассмотрим подробнее параметры, которые мы передаем в метод ЗагрузитьСообщение100, так как их состав может меняться в зависимости от версии вашей программы:

  1. Страхователь — Ссылка на элемент справочника Организации. Это критически важный параметр, так как запрос должен быть привязан к конкретному юридическому лицу.
  2. ИдентификаторСообщения — Уникальный GUID сообщения. В упрощенных обработках часто используют дату, но для корректной работы СЭДО рекомендуется извлекать реальный MessageID из тегов XML-файла.
  3. ТекстXML — Сами данные запроса. Метод принимает данные в формате ДвоичныеДанные или строку XML.
  4. ТребуетсяПодтверждение — Булево значение. Обычно устанавливается в Ложь при ручной загрузке уже полученных файлов.
  5. Результат — Структура, в которую система запишет итоги работы: были ли ошибки, и создались ли документы.
  6. Кэш — Параметр, появившийся в последних обновлениях (релизы 3.1.27 и выше). Он используется для оптимизации повторных обращений к базе данных при массовой загрузке. Для разовой загрузки достаточно передать Новый Соответствие.

Особенности новых релизов (ЗУП 3.1.27 и выше)

Если при попытке выполнить код вы получаете ошибку «Недостаточно фактических параметров» (быстро исправить её на месте поможет инструмент отладки кода в 1С:Предприятие), это первый признак того, что ваша конфигурация обновилась, и метод ЗагрузитьСообщение100 теперь ожидает шестой параметр — Кэш. Проанализируем ситуацию: в старых версиях процедура принимала 5 аргументов, в новых — 6. Перед вызовом всегда проверяйте количество параметров через Конфигуратор, перейдя в модуль менеджера документа ВходящийЗапросФССДляРасчетаПособия.

Важный совет: Чтобы обработка была универсальной и не «падала» при обновлении, можно использовать поиск ошибок в обработках после обновления (в этом поможет инструмент тестирования и отладки программного кода загрузки) или просто всегда инициализировать переменную Кэш, как показано в примере выше.

Альтернативный способ через регистр сведений

Существует еще один путь, который можно назвать более «мягким» для системы. Вместо прямого вызова создания документа, мы можем поместить данные в технический регистр Входящие сообщения СЭДО ФСС.

Разберем, как это работает: Система СЭДО в 1С построена на принципе разделения получения сообщения и его обработки. Сначала все входящие XML записываются в регистр сведений ВходящиеСообщенияСЭДОФСС (поле Содержимое), а затем регламентное задание или пользователь через форму списка документов запускает процесс «Создать документы на основании».

Если вы программно создадите запись в этом регистре, указав правильный Тип сообщения (100) и заполнив текст XML, то документ ВходящийЗапросФССДляРасчетаПособия появится в списке автоматически после того, как пользователь нажмет кнопку «Обновить» или «Загрузить» в интерфейсе СЭДО. Этот метод безопаснее, так как он задействует все типовые механизмы проверки дублей и логического контроля.

Как получить XML-файл, если кнопка выгрузки недоступна?

Иногда требуется выгрузить уже существующий в базе 1С запрос (например, для передачи в другую базу ЗУП). Если штатной кнопки экспорта нет, воспользуемся небольшой хитростью:

  1. Откройте форму документа Входящий запрос СФР.
  2. Нажмите кнопку «Еще» и выберите команду «Вопрос в поддержку».
  3. В открывшемся окне подготовки запроса система автоматически прикрепляет технические данные.
  4. В нижней части окна в списке файлов вы найдете файл с именем вида ВходящийЗапросФССДляРасчетаПособия_....xml.
  5. Этот файл можно сохранить на диск и использовать для загрузки в другую информационную базу.

Резюмируем: Для успешной загрузки запросов ФСС из XML в ЗУП 3.1 лучше всего использовать метод ЗагрузитьСообщение100, не забывая про параметр Кэш в новых версиях. Это позволит автоматизировать процесс и избежать ручного ввода данных, обеспечив корректный расчет пособий на основании официальных запросов от фонда — для документального взаимодействия с ведомством пригодится комплект печатных форм СФР для 1С:ЗУП.

← На главную