Универсальная система чтения и анализа данных из файлов офисных табличных документов, Microsoft Excel, Office Open XML по настроенным шаблонам.
В систему чтения табличных документов передаем ссылку на файл и шаблон чтения данных из табличного документа. В ответ получаем обработанный список объектов (структур) данных, либо сообщение об ошибке, если файл не соответствует переданному шаблону.
Оглавление
Процесс загрузки
Распространенная задача загрузить какие то данные из таблиц MS Excel в учетную систему.
Такая задача делится на несколько этапов:
- Чтение файла, получить данные из файла, которые возможно обработать в системе;
- Общий анализ данных. Проверить наличие необходимых колонок, прочитать данные в таблицу, удалить строки не подходящие по условия, обработать значения, получить иерархию;
- Индивидуальны анализ данных. Проверить корректность данных в соответствии с логикой использования данных, добавить дополнительные данные из учетной системы;
- Запись данных в учетную систему.
За 1 и 2 этапы отвечает данная подсистема. Что примерно 40 до 90% работы для задач подобного типа.
Разработчику остается реализовать 3 и 4 этапы, при этом 4 этап записи данных может быть общий, для записи данных из различных источников (не только табличных документов), реализованный в Сервисных модулях, с записью данных через универсальную модель объекта.
В началоЧтение файла
Для физического чтения файла табличного документа, есть несколько готовых вариантов. У каждого есть плюсы и минусы.
Средствами 1С, встроенные в платформу функции чтения файлов MS Excel.
Плюсы: работает быстро, читает форматирование (используется для анализа иерархии), не требует установленного офисного пакета, не требует установки ODBC драйвера. Минусы: бывают сбои при чтении некорректных файлов, обычно такие формируют сторонние системы, без использования программ офисного пакета.
ADODB чтение файла, через ODBC драйвер.
Плюсы: работает быстро, читает большинство не корректных файлов, не требует установленного офисного пакета. Минусы: есть только данные без форматирования, требует установки ODBC драйвера.
Excel.Application, получить данные из файла через программный интерфейс Microsoft Office.
Плюсы: читает форматирование, работает с некорректными файлами. Минусы: медленный, требует установленного Microsoft Office на сервере, вместе с учетной системой.
Система позволяет выбрать для чтения любой вариант, подходящий под требования конкретного случая. Какой вариант выбрать?
- В большинстве случаев подходит Средствами 1С.
- Если файл не корректный придется использовать ADODB при условии, что нет необходимости в анализе иерархии данных.
- Если файл не корректный и необходима иерархия данных, только Excel.Application.
Общий анализ
Задачи общего анализа табличного документа.
- Найти область с данными в табличном документе. Определить номера загружаемых колонок и первую строку данных. Не обязательный этап, номера колонок и первая строка данных могут быть заданы в шаблоне, готовыми номерами, а не фразами поиска;
- Проверить подходит ли строка под заданные критерии, если не подходит пропустить;
- Проверить является ли строка группой, либо объектом данных, если в шаблоне настроен анализ групп, и группы расположены в строках:
- Если группа, добавить группу в список;
- Если объект, добавить объект данных в список;
- Преобразовать значения строки, по выбранным в шаблоне правилам обработки текста;
- Конвертировать значения в число, если такой признак выбран в шаблоне.
После чтения и общего анализа система возвращает для дальнейшей обработки и записи данных в систему:
- Список колонок, с ключами и заголовками;
- Список объектов, со именованными свойствами соответствующими ключам заголовков, плюс служебные свойства:
- Идентификатор группы;
- Номер строки в файле (может пригодиться для записи данных);
- Список групп с иерархией, либо без в зависимости от настроек шаблона.
В началоВажно! Список объектов с именованными свойствами, а не номерами колонок из исходного файла. Что позволяет стандартизировать список объектов. Независимо от структуры исходного файла, на выходе всегда список стандартных объектов с именами свойств прописанными в шаблоне.