При автоматизации бизнес-процессов часто возникает необходимость импортировать данные из внешних файлов формата Excel в 1С. Многие начинающие разработчики сталкиваются с ошибками при попытке использовать COMОбъект("Excel.Application"). Давайте разберем, почему этот метод не стоит использовать и как реализовать надежную загрузку данных с помощью встроенных средств платформы.
Использование COMОбъект для работы с Excel — это устаревший подход, который часто приводит к нестабильной работе системы. Основные проблемы, с которыми вы столкнетесь:
COM, часто не закрывается корректно, оставаясь в памяти сервера и потребляя системные ресурсы.Наиболее надежным и современным способом загрузки файлов Excel является использование встроенного объекта ТабличныйДокумент. Этот метод не требует установки Excel на сервере и корректно работает как в Windows, так и в Linux-среде.
Рассмотрим пошагово, как реализовать чтение файла и выгрузку данных в таблицу значений:
ТабличныйДокумент.Прочитать считываем содержимое файла.ПостроительЗапроса для удобного извлечения данных в ТаблицуЗначений.Давайте посмотрим, как выглядит этот код на практике. Мы считываем файл, выделяем область данных, преобразуем ее в источник данных для построителя и получаем готовую таблицу:
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(ФайлEXCELНаСервере);
// После чтения нам нужно удалить временный файл
УдалитьФайлы(ФайлEXCELНаСервере);
// Определяем область данных (от первой ячейки до размера таблицы)
ОбластьТаблицы = ТабличныйДокумент.Область(1, 1, ТабличныйДокумент.ВысотаТаблицы, ТабличныйДокумент.ШиринаТаблицы);
// Используем построитель запроса для выгрузки данных
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьТаблицы);
ПостроительЗапроса.Выполнить();
ТаблицаДанных = ПостроительЗапроса.Результат.Выгрузить();
При реализации данного алгоритма обратите внимание на следующие моменты:
ПоместитьФайл или ПолучитьФайл). После завершения обработки не забудьте удалить файл с помощью УдалитьФайлы, чтобы не засорять диск.USR1CV8), имеет права на чтение файла в указанной директории.ТабличныйДокумент.Прочитать считывает визуальное представление ячеек. Если в Excel число записано как текст, 1С может интерпретировать его как строку. Перед дальнейшей обработкой в ТаблицеЗначений рекомендуется выполнить приведение типов, если это необходимо.ADODB, однако для стандартных задач (прайс-листы, списки номенклатуры) предложенный метод ТабличныйДокумент является оптимальным.Таким образом, отказ от COMОбъект в пользу ТабличныйДокумент значительно повышает надежность и производительность вашей разработки. Этот код проще в поддержке, не требует сложной настройки окружения и работает стабильно на любых операционных системах.