Как прочитать данные из Excel в 1С: 5 рабочих методов с примерами

Импорт данных из Microsoft Excel в 1С:Предприятие часто сопровождается ошибками форматирования, несоответствием типов данных или проблемами с кодировкой — особенно если файлы создавались в разных версиях программ. Например, при попытке загрузить прайс-лист с формулами или таблицу с объединёнными ячейками система может выдать сообщение "Недопустимый формат данных" или вовсе не распознать колонки. Проблема усугубляется, если в Excel используются пользовательские форматы чисел (например, с валютами) или даты в нестандартном виде.

В 80% случаев сбой происходит из-за того, что 1С ожидает данные в строго типизированном виде, тогда как Excel хранит их в универсальном формате. Например, дата "01.01.2026" в Excel может интерпретироваться как число 45265 (количество дней с 1900 года), а 1С требует её в формате Дата(2026,1,1). Решить это можно либо предварительной обработкой файла, либо настройкой правил конвертации прямо в коде загрузки. Ниже разберём оба подхода — от ручного импорта через "Все функции" до автоматизированных скриптов на встроенном языке.

1. Подготовка Excel-файла перед импортом в 1С

Перед загрузкой данных обязательно проверьте файл на соответствие трём ключевым требованиям 1С:

  • 📊 Структура таблицы: первая строка должна содержать заголовки колонок (без объединённых ячеек), данные начинаются со второй строки. Если в Excel есть пустые строки или столбцы — удалите их, иначе 1С создаст лишние поля.
  • 🔢 Форматы данных: даты должны быть в виде ДД.ММ.ГГГГ (не текст!), числа — без разделителей тысяч (например, 1000, а не 1 000). Валюты лучше разделить на два столбца: сумма и код валюты.
  • 🔍 Уникальные идентификаторы: если загружаете справочники (например, номенклатуру), убедитесь, что в Excel есть колонка с уникальным кодом или артикулом — это поможет избежать дублей.

Особое внимание уделите объединённым ячейкам — 1С не умеет их обрабатывать. Если они есть, разбейте их на отдельные ячейки или перенесите данные в отдельный столбец. Также удалите все условные форматы, формулы и комментарии — они могут вызвать ошибку при чтении. Для проверки сохраните файл в формате .csv (через "Сохранить как") и откройте его в блокноте: если данные отображаются корректно, проблем с импортом не будет.

⚠️ Внимание: Если в Excel используются пользовательские форматы (например, для отображения нулей как прочерков), 1С прочитает их как пустые значения. Перед экспортом примените к данным стандартный формат ("Общий" или "Текстовый").

2. Ручное чтение данных через "Все функции"

Самый простой способ импорта — использование встроенного механизма Загрузка данных из табличного документа. Он подходит для разовых операций и не требует программирования. Инструкция:

  1. Откройте 1С в режиме Предприятие и перейдите в раздел, куда нужно загрузить данные (например, "Справочники" → "Номенклатура").
  2. Нажмите ФайлОткрыть и выберите ваш Excel-файл. Система откроет его в виде табличного документа.
  3. Выделите диапазон ячеек с данными (включая заголовки) и скопируйте их (Ctrl+C).
  4. Вернитесь в 1С, нажмите Все функции (или СервисОбмен даннымиЗагрузка данных из табличного документа).
  5. В открывшемся окне вставьте данные (Ctrl+V) и настройте соответствие колонок полям 1С.

Этот метод работает для небольших файлов (до 5 000 строк), но имеет ограничения:

  • ❌ Не поддерживает формулы и вычисляемые поля.
  • ❌ Может неправильно интерпретировать даты и числа с разделителями.
  • ❌ Требует ручного сопоставления колонок при каждом импорте.
Формат файла Поддерживается? Ограничения
.xlsx (Excel 2007+) Да Могут теряться форматы ячеек
.xls (Excel 97-2003) Да Ограничение на 65 536 строк
.csv Да Нет поддержки нескольких листов
.ods (OpenOffice) Нет Требуется конвертация в .xlsx
📊 Какой формат файлов вы чаще используете для импорта в 1С?
.xlsx
.xls
.csv
Другой

3. Автоматизированная загрузка через внешнюю обработку

Для регулярного импорта данных удобнее использовать внешние обработки. Они позволяют сохранять настройки сопоставления полей и обрабатывать большие объёмы данных. Скачать готовые обработки можно на сайте Infostart или в каталоге 1С. Популярные решения:

  • 📄 "Универсальная загрузка из Excel" (поддерживает шаблоны и правила преобразования).
  • 🔄 "Обмен данными с Excel" (двусторонняя синхронизация).
  • 📊 "Загрузка прайс-листов" (специализированная для номенклатуры и цен).

