Работа с данными из Excel в 1С:Предприятие — одна из самых частых задач бухгалтеров, менеджеров и аналитиков. Вне зависимости от того, нужно ли загрузить прайс-лист поставщика, импортировать остатки товаров или перенести данные из внешних отчётов, умение корректно открывать и обрабатывать .xls/.xlsx файлы экономит часы ручного ввода. Однако не все знают, что в есть сразу несколько способов работы с Excel — от простого просмотра до полноценной автоматизации через встроенный язык.

В этой статье разберём все актуальные методы: от базовых (через меню "Файл") до продвинутых (с использованием COM-объектов и ADODB). Особое внимание уделим типичным ошибкам, например, когда не видит файл или выдаёт сообщение о несоответствии форматов. Все инструкции проверены на последних версиях платформы 1С:Предприятие 8.3.22 и актуальны для конфигураций Управление торговлей (УТ 11), Бухгалтерия предприятия (БП 3.0) и Зарплата и управление персоналом (ЗУП 3.1).

Если вы ранее пытались открыть Excel в и сталкивались с проблемами — например, данные подтягивались криво или формулы не сохранялись — здесь найдёте решения. А для программистов приведём примеры кода на встроенном языке, которые можно адаптировать под свои задачи.

📊 Как часто вы работаете с Excel в 1С?
Ежедневно
Несколько раз в неделю
Рядом
Никогда

1. Способ 1: Открытие Excel через меню "Файл" (самый простой)

Этот метод подходит для одноразового просмотра данных или быстрой выгрузки таблицы из в Excel. Он не требует знаний программирования и работает во всех типичных конфигурациях.

Чтобы открыть файл .xlsx или .xls:

  1. Запустите 1С:Предприятие в режиме 1С:Предприятие (не в конфигураторе!).
  2. Перейдите в меню Файл → Открыть.
  3. В диалоговом окне выберите тип файлов Табличные документы (.xls, .xlsx).
  4. Укажите путь к вашему файлу и нажмите Открыть.

После этого содержимое Excel отобразится в отдельном окне как табличный документ. Обратите внимание: в этом режиме вы можете только просматривать данные или копировать их вручную. Для редактирования и сохранения изменений back в Excel потребуется использовать другие способы.

⚠️ Внимание: Если при открытии файла выдаёт ошибку "Не удалось открыть файл", проверьте:
  • 🔹 Версию Microsoft Office на компьютере (должна быть не ниже 2007 для .xlsx).
  • 🔹 Наличие прав на чтение файла (особенно если он находится на сетевом диске).
  • 🔹 Отсутствие блокировки файла другим пользователем или процессом.

Этот способ удобен для быстрого анализа данных, но не подходит для автоматизации. Если вам нужно регулярно загружать данные из Excel в , читайте дальше про более продвинутые методы.

2. Способ 2: Импорт данных через "Внешние обработки"

Многие конфигурации (например, УТ 11 или БП 3.0) имеют встроенные обработки для импорта данных из Excel. Они позволяют не только открывать файлы, но и автоматически создавать на их основе документы, справочники или регистры.

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

  • 📂 Откройте меню Файл → Открыть и выберите тип файлов Внешние обработки (.epf, .erf).
  • 🔍 В стандартных поставках ищите обработки с названиями:
    • "Импорт данных из Excel"
    • "Загрузка данных из табличного документа"
    • "Универсальный обмен данными"
  • 🖱️ После открытия обработки укажите путь к файлу Excel и следуйте инструкциям мастера.

Преимущество этого метода — возможность настройки правил соответствия колонок Excel полям . Например, вы можете указать, что столбец "Наименование товара" в файле должен загружаться в реквизит "Номенклатура" документа "Поступление товаров".

⚠️ Внимание: В некоторых конфигурациях (например, ЗУП 3.1) обработки импорта могут отсутствовать в стандартной поставке. В этом случае их можно скачать с сайта its.1c.ru или портала infostart.ru (раздел "Обработки").

Пример типичных обработок для популярных конфигураций:

Конфигурация Название обработки Что загружает
Управление торговлей 11 "Загрузка номенклатуры из Excel" Справочник номенклатуры, цены, остатки
Бухгалтерия предприятия 3.0 "Импорт банковских выписок" Выписки в формате Excel от банка
Зарплата и управление персоналом 3.1 "Загрузка табеля из Excel" Табеля рабочего времени

Удалите объединённые ячейки|Проверьте формат дат (DD.MM.YYYY)|Убедитесь, что в первой строке — заголовки колонок|Сохраните файл в формате .xlsx (не .xls)-->

3. Способ 3: Использование COM-объекта Excel (для программистов)

