
Чтение данных из Excel-файлов в 1С часто требуется при интеграции с внешними источниками, импортe прайс-листов, номенклатуры или справочников. Наиболее стабильный способ – использование COM-объекта Excel.Application, доступного в конфигурациях с поддержкой работы с внешними компонентами Windows.
Перед реализацией обработки следует определить формат входного файла: наличие заголовков, количество столбцов, типы данных. Excel-файлы без заголовков требуют явного указания структуры, иначе данные могут быть интерпретированы некорректно. Важно также проверить кодировку и региональные настройки, особенно при загрузке чисел и дат.
Для открытия книги используется метод Workbooks.Open, после чего данные считываются построчно через Cells(номерСтроки, номерСтолбца). Рекомендуется избегать перебора всех ячеек подряд при больших объемах – это критически влияет на производительность. Лучше заранее определить границы диапазона и ограничить чтение только нужными строками.
Если требуется загрузка файлов без установленного Microsoft Excel, возможно использование компоненты ВнешниеОбъекты.Модуль COMSafe или альтернативных библиотек через .NET, однако это усложняет настройку среды и требует дополнительных проверок на совместимость.
Перед загрузкой в базу данных важно реализовать предварительную проверку данных: пустые строки, дубли, ошибки формата. Без этого велик риск повреждения справочников или возникновения ошибок на этапе записи объектов.
Выбор формата Excel-файла и подготовка данных к импорту

1С поддерживает загрузку как из формата .xls (Excel 97–2003), так и .xlsx (Excel 2007 и новее), однако предпочтительнее использовать .xlsx – он стабильнее при работе с COM-соединением и не ограничен по количеству строк и столбцов так жёстко, как .xls.
Перед импортом необходимо привести файл к плоской структуре. Допустим только один заголовок строк (без объединения ячеек), одна таблица на листе, без промежуточных итогов и форматирования. Первый лист Excel-документа должен содержать данные, если не предполагается выбор листа вручную в обработке.
Для корректного распознавания данных следует:
- Удалить пустые строки и столбцы
- Исключить объединённые ячейки
- Проверить соответствие названий столбцов требуемым полям в 1С
- Привести все числовые и датированные значения к соответствующему типу (например, даты не должны быть строками)
Рекомендуется сохранять структуру следующим образом:
| Код | Наименование | Количество | Цена | ДатаПоставки |
|---|---|---|---|---|
| 001 | Товар А | 10 | 250.00 | 15.05.2025 |
Имена столбцов желательно не изменять, если они используются для сопоставления с полями объектов в обработке. Заголовки чувствительны к регистру, пробелам и символам-разделителям, поэтому они должны быть однозначными и стандартизированными.
При наличии справочников (например, «Номенклатура») значения в Excel должны точно совпадать с существующими элементами. Для этого можно предварительно выгрузить справочник в Excel и использовать список для выбора значений в исходном файле.
Создание обработки в конфигураторе для загрузки Excel