Пример настройки обработки:

  1. Скачайте и установите обработку через ФайлОткрыть.
  2. Укажите путь к Excel-файлу и выберите лист.
  3. Сопоставьте колонки файла с полями 1С (например, колонку "Артикул" — с реквизитом "Код" справочника "Номенклатура").
  4. Задайте правила преобразования (например, для колонки с датой укажите формат ДД.ММ.ГГГГ).
  5. Запустите загрузку и проверьте логи ошибок.
⚠️ Внимание: Если в Excel есть колонки с формулами (например, =СУММ(B2:C2)), обработка прочитает только текущие значения, а не сами формулы. Для динамических данных лучше использовать связь через COM-соединение (см. раздел 5).
Список проверенных обработок для 1С 8.3

1. "Универсальный обмен данными" (бесплатно, поддерживает XLSX/CSV)

2. "Загрузчик Excel" от фирмы "Альтсофт" (платная, с техподдержкой)

3. "ExcelImporter" (с открытым исходным кодом, гибкие настройки)

4. "1С:Интеграция с Office" (официальное решение от 1С, требует лицензию)

4. Чтение Excel через встроенный язык 1С (программный метод)

Для полной автоматизации импорта можно написать скрипт на встроенном языке 1С. Этот метод требует знаний программирования, но даёт максимальную гибкость. Ниже пример кода для чтения данных из .xlsx с использованием COM-объекта:

Процедура ЗагрузитьИзExcel()

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

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

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

Книга = Excel.Workbooks.Open("C:\data\price.xlsx");

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

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

// Чтение данных начиная со второй строки

Строка = 2;

Пока Истина Цикл

// Проверяем, что ячейка не пустая

Если Лист.Cells(Строка, 1).Value = Неопределено Тогда

Прервать;

КонецЕсли;

// Чтение данных из колонок A, B, C

Артикул = Лист.Cells(Строка, 1).Value;

Наименование = Лист.Cells(Строка, 2).Value;

Цена = Лист.Cells(Строка, 3).Value;

// Создаём новый элемент справочника

НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();

НоваяНоменклатура.Код = Артикул;

НоваяНоменклатура.Наименование = Наименование;

НоваяНоменклатура.Цена = Цена;

НоваяНоменклатура.Записать();

Строка = Строка + 1;

КонецЦикла;

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

Книга.Close(Ложь);

Excel.Quit();

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

Ключевые моменты:

  • 🔹 Для работы кода на компьютере должен быть установлен Microsoft Excel (COM-объект использует его движок).
  • 🔹 Если данные в ячейках имеют нестандартные форматы (например, даты как текст), добавьте преобразование:
    ДатаДокумента = Дата(Лист.Cells(Строка, 4).Value);
  • 🔹 Для больших файлов (>10 000 строк) используйте ADODB.Connection — это ускорит чтение.

Установлен ли Microsoft Excel на компьютере?

Есть ли права на запись в справочник 1С?

Сохранён ли файл Excel в формате .xlsx (не .xls)?

Отключены ли антивирусные блокировки для COM-объектов?-->

5. Использование ADODB для ускоренного чтения

Если стандартный COM-объект работает медленно, можно подключиться к Excel через ADODB — технологию доступа к данным, аналогичную работе с базами данных. Этот метод в 3–5 раз быстрее для файлов от 20 000 строк. Пример кода:

Процедура ЗагрузитьЧерезADODB()

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

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

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

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

"Data Source=C:\data\large_file.xlsx;" +

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

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

// Выполняем запрос

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

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

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

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

Артикул = Запрос.Fields("Артикул").Value;

Наименование = Запрос.Fields("Наименование").Value;

// ... обработка данных ...

Запрос.MoveNext();

КонецЦикла;

Запрос.Close();

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

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

Важно:

  • 📌 Для работы ADODB требуется установить Microsoft Access Database Engine (скачать с сайта Microsoft).
  • 📌 В строке подключения параметр HDR=YES означает, что первая строка содержит заголовки.
  • 📌 Если файл в формате .xls, замените Excel 12.0 Xml на Excel 8.0.

6. Типовые ошибки и их решения

При импорте данных из Excel в 1С чаще всего возникают следующие ошибки:

