К статье
Практический материал

Автоматизация · 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. Ограничение: нет доступа к формулам, макросам и нескольким листам сразу без перечитывания.

COM-объект Excel.Application

Полный доступ к книге: листы, формулы, именованные диапазоны. Требует установленный Excel и Windows. Не работает на Linux-сервере и медленнее на больших файлах.

Типовые обработки загрузки

Подходят пользователю без навыков программирования: «Загрузка данных из табличного документа» в БСП-конфигурациях. Ограничение: работают только со структурами, предусмотренными обработкой.

Программное открытие через табличный документ

Универсальный способ прочитать Excel из кода — метод Прочитать() объекта ТабличныйДокумент. Он работает на сервере и на клиенте, не требует установленного Excel и поддерживает форматы XLS и XLSX. Типовой фрагмент кода выглядит так:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Прочитать("C:\Данные\Прайс.xlsx", СпособЧтенияЗначенийТабличногоДокумента.Значение);

Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл

Наименование = ТабДок.Область(НомерСтроки, 1).Текст;

ЦенаСтрокой = ТабДок.Область(НомерСтроки, 2).Текст;

// дальнейшая обработка: поиск номенклатуры, запись в регистр и т.д.

КонецЦикла;

Обратите внимание на параметр СпособЧтенияЗначенийТабличногоДокумента. Значение «Значение» переносит в ячейки вычисленные значения, «Текст» — отображаемое представление. Для загрузки чисел и дат обычно надёжнее читать значения, но помнить, что из табличного документа всё равно возвращается текст, который нужно приводить к нужному типу через функции преобразования и обработку исключений.

Если файл лежит на клиенте, а обработка выполняется на сервере, предварительно поместите файл во временное хранилище (НачатьПомещениеФайла), затем на сервере извлеките его во временный файл и прочитайте. Это стандартный шаблон для файловых и клиент-серверных баз 8.3 в управляемых формах.

bsl
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Для Стр = 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 в таблицу загрузки, сопоставьте колонки реквизитам и выполните загрузку.

Перед загрузкой подготовьте файл: первая строка — заголовки колонок, данные начинаются со второй; числа не должны содержать пробелы-разделители разрядов в текстовом формате; даты лучше привести к виду ДД.ММ.ГГГГ; уберите объединённые ячейки и промежуточные итоги — они ломают построчный разбор. Пустые строки в середине таблицы тоже желательно удалить, иначе обработка создаст пустые элементы или прервётся.

Порядок загрузки данных из Excel в типовой конфигурации
  1. 1
    Откройте справочник или документ, куда загружаются данные
  2. 2
    Нажмите «Ещё — Загрузить данные из табличного документа»
  3. 3
    Скопируйте диапазон из Excel и вставьте в таблицу загрузки
  4. 4
    Сопоставьте колонки реквизитам 1С (перетаскиванием или выбором из списка)
  5. 5
    Нажмите «Далее», проверьте распознанные данные и выполните загрузку
  6. 6
    Откройте несколько созданных элементов и убедитесь, что реквизиты заполнены верно

Типичные ошибки и их решение

Ошибка «Файл не обнаружен» при программном чтении почти всегда означает, что код ищет файл не там: на сервере путь C:\ пользователя не существует. Решение — помещать файл во временное хранилище и извлекать на сервере во временный каталог. Ошибка «Ошибка при вызове конструктора (COMОбъект)» означает, что Excel не установлен на компьютере, где выполняется код, либо не зарегистрирован COM-компонент — переходите на чтение через ТабличныйДокумент.

Если файл XLSX не открывается или открывается пустым, проверьте, не защищён ли он паролем на открытие — такие файлы платформа не прочитает, пароль нужно снять в Excel заранее. Ещё одна частая ситуация: файл фактически имеет другой формат при расширении .xls (например, это HTML-таблица, выгруженная из сторонней системы). Откройте его в Excel и пересохраните как настоящий XLSX.

Типичные ошибки
01
Чтение файла по локальному пути на сервере — сервер не видит диск пользователя; решение: временное хранилище и временный файл на сервере
02
Отсутствие Excel.Quit() в коде COM — накапливаются зависшие процессы и блокировки файлов
03
Попытка прочитать защищённый паролем файл — платформа выдаёт ошибку или пустой документ; снимите защиту заранее
04
Числа с пробелами-разделителями и текстовые даты — загрузка превращает их в строки; приводите типы в коде или чистите файл до загрузки
05
Объединённые ячейки и строки итогов в середине таблицы — сбивают построчный разбор и создают лишние записи

Как проверить результат и выбрать правильный способ

После открытия или загрузки проверьте результат по контрольным точкам: совпадает ли количество строк с исходным файлом, корректно ли распознались даты и числа, нет ли «обрезанных» наименований из-за переносов строк в ячейках. Для программной загрузки полезно вывести в сообщения количество обработанных строк и количество созданных объектов — расхождение сразу покажет потери.

Выбор способа сводится к простым условиям: нужно просто посмотреть файл — открывайте через «Файл — Открыть»; нужна разовая загрузка в типовой конфигурации — используйте встроенную обработку загрузки; пишете свою обработку без требований к формулам — ТабличныйДокумент.Прочитать; нужны листы, формулы и форматирование и на машине стоит Excel — COM-объект.

Контрольные точки

Как проверить результат

Количество строк после загрузки
Норма

Совпадает с числом строк данных в исходном файле

Тревожный признак

Строк меньше — часть потеряна из-за пустых ячеек или ошибок преобразования типов

Даты и числа в загруженных объектах
Норма

Даты читаются как даты, числа участвуют в расчётах

Тревожный признак

Даты стали строками, числа содержат пробелы и не суммируются

Процессы EXCEL.EXE после 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. Перед загрузкой очистите файл от объединённых ячеек, итоговых строк и защиты паролем — это устраняет большинство ошибок.