При выполнении интеграции с банками для автоматизации выплат заработной платы часто возникает потребность в массовой загрузке лицевых счетов сотрудников. В типовой конфигурации 1С:Управление производственным предприятием (УПП) отсутствует универсальная кнопка или встроенная обработка, которая позволяла бы «одним кликом» импортировать данные из произвольного банковского XML-файла. Это связано с тем, что каждый банк использует собственный формат обмена данными. В данной статье мы разберем, как реализовать такую загрузку самостоятельно.
Для того чтобы 1С могла автоматически считать файл, он должен быть строго стандартизирован. Однако на практике спецификации XML у Сбербанка и других кредитных организаций различаются. Разработчики 1С не могут предусмотреть все вариации форматов в одном типовом механизме. Поэтому наиболее эффективным и надежным путем решения задачи является создание внешней обработки.
Давайте разберем процесс создания обработки для загрузки лицевых счетов шаг за шагом.
XML-файл в любом редакторе (например, XML Editor или Notepad++). Ваша задача — понять иерархию тегов. Вам нужно найти, где хранятся ФИО сотрудника, его ИНН, СНИЛС и сам номер лицевого счета.ЧтениеXML для последовательного перебора элементов файла или ФабрикуXDTO, если банк предоставил XSD-схему данных.СотрудникиОрганизаций. Используйте уникальные идентификаторы: ИНН и СНИЛС.РегистреСведений под названием ЛицевыеСчетаСотрудниковОрганизаций. При записи важно корректно указать период, чтобы не нарушить историю выплат.Рассмотрим упрощенный пример того, как можно организовать чтение файла в 1С с использованием объекта ЧтениеXML:
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ИмяФайла);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "Сотрудник" Тогда
// Считываем данные из атрибутов или вложенных тегов
ФИО = Чтение.ПолучитьАтрибут("ФИО");
НомерСчета = Чтение.ПолучитьАтрибут("Счет");
// Здесь выполняется поиск сотрудника в базе и запись в регистр
КонецЕсли;
КонецЦикла;
Чтение.Закрыть();
При написании кода учитывайте следующие аспекты:
ЛицевыеСчетаСотрудниковОрганизаций — это периодический регистр. Если сотрудник меняет банк, старая запись должна закрываться, а новая — открываться нужной датой.Если формат файла, предоставленный банком, кажется вам слишком сложным для разбора через XML-объекты, можно воспользоваться промежуточным решением: преобразовать XML в текстовый формат (например, TXT или CSV) и загрузить данные через простую обработку чтения текстового документа. Однако для профессиональной разработки мы рекомендуем использовать именно встроенный в платформу XML-парсер — это обеспечит устойчивость решения к изменениям структуры файла в будущем.
Таким образом, написание собственной внешней обработки — это стандартная практика при работе с УПП. Анализ тегов, правильное сопоставление сотрудников по ИНН/СНИЛС и грамотная запись в регистр ЛицевыеСчетаСотрудниковОрганизаций позволят вам полностью автоматизировать процесс выплаты зарплаты на карты.