В процессе работы с электронным документооборотом (СЭДО) бухгалтеры часто сталкиваются с ситуацией, когда входящие запросы от СФР (ранее ФСС) приходят в сторонние системы отчетности, такие как «Контур.Экстерн» или «СБИС», а в базу 1С их необходимо загрузить вручную из XML-файлов — для этой задачи пригодится обработка подготовки данных для СФР в 1С:ЗУП. Штатный механизм 1С ориентирован на прямое получение данных через встроенный сервис 1С-Отчетность, и кнопка прямой загрузки из файла в интерфейсе документа ВходящийЗапросФССДляРасчетаПособия часто отсутствует.
В данной статье мы разберем, как реализовать возможность загрузки запросов из XML-файлов, используя встроенные возможности программного кода 1С:ЗУП 3.1, и какие нюансы следует учитывать при обновлении конфигурации.
Проанализируем структуру документа ВходящийЗапросФССДляРасчетаПособия. В типовой конфигурации вся логика обработки входящих сообщений СЭДО вынесена в модуль менеджера. Ключевым методом для создания документа на основании полученных данных является процедура ЗагрузитьСообщение100. Число «100» в названии соответствует типу сообщения в протоколе СЭДО — «Входящий запрос страхователю».
Для реализации загрузки нам потребуется создать внешнюю обработку, которая будет считывать XML-файл и передавать его содержимое в этот метод. Рассмотрим программный код, который позволяет это сделать.
&НаСервере
Процедура ВыполнитьЗагрузкуНаСервере(АдресХранилища, ДатаСообщения, ИННОрганизации)
// Получаем двоичные данные из временного хранилища
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресХранилища);
// Инициализируем структуру для результата обработки
РезультатОбработки = Новый Структура;
РезультатОбработки.Вставить("Обработано", Ложь);
РезультатОбработки.Вставить("ОшибкаОбработки", Ложь);
РезультатОбработки.Вставить("ОписаниеОшибки", "");
// Находим организацию по ИНН
ОрганизацияСсылка = Справочники.Организации.НайтиПоРеквизиту("ИНН", ИННОрганизации);
Если ОрганизацияСсылка.Пустая() Тогда
Сообщить("Организация с указанным ИНН не найдена!");
Возврат;
КонецЕсли;
// В новых релизах ЗУП (начиная с 3.1.27) добавился обязательный параметр Кэш
Кэш = Новый Соответствие;
// Вызываем типовой метод загрузки
Документы.ВходящийЗапросФССДляРасчетаПособия.ЗагрузитьСообщение100(
ОрганизацияСсылка,
ДатаСообщения,
ДанныеФайла,
Ложь, // ТребуетсяПодтверждение
РезультатОбработки,
Кэш
);
Если РезультатОбработки.ОшибкаОбработки Тогда
Сообщить("Ошибка при загрузке: " + РезультатОбработки.ОписаниеОшибки);
Иначе
Сообщить("Загрузка успешно завершена.");
КонецЕсли;
КонецПроцедуры
Рассмотрим подробнее параметры, которые мы передаем в метод ЗагрузитьСообщение100, так как их состав может меняться в зависимости от версии вашей программы:
Организации. Это критически важный параметр, так как запрос должен быть привязан к конкретному юридическому лицу.MessageID из тегов XML-файла.ДвоичныеДанные или строку XML.Ложь при ручной загрузке уже полученных файлов.Новый Соответствие.Если при попытке выполнить код вы получаете ошибку «Недостаточно фактических параметров» (быстро исправить её на месте поможет инструмент отладки кода в 1С:Предприятие), это первый признак того, что ваша конфигурация обновилась, и метод ЗагрузитьСообщение100 теперь ожидает шестой параметр — Кэш. Проанализируем ситуацию: в старых версиях процедура принимала 5 аргументов, в новых — 6. Перед вызовом всегда проверяйте количество параметров через Конфигуратор, перейдя в модуль менеджера документа ВходящийЗапросФССДляРасчетаПособия.
Важный совет: Чтобы обработка была универсальной и не «падала» при обновлении, можно использовать поиск ошибок в обработках после обновления (в этом поможет инструмент тестирования и отладки программного кода загрузки) или просто всегда инициализировать переменную Кэш, как показано в примере выше.
Существует еще один путь, который можно назвать более «мягким» для системы. Вместо прямого вызова создания документа, мы можем поместить данные в технический регистр Входящие сообщения СЭДО ФСС.
Разберем, как это работает:
Система СЭДО в 1С построена на принципе разделения получения сообщения и его обработки. Сначала все входящие XML записываются в регистр сведений ВходящиеСообщенияСЭДОФСС (поле Содержимое), а затем регламентное задание или пользователь через форму списка документов запускает процесс «Создать документы на основании».
Если вы программно создадите запись в этом регистре, указав правильный Тип сообщения (100) и заполнив текст XML, то документ ВходящийЗапросФССДляРасчетаПособия появится в списке автоматически после того, как пользователь нажмет кнопку «Обновить» или «Загрузить» в интерфейсе СЭДО. Этот метод безопаснее, так как он задействует все типовые механизмы проверки дублей и логического контроля.
Иногда требуется выгрузить уже существующий в базе 1С запрос (например, для передачи в другую базу ЗУП). Если штатной кнопки экспорта нет, воспользуемся небольшой хитростью:
Входящий запрос СФР.ВходящийЗапросФССДляРасчетаПособия_....xml.Резюмируем: Для успешной загрузки запросов ФСС из XML в ЗУП 3.1 лучше всего использовать метод ЗагрузитьСообщение100, не забывая про параметр Кэш в новых версиях. Это позволит автоматизировать процесс и избежать ручного ввода данных, обеспечив корректный расчет пособий на основании официальных запросов от фонда — для документального взаимодействия с ведомством пригодится комплект печатных форм СФР для 1С:ЗУП.