Откройте конфигуратор, создайте новую внешнюю обработку (.epf). В дереве объектов добавьте форму и модуль объекта. В модуле потребуется подключение к COM-объекту Excel и чтение данных из книги.
- В разделе «Общие модули» активируйте поддержку внешнего соединения (COM).
- В модуле объекта создайте процедуру, например
ЗагрузитьДанныеИзExcel().
Процедура ЗагрузитьДанныеИзExcel()
Попытка
Excel = Новый COMОбъект("Excel.Application");
Excel.Visible = Ложь;
Файл = ПолучитьИмяФайла();
Если Файл = Неопределено Тогда
Возврат;
КонецЕсли;
Книга = Excel.Workbooks.Open(Файл);
Лист = Книга.Sheets(1);
Строка = 2;
Пока Истина Цикл
ЗначениеЯчейки = Лист.Cells(Строка, 1).Value;
Если ЗначениеЯчейки = Неопределено Тогда
Прервать;
КонецЕсли;
// Здесь добавляется логика обработки строки
Строка = Строка + 1;
КонецЦикла;
Книга.Close();
Excel.Quit();
Исключение
Сообщить("Ошибка при загрузке Excel: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
- Добавьте кнопку на форму, вызывающую процедуру
ЗагрузитьДанныеИзExcel(). - Реализуйте диалог выбора файла с помощью функции
ПолучитьИмяФайла(), указав фильтр «*.xlsx;*.xls». - Проверяйте наличие Excel на машине пользователя перед созданием COM-объекта.
- Всегда закрывайте Excel и освобождайте ресурсы даже при ошибке.
После загрузки строк из Excel можно формировать массив, заполнять таблицу значений или создавать объекты справочников и документов напрямую, в зависимости от задачи.
Подключение библиотеки COM для работы с Excel в 1С

Для взаимодействия с Excel в 1С используется технология COM. В конфигураторе необходимо включить поддержку внешних компонентов: Конфигурация → Подключаемые библиотеки → Добавить → COM.
Создание подключения выполняется с помощью объекта СоздатьОбъект. Пример:
ExcelApp = СоздатьОбъект("Excel.Application");
Если система выдает ошибку при создании объекта, проверьте установлен ли Microsoft Excel и зарегистрирован ли его COM-интерфейс. Приложение Excel должно быть не ниже версии 2007. Также важно, чтобы битность платформы 1С совпадала с битностью установленного Office.
После создания объекта можно управлять Excel: открыть файл, прочитать данные, завершить процесс. Пример открытия книги:
Книга = ExcelApp.Workbooks.Open("C:\Файл.xlsx");
Если необходимо работать с Excel без отображения интерфейса, используйте свойство:
ExcelApp.Visible = Ложь;
Завершать работу с Excel нужно через методы Quit() и освобождение объектов:
Книга.Close();
ExcelApp.Quit();
ОсвободитьОбъект(ExcelApp);
Без корректного завершения возможно зависание процесса Excel.exe в системе. Рекомендуется использовать блок Попытка…Исключение для отслеживания ошибок при работе с COM.
Чтение данных из ячеек Excel и преобразование в структуру 1С
Для чтения Excel-файла в обработке 1С используется объект COMConnector. Инициализация происходит следующим образом:
ExcelApp = Новый COMОбъект(«Excel.Application»);
Затем открывается рабочая книга:
Книга = ExcelApp.Workbooks.Open(ПутьКФайлу);
Доступ к первому листу:
Лист = Книга.Sheets(1);
Для чтения данных используется метод Cells(НомерСтроки, НомерКолонки). Пример чтения диапазона A2:D100:
МассивДанных = Новый Массив;
Для НомерСтроки = 2 По 100 Цикл
Строка = Новый Структура;
Строка.Вставить(«Код», Лист.Cells(НомерСтроки, 1).Value);
Строка.Вставить(«Наименование», Лист.Cells(НомерСтроки, 2).Value);
Строка.Вставить(«Количество», Лист.Cells(НомерСтроки, 3).Value);
Строка.Вставить(«Цена», Лист.Cells(НомерСтроки, 4).Value);
МассивДанных.Добавить(Строка);
КонецЦикла;
Важно сразу преобразовывать типы данных. Например, для чисел:
Цена = Значение(Лист.Cells(НомерСтроки, 4).Value);
После чтения обязательно закрыть файл и выгрузить COM-объекты:
Книга.Close();
ExcelApp.Quit();
Освободить COMОбъект(Лист);
Освободить COMОбъект(Книга);
Освободить COMОбъект(ExcelApp);
Полученный массив структур удобно использовать для заполнения табличной части или загрузки в регистры/справочники. Ошибки при чтении ячеек обрабатываются через Попытка…Исключение.
Обработка ошибок при чтении и проверка корректности данных

При загрузке Excel-файла в 1С необходимо предусмотреть отлов ошибок на каждом этапе чтения документа. Ошибки могут возникать при открытии файла, при обращении к несуществующим листам, чтении пустых ячеек или попытке приведения типов.
Проверка структуры файла начинается с наличия нужного листа и заголовков столбцов. Используйте ЕслиНеОпределено() для исключения обращения к отсутствующим данным. При отсутствии нужных элементов – завершайте обработку с сообщением пользователю.
Обязательные поля проверяйте сразу после чтения строки. Если значение отсутствует, добавляйте информацию об ошибке в массив сообщений, а не прерывайте загрузку. Это позволит показать пользователю весь список нарушений после анализа всех строк.
Валидация справочников и ссылочных данных выполняется через попытку получения объекта по значению. Если объект не найден – запоминайте ошибку, указывая значение и строку. Например, при загрузке данных сотрудников проверяйте наличие табельного номера в справочнике.
Для сбора ошибок используйте массив структур с полями НомерСтроки, Сообщение. После окончания загрузки покажите все ошибки через Сообщить() или сформируйте HTML-отчёт для показа в форме.
Контроль дубликатов реализуйте на этапе чтения, сверяя ключевые поля с уже загруженными строками. Это снизит риск повторной загрузки одинаковых данных.
Любая ошибка должна быть зафиксирована с привязкой к строке Excel и точным описанием причины. Это облегчает пользователю исправление файла и повторную загрузку без лишних итераций.
Сопоставление колонок Excel с реквизитами справочников и документов

Перед началом загрузки данных из Excel необходимо определить соответствие колонок файла и реквизитов целевых объектов 1С. Для каждого столбца Excel нужно явно указать, к какому реквизиту он относится, учитывая тип данных и требования системы.
Сопоставление выполняется на уровне кода обработки через структуру или объект, где ключ – имя колонки Excel, а значение – имя реквизита справочника или документа. Например, колонка «Код» связывается с реквизитом «Код», а «Наименование» – с реквизитом «Наименование». Для дат следует предусмотреть преобразование формата из Excel в формат 1С.
Особое внимание уделяется колонкам, значения которых являются ссылками на другие объекты. В таких случаях нужно реализовать поиск соответствующей записи в справочнике по ключевому реквизиту (например, по коду или названию), чтобы правильно заполнить ссылочный реквизит документа или справочника.
Для обработки реквизитов, содержащих перечисления, следует обеспечить сопоставление значений из Excel с допустимыми элементами перечисления, чтобы избежать ошибок при загрузке.
Рекомендуется предусмотреть в обработке механизм проверки и логирования несоответствий или пропусков в сопоставлении, что упростит выявление ошибок на этапе загрузки.
Если структура Excel может изменяться, имеет смысл реализовать динамическое сопоставление с возможностью редактирования соответствия колонок и реквизитов через интерфейс обработки.
Сохранение загруженных данных в базу и контроль дублирующихся записей
После чтения данных из Excel-файла необходимо корректно сохранить их в базу 1С с учётом контроля уникальности записей. В противном случае возможны ошибки и дублирование.
Рекомендуется придерживаться следующего порядка действий:
- Перед сохранением выполнить проверку наличия записи по ключевым полям. Это могут быть уникальные идентификаторы, например, артикул, код или комбинация реквизитов.
- Для поиска дубликатов использовать стандартные методы 1С, например,
ВыбратьПоРеквизитуили запрос с фильтром по ключам. Это позволяет избежать загрузки повторных данных. - Если запись найдена, обновить существующую, изменив только необходимые поля, чтобы сохранить историю и избежать конфликтов.
- Если дубликат не найден, создать новую запись через объектный интерфейс или запрос на вставку.
- Использовать транзакции (
НачатьТранзакцию,ЗафиксироватьТранзакцию) для обеспечения целостности данных при массовой загрузке.
Примерный алгоритм проверки и сохранения:
- Считать строку из Excel.
- Проверить наличие записи в базе по ключевому значению.
- Если запись существует – обновить.
- Если нет – создать новую.
- Переход к следующей строке.
Контроль дубликатов ускоряется с помощью индексов и правильного выбора полей для поиска. Не стоит проверять все поля, достаточно тех, что однозначно идентифицируют запись.
Для больших объёмов данных полезно разделять обработку на партии, фиксируя транзакции после определённого количества записей. Это снизит нагрузку и риск блокировок.
Вопрос-ответ:
Как настроить обработку для загрузки Excel-файла в 1С?
Для начала нужно создать обработку, которая будет содержать элемент формы для выбора файла — обычно это поле типа «Файл». Далее в коде обработки следует использовать встроенные объекты 1С для работы с Excel: либо через COM-соединение с приложением Excel, либо через стандартный механизм «Табличный документ», если формат файла поддерживается. Основная задача — считать данные из нужных ячеек или диапазонов и перенести их в нужные регистры или документы 1С. После выбора файла в форме пользователь запускает загрузку, и в обработке происходит чтение и проверка данных, с последующим сохранением.
Какие ошибки могут возникнуть при загрузке данных из Excel в 1С через обработку и как их избежать?
Частые ошибки связаны с неправильным форматом файла, например, если вместо ожидаемого XLSX загружен CSV или другой формат, который обработка не поддерживает. Также могут появиться ошибки при неверном расположении данных в листах — если таблица имеет неожиданные пустые строки или столбцы, либо если в ячейках находятся нечисловые значения там, где требуются числа. Чтобы избежать проблем, стоит заранее проверить структуру Excel-файла и предусмотреть в коде обработки проверку формата и содержимого. Для этого полезно реализовать вывод сообщений с описанием проблем, чтобы пользователь мог исправить файл до загрузки.
Можно ли автоматически запускать обработку загрузки Excel-файла по расписанию, без вмешательства пользователя?
Да, такая возможность есть. Для этого обработку нужно оформить как общую обработку или внешний отчет с поддержкой работы в фоновых заданиях. Затем в планировщике заданий 1С можно настроить периодический запуск обработки с указанием пути к Excel-файлу или предусмотреть загрузку файла в определенную папку, откуда обработка его будет брать. Важно обеспечить стабильность пути к файлу и обработать возможные ошибки чтения, чтобы автоматизация не прерывалась. Такой подход помогает регулярно обновлять данные без необходимости запускать загрузку вручную.
Как правильно настроить соответствие столбцов Excel и реквизитов объектов 1С при загрузке?
Лучше всего предусмотреть в обработке механизм, который позволяет задать соответствие между названиями столбцов в Excel и полями объектов 1С. Это может быть отдельная таблица сопоставления или настройки в самой обработке. При чтении данных сначала происходит сопоставление по названиям, после чего значения из ячеек записываются в соответствующие реквизиты. Такой подход уменьшает риск ошибок из-за сдвигов столбцов или изменения порядка данных в Excel. В некоторых случаях полезно добавить проверку на наличие обязательных столбцов и вывод предупреждений, если они не обнаружены.