Если вам нужно не просто открыть файл, а автоматизировать работу с ним — например, читать данные по расписанию или обрабатывать большие объёмы — используйте COM-объект Excel.Application. Этот метод требует знаний 1С-программирования, но даёт максимальную гибкость.

Пример кода для открытия файла и чтения данных из первого листа:

Процедура ОткрытьExcelФайл()

Попытка

// Создаём COM-объект Excel

Excel = Новый COMОбъект("Excel.Application");

// Открываем книгу (указываем полный путь к файлу)

Книга = Excel.Workbooks.Open("C:\Temp\данные.xlsx");

// Получаем первый лист

Лист = Книга.Worksheets(1);

// Читаем значение из ячейки A1

Сообщить(Лист.Cells(1, 1).Value);

// Закрываем книгу без сохранения

Книга.Close(False);

// Закрываем Excel

Excel.Quit();

Исключение

Сообщить("Ошибка: " + ОписаниеОшибки());

КонецПопытки;

КонецПроцедуры

Этот код можно вставить в модуль любой формы или обработки. Для работы с COM-объектами на компьютере должно быть установлено Microsoft Excel (не достаточно только пакета совместимости).

⚠️ Внимание: При использовании COM-объектов может "подвисать", если не корректно закрыть сессию Excel. Всегда используйте конструкцию Попытка...Исключение и явно вызывайте метод Quit().

Для чтения больших таблиц удобнее использовать цикл. Пример чтения всех данных с листа:

// Определяем последнюю заполненную строку

ПоследняяСтрока = Лист.UsedRange.Rows.Count;

// Определяем последний столбец

ПоследнийСтолбец = Лист.UsedRange.Columns.Count;

// Читаем данные в массив

Для Стр = 1 По ПоследняяСтрока Цикл

Для Столб = 1 По ПоследнийСтолбец Цикл

Значение = Лист.Cells(Стр, Столб).Value;

// Здесь можно обработать значение

КонецЦикла;

КонецЦикла;

💡

Если нужно работать с файлами Excel на сервере 1С (например, в фоне), используйте библиотеку ADODB вместо COM-объекта. Она не требует установленного Excel и работает быстрее.

4. Способ 4: Загрузка через "Универсальный обмен данными"

В конфигурациях на базе БСП (Библиотека стандартных подсистем) есть встроенный механизм "Универсальный обмен данными", который поддерживает импорт из Excel. Он более гибкий, чем стандартные обработки, и позволяет настраивать правила преобразования данных.

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

  1. Откройте меню Администрирование → Обмен данными → Универсальный обмен данными.
  2. Создайте новый обмен с типом "Импорт данных из файла".
  3. Укажите файл Excel и выберите формат "Табличный документ (Excel)".
  4. Настройте соответствие колонок файла и реквизитов объектов .
  5. Запустите загрузку.

Преимущества этого способа:

  • 🔄 Возможность сохранять настройки обмена для повторного использования.
  • 📊 Поддержка сложных правил преобразования (например, конвертация строк в даты).
  • 🔒 Логирование ошибок импорта.

Недостаток — более сложная настройка по сравнению со стандартными обработками. Если вам нужно одноразово загрузить данные, проще использовать Способ 2.

Что делать, если универсальный обмен не видит файл Excel?

Проверьте, что файл сохранён в формате .xlsx (не .xls). В некоторых версиях для работы с .xls требуется дополнительный драйвер.

Также убедитесь, что в настройках обмена выбран правильный "Тип файла" — иногда по умолчанию стоит XML или TXT.

5. Способ 5: Чтение Excel как XML (для файлов .xlsx)

Файлы Excel в формате .xlsx на самом деле представляют собой ZIP-архивы с XML-данными внутри. Это позволяет читать их без использования Microsoft Excel, что полезно для серверных задач или когда COM-объекты недоступны.

Алгоритм чтения .xlsx как XML:

  1. Переименуйте файл данные.xlsx в данные.zip.
  2. Разархивируйте его — внутри будет папка xl/worksheets с файлами sheet1.xml, sheet2.xml и т.д.
  3. Откройте нужный XML-файл и parse его с помощью встроенных средств :
// Чтение XML-файла из Excel

ЧтениеXML = Новый ЧтениеXML;

ЧтениеXML.ОткрытьФайл("C:\Temp\sheet1.xml");

// Парсим данные (упрощённый пример)

Пока ЧтениеXML.Прочитать() Цикл

Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

Если ЧтениеXML.Имя = "c" Тогда // Ячейка в Excel

Значение = ЧтениеXML.ПолучитьАтрибут("r"); // Адрес ячейки (например, A1)

