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

Справочники и Данные · 10 мин

Как подгрузить файл XLS в 1С

Как загрузить файл XLS в 1С: встроенные обработки, типовая загрузка из табличного документа, написание своей обработки, типичные ошибки и проверка результата.

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

Прежде чем начинать, важно понять, куда именно вы загружаете данные: в справочник (номенклатура, контрагенты), в табличную часть документа или в регистр сведений (например, цены). От этого зависит выбор инструмента и структура файла. Также уточните формат файла: старый XLS (Excel 97–2003) и современный XLSX обрабатываются по-разному — стандартный механизм чтения табличных документов в 1С понимает оба, а COM-подключение к Excel требует установленного Microsoft Office на компьютере или сервере.

Ниже разобраны основные способы: типовая загрузка из табличного документа, универсальная обработка «Загрузка данных из табличного документа», чтение через табличный документ в коде и COM-соединение с Excel. Для каждого указаны условия применения, ограничения и типичные ошибки.

Подготовка файла к загрузке

Большинство ошибок при загрузке возникает не из-за 1С, а из-за самого файла. Уберите объединённые ячейки, многострочные шапки, промежуточные итоги и пустые строки внутри данных — каждая строка файла должна соответствовать одной записи, а первая строка должна содержать заголовки колонок или сразу данные.

Проверьте типы данных в колонках: числа должны быть числами, а не текстом с пробелами и неразрывными пробелами; даты — реальными датами Excel, а не строками вида «01.03.24». Артикулы и коды, начинающиеся с нуля, наоборот, лучше сохранить как текст, иначе ведущие нули потеряются. Сохраните файл в формате XLSX или XLS и запомните, на каком листе находятся данные.

Способ 1. Типовая обработка «Загрузка данных из табличного документа»

В конфигурациях на БСП (Управление торговлей 11, ERP, Комплексная автоматизация, Бухгалтерия 3.0 с подключаемыми обработками) есть штатный инструмент. В 1С:Бухгалтерии загрузка номенклатуры и контрагентов доступна прямо из формы списка справочника по кнопке «Загрузить из файла» — система сама предложит сопоставить колонки.

Если такой кнопки нет, используйте универсальную внешнюю обработку «Загрузка данных из табличного документа» (она входит в состав дистрибутивов БСП и доступна на диске ИТС). Откройте её через «Файл → Открыть», выберите режим загрузки (в справочник, в табличную часть или в регистр сведений), укажите вид объекта и откройте ваш XLS-файл.

Порядок действий в типовой обработке
  1. 1
    Откройте обработку и выберите режим: загрузка в справочник, табличную часть или регистр сведений
  2. 2
    Укажите конкретный объект метаданных, например справочник «Номенклатура»
  3. 3
    На вкладке «Табличный документ» откройте XLS-файл и проверьте, что данные отобразились корректно
  4. 4
    На вкладке «Настройка» сопоставьте номера колонок файла реквизитам объекта; для ключевых полей отметьте «Поле поиска»
  5. 5
    Нажмите «Загрузить» и дождитесь отчёта о результатах
  6. 6
    Откройте справочник и проверьте несколько записей вручную

Обратите внимание на колонку «Поле поиска»: по ней обработка определяет, создавать новый элемент или обновить существующий. Обычно ищут по коду, артикулу или наименованию. Если поле поиска не задано, все строки будут загружены как новые элементы — и вы получите дубли.

Способ 2. Чтение файла программно через табличный документ

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

bsl
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Данные\прайс.xlsx", СпособЧтенияЗначенийТабличногоДокумента.Значение);
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область(1, 1, ТабДок.ВысотаТаблицы, ТабДок.ШиринаТаблицы));
Построитель.Выполнить();
Выборка = Построитель.Результат.Выбрать();
Пока Выборка.Следующий() Цикл
	// Выборка.Артикул, Выборка.Цена — дальше ваша логика записи
КонецЦикла;

При таком чтении заголовки колонок файла становятся именами колонок результата, поэтому в файле должна быть строка с уникальными названиями без спецсимволов. Если заголовков нет, область начинайте со строки данных и обращайтесь к ячейкам напрямую через ТабДок.Область("R" + НомерСтроки + "C" + НомерКолонки).Текст. Учтите, что метод Прочитать() загружает весь лист целиком — для файлов на десятки тысяч строк это может занять заметное время и память.

Способ 3. Чтение через COM-объект Excel

Классический способ для файловых баз и толстого клиента — подключение к установленному Excel через COM. Он позволяет читать форматирование, формулы и конкретные листы, но имеет жёсткое ограничение: Microsoft Office должен быть установлен на том компьютере, где выполняется код. На 64-разрядном сервере 1С без Office этот способ не сработает.

bsl
Попытка
	Excel = Новый COMОбъект("Excel.Application");
Исключение
	Сообщить("Excel не установлен: " + ОписаниеОшибки());
	Возврат;
КонецПопытки;
Книга = Excel.Workbooks.Open("C:\Данные\прайс.xls");
Лист = Книга.Worksheets(1);
Для Ном = 2 По Лист.UsedRange.Rows.Count Цикл
	Артикул = СокрЛП(Лист.Cells(НомерСтроки, 1).Value);