Ошибка Причина Решение
Ошибка при чтении файла: недопустимый формат Файл повреждён или сохранён в устаревшем формате (.xls с особенностями). Сохраните файл в .xlsx через "Сохранить как".
Не найден COM-объект "Excel.Application" Не установлен Microsoft Excel или заблокирован доступ к COM. Установите Excel или используйте ADODB.
Данные в 1С отображаются как ###### Несовпадение форматов (например, текст вместо числа). Проверьте формат колонки в Excel (должен быть "Общий" или "Числовой").
Ошибка преобразования значения к типу Дата Дата в Excel хранится как число или текст в нестандартном формате. Используйте функцию Дата(Год, Месяц, День) для ручного преобразования.

Если при загрузке появляется сообщение "Объект не найден (Excel)", проверьте:

  • 🔧 Установлен ли Microsoft Excel на компьютере (даже если вы используете только 1С).
  • 🔧 Не блокирует ли антивирус доступ к COM-объектам (добавьте исключение для Excel.exe).
  • 🔧 Запущена ли 1С от имени администратора (иногда требуется для доступа к COM).
Как проверить доступность COM-объекта Excel

1. Откройте командную строку (Win + Rcmd).

2. Введите команду:

reg query "HKCU\Software\Classes\Excel.Application"

3. Если ключ отсутствует, переустановите Microsoft Office.

7. Оптимизация загрузки больших файлов

При импорте файлов объёмом более 100 МБ или 50 000 строк используйте следующие приёмы для ускорения:

  • Частичная загрузка: читайте данные порциями по 1 000–5 000 строк, а не весь файл сразу.
  • Отключение транзакций: если не требуется откат при ошибке, используйте:
    НачатьТранзакцию();
    

    Попытка

    // Код загрузки

    ЗафиксироватьТранзакцию();

    Исключение

    ОтменитьТранзакцию();

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

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

  • Кэширование данных: если загружаете справочники, сначала сохраните все данные в массив, а затем запишите их в 1С пакетом.

Пример оптимизированного кода для ADODB:

Процедура БыстраяЗагрузка()

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

СтрокаСоединения = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\data\big_file.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES';";

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

// Чтение данными порциями по 5 000 строк

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

Запрос.PageSize = 5000; // Размер порции

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

// Отключаем автоматическое обновление экранных форм

ПриостановитьОбновлениеИнтерфейса(Истина);

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

// Обработка порции данных

МассивДанных = Новый Массив;

Для Сч = 1 По Запрос.PageSize Цикл

Если Запрос.EOF Тогда Прервать; КонецЕсли;

МассивДанных.Добавить(Запрос.Fields("Артикул").Value);

Запрос.MoveNext();

КонецЦикла;

// Пакетная запись в 1С

ЗаписатьДанные(МассивДанных);

КонецЦикла;

ВозобновитьОбновлениеИнтерфейса();

Запрос.Close();

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

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

FAQ: Частые вопросы по импорту Excel в 1С

Можно ли загрузить данные из Excel в 1С без программирования?

Да, для этого подойдёт встроенная функция Загрузка данных из табличного документа (раздел "Все функции") или внешние обработки, например, "Универсальная загрузка из Excel". Они позволяют сопоставлять колонки мышкой и не требуют знания кода.

Почему 1С не видит файл Excel, хотя он открывается?

Вероятные причины:

  • Файл сохранён в формате .xlsb (двоичный Excel) — сохраните его как .xlsx.
  • Путь к файлу содержит кириллические символы — переименуйте папку на латиницу.
  • Файл открыт в Excel — закройте его перед импортом.
Как загрузить данные с несколькими листами?

Стандартные обработки читают только первый лист. Для работы с несколькими листами используйте скрипт на встроенном языке с указанием имени листа:

Лист = Книга.Worksheets("Цены"); // вместо Worksheets(1)

Или воспользуйтесь обработкой "Мультилистовый импорт" (доступна на Infostart).

Можно ли автоматически обновлять данные из Excel в 1С?

Да, для этого настройте регламентное задание в 1С, которое будет запускать обработку импорта по расписанию (например, каждый день в 22:00). Также можно использовать COM-связку для динамического обмена: при изменении файла Excel данные будут автоматически обновляться в 1С.

Как импортировать данные с формулами?

1С не умеет читать формулы Excel — она получает только текущие значения ячеек. Решения:

  • Скопируйте данные из Excel в новый файл через "Специальная вставка" → "Значения".
  • Перенесите логику формул в 1С (например, через вычисляемые поля).
  • Используйте Power Query в Excel для предварительной обработки данных.