Данные = ЧтениеXML.ПолучитьТекст();

Сообщить("Ячейка " + Значение + ": " + Данные);

КонецЕсли;

КонецЕсли;

КонецЦикла;

Этот метод сложнее в реализации, но имеет преимущества:

  • 🚀 Работает без установленного Microsoft Office.
  • 🔒 Безопаснее для серверных задач (нет риска "зависания" Excel).
  • 📦 Поддерживает большие файлы (ограничение только по памяти сервера).
⚠️ Внимание: Структура XML внутри .xlsx может отличаться в зависимости от версии Excel. Например, файлы, созданные в Excel 2019, могут иметь дополнительные теги по сравнению с Excel 2010.

6. Способ 6: Использование ADODB для работы с Excel

ADODB (ActiveX Data Objects) — это технология доступа к данным, которая позволяет читать Excel-файлы как базы данных. Этот метод подходит для серверных задач и работает быстрее, чем COM-объекты.

Пример кода для чтения данных через ADODB:

Процедура ЧтениеExcelЧерезADODB()

Попытка

// Создаём соединение

Соединение = Новый COMОбъект("ADODB.Connection");

// Строки подключения для Excel 2007+ (.xlsx)

СтрокаСоединения = "Provider=Microsoft.ACE.OLEDB.12.0;" +

"Data Source=C:\Temp\данные.xlsx;" +

"Extended Properties=""Excel 12.0 Xml;HDR=YES""";

Соединение.Open(СтрокаСоединения);

// Выполняем запрос (читаем лист "Лист1")

Запрос = Новый COMОбъект("ADODB.Recordset");

Запрос.Open("SELECT * FROM [Лист1$]", Соединение);

// Обрабатываем данные

Пока Не Запрос.EOF Цикл

Сообщить(Запрос.Fields(0).Value); // Первое поле

Запрос.MoveNext();

КонецЦикла;

// Закрываем соединение

Запрос.Close();

Соединение.Close();

Исключение

Сообщить("Ошибка ADODB: " + ОписаниеОшибки());

КонецПопытки;

КонецПроцедуры

Важные нюансы:

  • 🔧 Для работы ADODB на компьютере должен быть установлен драйвер Microsoft Access Database Engine (скачать можно с сайта Microsoft).
  • 📝 Параметр HDR=YES указывает, что первая строка листа содержит заголовки колонок.
  • 🔄 Для файлов .xls (Excel 97-2003) используйте провайдер Microsoft.Jet.OLEDB.4.0.

Критично! Если вы работаете с Excel на сервере , ADODB — предпочтительный метод, так как он не требует лицензии Microsoft Office и не создаёт видимых экземпляров Excel, которые могут "зависнуть".

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

При работе с Excel в пользователи часто сталкиваются с одними и теми же проблемами. Разберём самые распространённые и способы их устранения.

Ошибка 1: "Не удалось открыть файл. Возможно, файл повреждён или имеет неверный формат"

  • 🔹 Проверьте расширение файла — оно должно точно соответствовать формату (.xlsx или .xls).
  • 🔹 Попробуйте открыть файл в Excel и сохранить его заново (иногда помогает "Сохранить как...").
  • 🔹 Если файл пришёл по почте, возможно, он заблокирован. Нажмите правой кнопкой → СвойстваРазблокировать.

Ошибка 2: "Ошибка при создании COM-объекта"

  • 🔹 Убедитесь, что на компьютере установлен Microsoft Excel (для COM-объектов) или Access Database Engine (для ADODB).
  • 🔹 Проверьте права пользователя — для создания COM-объектов могут потребоваться права администратора.
  • 🔹 Если работаете на сервере, убедитесь, что запущена под учётной записью с соответствующими правами.

Ошибка 3: Данные загружаются криво (даты становятся числами, текст — датами)

  • 🔹 В настройках импорта укажите явное соответствие типов данных (например, столбец с датами должен загружаться как Дата, а не Строка).
  • 🔹 Перед загрузкой отформатируйте ячейки в Excel: выделите столбец → правая кнопка → Формат ячеек → выберите нужный формат.
  • 🔹 Если используете ADODB, добавьте в запрос преобразование типов, например: SELECT CStr([Дата]) AS Дата FROM [Лист1$].

Ошибка 4: "Нет доступа к файлу" (при работе на сетевом диске)

  • 🔹 Проверьте права доступа к папке на сетевом ресурсе.
  • 🔹 Убедитесь, что файл не открыт другим пользователем в режиме редактирования.
  • 🔹 Попробуйте скопировать файл на локальный диск перед обработкой.
💡

