Автоматизация · 12 мин
Как в 1С открыть файл Excel: способы для пользователя и разработчика
Как в 1С открыть файл Excel: через табличный документ, COM-объект, встроенные функции. Пошаговые инструкции, примеры кода, типичные ошибки и решения.
Задача открыть файл Excel в 1С возникает в двух ситуациях: когда бухгалтеру или менеджеру нужно просто просмотреть или загрузить данные из файла XLS/XLSX, и когда разработчик пишет обработку, которая читает Excel программно. В обоих случаях есть несколько рабочих способов, и выбор зависит от версии платформы (8.2, 8.3), режима работы (тонкий клиент, толстый клиент, веб-клиент) и от того, установлен ли сам Microsoft Excel на компьютере.
Платформа 1С:Предприятие 8.3 умеет открывать файлы Excel штатно, без установленного офисного пакета, — через механизм табличного документа. Это самый простой и безопасный путь для пользователя. Для программной обработки больших файлов и сложных книг с формулами применяют COM-соединение с Excel или чтение через табличный документ в коде. Каждый способ имеет ограничения по скорости, форматам и правам доступа.
Ниже разобраны все основные сценарии: открытие файла вручную из интерфейса, загрузка данных в справочники и документы, программное чтение через ТабличныйДокумент и через COM-объект, а также решение типичных ошибок вроде «Файл не обнаружен» или «Ошибка при вызове конструктора».
Как открыть Excel-файл в 1С вручную без программирования
В платформе 1С:Предприятие 8.3 файл Excel открывается как обычный табличный документ. Для этого в главном меню выберите «Файл — Открыть» (или нажмите Ctrl+O), в диалоге выбора файла укажите тип «Лист Excel (.xls)» или «Лист Excel 2007 (.xlsx)» и выберите нужный файл. Содержимое откроется в отдельном окне в виде табличного документа, который можно просматривать, редактировать, печатать и сохранять в других форматах.
Альтернативный способ — перетащить файл мышью из проводника Windows прямо в окно 1С. Платформа распознает формат и откроет документ. Это удобно, когда файлов много и они лежат в разных папках.
Важно понимать ограничение: при таком открытии 1С показывает данные и простое форматирование, но не выполняет макросы, не пересчитывает связанные формулы из внешних книг и может некорректно отобразить сложные элементы — сводные таблицы, диаграммы, объединённые ячейки с нестандартной заливкой. Если в файле есть формулы, отобразятся их последние вычисленные значения, сохранённые Excel при последнем сохранении файла.
Открытие файла на разных клиентах: тонкий, толстый, веб
Режим клиента влияет на доступные способы. В толстом клиенте доступны все варианты, включая COM-соединение с Excel. В тонком клиенте ручное открытие через «Файл — Открыть» работает полноценно, а вот программный COM-доступ к Excel возможен только на стороне сервера или при явном разрешении модальных вызовов и работы с файловой системой.
В веб-клиенте прямое открытие локального файла ограничено браузерной моделью безопасности: файл сначала нужно передать на сервер (поместить во временное хранилище), и только потом обработать. Типовые конфигурации решают это через обработки загрузки с кнопкой «Выбрать файл», которая использует механизм помещения файлов.
Сравнение способов открытия Excel в 1С
Подходит для просмотра и разового анализа. Не требует Excel и кода. Ограничение: нет программной обработки данных, только просмотр.
Подходит для загрузки данных в коде на любом клиенте и сервере. Не требует установленного Excel. Ограничение: нет доступа к формулам, макросам и нескольким листам сразу без перечитывания.
Полный доступ к книге: листы, формулы, именованные диапазоны. Требует установленный Excel и Windows. Не работает на Linux-сервере и медленнее на больших файлах.
Подходят пользователю без навыков программирования: «Загрузка данных из табличного документа» в БСП-конфигурациях. Ограничение: работают только со структурами, предусмотренными обработкой.
Программное открытие через табличный документ
Универсальный способ прочитать Excel из кода — метод Прочитать() объекта ТабличныйДокумент. Он работает на сервере и на клиенте, не требует установленного Excel и поддерживает форматы XLS и XLSX. Типовой фрагмент кода выглядит так:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Данные\Прайс.xlsx", СпособЧтенияЗначенийТабличногоДокумента.Значение);
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Наименование = ТабДок.Область(НомерСтроки, 1).Текст;
ЦенаСтрокой = ТабДок.Область(НомерСтроки, 2).Текст;
// дальнейшая обработка: поиск номенклатуры, запись в регистр и т.д.
КонецЦикла;
Обратите внимание на параметр СпособЧтенияЗначенийТабличногоДокумента. Значение «Значение» переносит в ячейки вычисленные значения, «Текст» — отображаемое представление. Для загрузки чисел и дат обычно надёжнее читать значения, но помнить, что из табличного документа всё равно возвращается текст, который нужно приводить к нужному типу через функции преобразования и обработку исключений.
Если файл лежит на клиенте, а обработка выполняется на сервере, предварительно поместите файл во временное хранилище (НачатьПомещениеФайла), затем на сервере извлеките его во временный файл и прочитайте. Это стандартный шаблон для файловых и клиент-серверных баз 8.3 в управляемых формах.
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Для Стр = 2 По ТабДок.ВысотаТаблицы Цикл
ТекстЯчейки = ТабДок.Область(Стр, 1).Текст;
КонецЦикла;Программное открытие через COM-объект Excel
Когда нужен доступ к нескольким листам, формулам, именованным диапазонам или форматированию, используют COM-соединение с установленным Excel. Код создаёт объект Excel.Application, открывает книгу и читает данные напрямую из ячеек:
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = Ложь;
Книга = Excel.Workbooks.Open("C:\Данные\Отчет.xlsx");
Лист = Книга.Worksheets(1);
ЗначениеЯчейки = Лист.Cells(2, 1).Value;
Книга.Close(Ложь);
Excel.Quit();
Два обязательных правила при работе через COM. Первое: всегда закрывайте книгу и приложение (Close и Quit), иначе в памяти останутся зависшие процессы EXCEL.EXE, которые блокируют файлы и накапливаются на сервере. Второе: оборачивайте код в Попытка/Исключение с гарантированным вызовом Quit в блоке исключения — иначе любая ошибка чтения оставит процесс висеть.
Ограничения способа существенные: требуется Windows и установленный Microsoft Excel на том компьютере, где выполняется код; на сервере 1С под Linux COM недоступен; скорость построчного чтения больших файлов (десятки тысяч строк) заметно ниже, чем у ТабличныйДокумент.Прочитать. Для массовой загрузки через COM читайте диапазоны целиком через массив (Range.Value), а не по одной ячейке.
Загрузка данных из Excel в справочники и документы
На практике «открыть Excel» чаще всего означает «загрузить из Excel данные в базу»: номенклатуру, цены, контрагентов, табели, остатки. В типовых конфигурациях на Библиотеке стандартных подсистем (УТ, ERP, Бухгалтерия) есть встроенная обработка «Загрузка данных из табличного документа»: откройте нужный список, нажмите «Ещё — Загрузить данные из табличного документа» (в некоторых конфигурациях — «Загрузить из внешнего файла»), скопируйте данные из Excel в таблицу загрузки, сопоставьте колонки реквизитам и выполните загрузку.
Перед загрузкой подготовьте файл: первая строка — заголовки колонок, данные начинаются со второй; числа не должны содержать пробелы-разделители разрядов в текстовом формате; даты лучше привести к виду ДД.ММ.ГГГГ; уберите объединённые ячейки и промежуточные итоги — они ломают построчный разбор. Пустые строки в середине таблицы тоже желательно удалить, иначе обработка создаст пустые элементы или прервётся.
- 1Откройте справочник или документ, куда загружаются данные
- 2Нажмите «Ещё — Загрузить данные из табличного документа»
- 3Скопируйте диапазон из Excel и вставьте в таблицу загрузки
- 4Сопоставьте колонки реквизитам 1С (перетаскиванием или выбором из списка)
- 5Нажмите «Далее», проверьте распознанные данные и выполните загрузку
- 6Откройте несколько созданных элементов и убедитесь, что реквизиты заполнены верно
Типичные ошибки и их решение
Ошибка «Файл не обнаружен» при программном чтении почти всегда означает, что код ищет файл не там: на сервере путь C:\ пользователя не существует. Решение — помещать файл во временное хранилище и извлекать на сервере во временный каталог. Ошибка «Ошибка при вызове конструктора (COMОбъект)» означает, что Excel не установлен на компьютере, где выполняется код, либо не зарегистрирован COM-компонент — переходите на чтение через ТабличныйДокумент.
Если файл XLSX не открывается или открывается пустым, проверьте, не защищён ли он паролем на открытие — такие файлы платформа не прочитает, пароль нужно снять в Excel заранее. Ещё одна частая ситуация: файл фактически имеет другой формат при расширении .xls (например, это HTML-таблица, выгруженная из сторонней системы). Откройте его в Excel и пересохраните как настоящий XLSX.
Как проверить результат и выбрать правильный способ
После открытия или загрузки проверьте результат по контрольным точкам: совпадает ли количество строк с исходным файлом, корректно ли распознались даты и числа, нет ли «обрезанных» наименований из-за переносов строк в ячейках. Для программной загрузки полезно вывести в сообщения количество обработанных строк и количество созданных объектов — расхождение сразу покажет потери.
Выбор способа сводится к простым условиям: нужно просто посмотреть файл — открывайте через «Файл — Открыть»; нужна разовая загрузка в типовой конфигурации — используйте встроенную обработку загрузки; пишете свою обработку без требований к формулам — ТабличныйДокумент.Прочитать; нужны листы, формулы и форматирование и на машине стоит Excel — COM-объект.
Как проверить результат
Совпадает с числом строк данных в исходном файле
Строк меньше — часть потеряна из-за пустых ячеек или ошибок преобразования типов
Даты читаются как даты, числа участвуют в расчётах
Даты стали строками, числа содержат пробелы и не суммируются
После завершения кода процессов не остаётся
Процессы висят в диспетчере задач и держат файл
Все колонки и значения на месте
Пустой документ или ошибка — файл защищён паролем либо имеет несоответствующий расширению формат
Часто задаваемые вопросы
Можно ли открыть Excel в 1С, если Microsoft Office не установлен?
Да. Платформа 1С:Предприятие 8.3 открывает файлы XLS и XLSX собственными средствами — через «Файл — Открыть» в интерфейсе и метод ТабличныйДокумент.Прочитать() в коде. Установленный Excel нужен только для работы через COM-объект.
Почему 1С открывает XLSX пустым или с ошибкой?
Чаще всего файл защищён паролем на открытие или его внутренний формат не соответствует расширению (например, это HTML или CSV, переименованный в .xls). Снимите защиту в Excel или пересохраните файл в настоящем формате XLSX и повторите попытку.
Как открыть конкретный лист книги Excel?
Через ТабличныйДокумент штатно читается активный лист; для выбора листа используйте COM-объект: Excel.Workbooks.Open(Путь).Worksheets(ИмяЛиста). В свежих релизах платформы также доступен объект ЧтениеДанных с поддержкой листов — проверьте синтакс-помощник вашей версии.
Что делать, если файл большой и COM-чтение работает очень медленно?
Не читайте ячейки по одной — заберите диапазон целиком в массив через Range.Value и обрабатывайте его в памяти. Ещё быстрее пересохранить файл в XLSX и читать через ТабличныйДокумент.Прочитать — этот механизм обрабатывает большие таблицы заметно эффективнее построчного COM-обхода.
Как открыть Excel в веб-клиенте 1С?
Напрямую локальный файл веб-клиент не откроет. Используйте обработку с помещением файла во временное хранилище (НачатьПомещениеФайла), затем на сервере извлеките файл и прочитайте через ТабличныйДокумент. В типовых конфигурациях для этого есть готовые обработки загрузки с кнопкой выбора файла.
Можно ли сохранить открытый в 1С файл обратно в формат Excel?
Да. Открытый табличный документ сохраняется через «Файл — Сохранить как» с выбором типа «Лист Excel», а в коде — методом ТабличныйДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Формулы и макросы при этом не сохраняются — переносятся только данные и оформление.
Что важно запомнить
Для просмотра Excel в 1С достаточно «Файл — Открыть» — платформа читает XLS и XLSX без установленного Office. Для загрузки данных в коде используйте ТабличныйДокумент.Прочитать, а COM-объект Excel оставьте для задач с листами и формулами, всегда закрывая приложение через Quit. Перед загрузкой очистите файл от объединённых ячеек, итоговых строк и защиты паролем — это устраняет большинство ошибок.