КонецЦикла;
Excel.Quit();

Обязательно завершайте работу вызовом Excel.Quit() и освобождением объекта, иначе в памяти останутся «висячие» процессы EXCEL.EXE, которые со временем блокируют файлы и съедают ресурсы сервера. В цикле чтения по COM каждый вызов ячейки — отдельное обращение к процессу Excel, поэтому большие файлы так читаются медленно: для объёмов более нескольких тысяч строк предпочтительнее способ с табличным документом.

Сравнение способов загрузки

Типовая обработка БСП

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

ТабличныйДокумент.Прочитать()

Универсальный серверный способ без Excel. Ограничение: весь файл грузится в память, формулы читаются как значения.

COM Excel.Application

Нужен, когда важны листы, формулы и форматирование. Ограничение: требует установленный Office и работает медленнее.

Преобразование в CSV

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

Загрузка в документы и регистры: особенности

При загрузке в табличную часть документа (например, «Поступление товаров» из накладной поставщика) типовая обработка БСП позволяет выбрать существующий документ или создать новый. Ключевой момент — поиск номенклатуры: сопоставляйте строки по артикулу или штрихкоду, а не по наименованию, потому что наименования у поставщика и в вашей базе почти всегда отличаются.

При загрузке в регистры сведений (цены номенклатуры, штрихкоды) помните про измерения и периодичность. Для периодического регистра цен нужна корректная колонка с датой; для регистра штрихкодов — контроль уникальности, иначе загрузка упадёт на дублирующихся значениях. Если регистр подчинён регистратору (как цены в УТ 11, которые устанавливаются документом «Установка цен»), правильнее создавать документ-регистратор, а не писать в регистр напрямую.

Проверка результата и типичные ошибки

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

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

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

Количество записей
Норма

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

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

Записей меньше — часть строк не загрузилась; больше — появились дубли

Числа и цены
Норма

Значения совпадают, копейки на месте

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

Цены в 100 раз больше/меньше или обрезаны — проблема с разделителем или типом колонки

Даты
Норма

Даты корректны и в нужном периоде

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

Даты пустые или вида 01.01.0001 — колонка прочитана как текст

Связанные элементы
Норма

Номенклатура и контрагенты найдены по ключу, новых дублей нет

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

Созданы дубли по наименованию — не было настроено поле поиска

Типичные ошибки
01
Загрузка без поля поиска — все строки создаются как новые элементы, справочник заполняется дублями
02
Не убраны объединённые ячейки и многострочная шапка — данные смещаются, колонки сопоставляются неверно
03
Числа хранятся как текст с неразрывными пробелами — цены загружаются нулём или вызывают ошибку преобразования
04
Чтение XLSX через COM без установленного Office — ошибка создания COM-объекта и остановка обработки
05
Загрузка сразу в рабочую базу без копии — при ошибке в сопоставлении тысячи записей приходится удалять вручную

Часто задаваемые вопросы

Можно ли загрузить XLSX, если на компьютере нет Excel?

Да. Метод ТабличныйДокумент.Прочитать() и типовые обработки БСП читают XLSX и XLS без установленного Microsoft Office. Без Office не работает только способ через COM-объект Excel.Application.

Почему при загрузке теряются ведущие нули в артикулах и штрихкодах?

Excel хранит такие значения как числа и отбрасывает нули. Перед сохранением файла задайте для колонки текстовый формат, а в настройках обработки укажите, что колонка загружается как строка.

Файл на 50 тысяч строк грузится очень долго. Что делать?

Откажитесь от COM-чтения в пользу ТабличныйДокумент.Прочитать(), разбейте файл на части, отключите в обработке интерактивные сообщения на каждую строку и выполняйте запись в транзакции порциями. Для регулярных обменов такого объёма лучше перейти на CSV или фоновое задание на сервере.

Как загрузить данные, если нужной колонки нет в справочнике 1С?

Лишние колонки файла можно просто не сопоставлять — они будут проигнорированы. Если данные нужно сохранить, а подходящего реквизита нет, используйте дополнительные реквизиты и сведения (в конфигурациях на БСП) либо попросите разработчика добавить реквизит в конфигурацию.

Чем XLS отличается от XLSX при загрузке в 1С?

XLS — старый двоичный формат Excel 97–2003, XLSX — современный формат на основе XML. Типовые механизмы 1С читают оба, но XLSX обычно обрабатывается быстрее и надёжнее. Если файл в старом формате вызывает ошибки, пересохраните его в XLSX и повторите загрузку.

Можно ли отменить ошибочную загрузку?

Штатной кнопки отката нет. Варианты: восстановление из резервной копии, пометка на удаление созданных элементов через обработку группового изменения или поиск по дате создания. Именно поэтому загрузку всегда стоит сначала выполнять на копии базы.

Итог

Что важно запомнить

Подготовьте файл: уберите объединённые ячейки и лишние шапки, проверьте типы колонок. Для разовой загрузки используйте типовую обработку БСП с настройкой поля поиска; для своей логики — чтение через ТабличныйДокумент.Прочитать(). COM-Excel применяйте только там, где установлен Office. Всегда сначала загружайте в копию базы и сверяйте количество и содержимое записей после загрузки.