Если вы регулярно сталкиваетесь с ошибками при открытии Excel в 1С, создайте тестовый файл с минимальным набором данных и проверьте его загрузку. Это поможет выявить, связаны ли проблемы с самим файлом или с настройками 1С.

8. Автоматизация: как открывать Excel по расписанию

Если вам нужно регулярно загружать данные из Excel (например, ежедневные прайс-листы или банковские выписки), настройте автоматическую обработку. В для этого есть регламентные задания.

Пример настройки регламентного задания для импорта Excel:

  1. Откройте Администрирование → Поддержка и обслуживание → Регламентные задания.
  2. Создайте новое задание с типом "Выполнение обработки".
  3. Укажите обработку для импорта (например, "Загрузка номенклатуры из Excel").
  4. Настройте расписание (ежедневно, еженедельно и т.д.).
  5. В параметрах обработки укажите путь к файлу Excel (можно использовать переменные, например, %Темп%).

Для гибкой автоматизации можно написать собственную обработку на встроенном языке. Пример кода для загрузки файла из папки и его обработки:

Процедура ЗагрузитьExcelАвтоматически()

ПутьКФайлу = "C:\АвтоЗагрузка\прайс.xlsx";

// Проверяем, существует ли файл

Если НЕ ФайлСуществует(ПутьКФайлу) Тогда

Сообщить("Файл не найден: " + ПутьКФайлу);

Возврат;

КонецЕсли;

// Открываем файл через COM-объект

Excel = Новый COMОбъект("Excel.Application");

Книга = Excel.Workbooks.Open(ПутьКФайлу);

Лист = Книга.Worksheets(1);

// Здесь добавляем логику обработки данных

// ...

// Закрываем файл

Книга.Close(False);

Excel.Quit();

КонецПроцедуры

Советы по автоматизации:

  • 📁 Используйте отдельную папку для входящих файлов и архивируйте обработанные (например, перемещайте в C:\АвтоЗагрузка\Archive\).
  • 📧 Настройте оповещения по email о результатах загрузки (в это делается через Планы обмена или Библиотеку стандартных подсистем).
  • 🔄 Проверяйте файлы на корректность перед обработкой (например, что в них есть ожидаемые колонки).

Если файлы приходят по email, можно настроить интеграцию с почтовым клиентом через POP3/IMAP или использовать 1С:Документооборот для автоматической выгрузки вложений.

FAQ: Частые вопросы по работе с Excel в 1С

Можно ли открыть Excel в 1С без установленного Microsoft Office?

Да, но с ограничениями:

  • Для файлов .xlsx можно использовать метод чтения через XML (Способ 5) или ADODB (Способ 6).
  • Для .xls потребуется драйвер Microsoft Jet или конвертация в .xlsx.
  • Функциональность будет ограничена — например, не получится использовать формулы Excel.
Почему при открытии Excel в 1С русские буквы отображаются как "кракозябры"?

Это связано с неверной кодировкой. Решения:

  • Сохраните файл в Excel с кодировкой UTF-8 (в новых версиях Excel это делается при сохранении через Файл → Сохранить как → Инструменты → Параметры веб-страницы).
  • Если используете ADODB, добавьте в строку соединения параметр IMEX=1.
  • Для COM-объектов явно укажите кодировку при чтении: Лист.Cells(1,1).Text вместо .Value.
Как загрузить в 1С только определённый лист из Excel?

При использовании COM-объектов или ADODB можно явно указать лист:

  • Для COM: Лист = Книга.Worksheets("ИмяЛиста").
  • Для ADODB: SELECT * FROM [ИмяЛиста$].

Если имя листа содержит пробелы или специальные символы, заключите его в квадратные скобки: [Мой лист$].

Можно ли редактировать Excel-файл прямо в 1С и сохранять изменения?

Да, но с оговорками:

  • При использовании COM-объектов можно изменять ячейки и сохранять файл: Книга.Save().
  • В режиме просмотра через меню Файл → Открыть редактирование невозможно.
  • Для ADODB редактирование не поддерживается — только чтение.

Пример сохранения изменений через COM:

Лист.Cells(1, 1).Value = "Новое значение";

Книга.Save(); // Сохраняем изменения

Книга.Close();

Как ускорить загрузку больших файлов Excel в 1С?

Рекомендации для работы с файлами от 10 000 строк:

  • 🚀 Используйте ADODB вместо COM-объектов — он работает быстрее.
  • 📥 Разбейте большой файл на несколько меньших (например, по 5 000 строк).
  • 🔄 Отключите обновление экрана во время загрузки: Excel.ScreenUpdating = Ложь;.
  • 🗑️ После обработки явно освобождайте память: Excel = Неопределён;.