Выгрузка данных из Excel в 1С: 5 проверенных способов с примерами

· 9 мин

Содержание

Выгрузить данные из Excel в 1С можно пятью способами: встроенной загрузкой из файла в справочнике или документе, копированием через буфер обмена, внешней обработкой «Загрузка данных из табличного документа», программно через COM-соединение или обменом через XML. Выбор зависит от объёма, повторяемости и того, кто будет этим заниматься.

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

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

Подготовка таблицы Excel к загрузке в 1С

Хороший файл — половина успеха. Семь правил, которые экономят часы:

  1. Одна строка заголовков. Никаких объединённых ячеек над шапкой и под ней. Заголовок один, на первой строке.
  2. Одна запись — одна строка. Не прячьте несколько товаров в одну ячейку через запятую.
  3. Нет объединённых ячеек внутри данных. При загрузке они дают пустые значения в «хвосте» объединения.
  4. Числа — числами. Столбец с суммами не должен содержать «1 250,00 руб.» как текст. Уберите пробелы-разделители и единицы измерения, проверьте формат ячеек.
  5. Даты — датами. Текст «5.10.26» может превратиться в 10 мая. Лучше единый формат ДД.ММ.ГГГГ.
  6. Нет пустых строк внутри таблицы и итоговых строк внизу. Строку «Итого» удалите.
  7. Лишние пробелы вычищены. Пробел в конце названия контрагента — и 1С не найдёт его по наименованию. Помогает функция СЖПРОБЕЛЫ в Excel.

Дополнительно:

  • 📄 Сохраняйте в формате .xlsx или .xls. Старые версии 1С лучше переваривают .xls, а для буфера формат вообще не важен.
  • 🔑 Добавьте столбец с уникальным идентификатором: артикул, ИНН, код. По нему 1С сопоставит строки с уже существующими элементами и не создаст дубли.
  • 🧪 Для первой проверки возьмите 5–10 строк, а не весь файл.

Если контрагентов или номенклатуру нужно сопоставить с имеющимися элементами, заранее выгрузите справочник из 1С в Excel и сверьте наименования формулой ВПР.

Встроенная загрузка из файла: самый простой способ

В актуальных конфигурациях 1С 8.3 (Бухгалтерия предприятия 3.0, Управление торговлей, ЗУП) у многих справочников и документов есть загрузка данных из файла. Это путь для небольших и средних таблиц без программирования.

Где найти загрузку

Откройте нужный список: номенклатуру, контрагентов, физических лиц. В командной панели ищите кнопку «Ещё» и пункт со словами «Загрузить данные». Точное название зависит от конфигурации и версии, поэтому, если пункта нет, поищите кнопку «Загрузка» рядом с командой «Создать».

Порядок действий

  1. Нажмите загрузку и вставьте таблицу из Excel в поле формы либо откройте файл.
  2. Укажите, в какой справочник или табличную часть идёт загрузка.
  3. Сопоставьте колонки: для каждого столбца файла выберите реквизит 1С. Колонку, по которой ищутся совпадения, отметьте как ключевую.
  4. Проверьте предварительный результат. Строки с проблемами подсветятся.
  5. Исправьте замечания и запустите загрузку.

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

Копирование через буфер обмена: для небольших таблиц

Когда нужно перенести 20–200 строк в табличную часть документа, быстрее всего скопировать их из Excel.

Как это работает

  1. Откройте документ, например «Поступление (акт, накладная)», перейдите на вкладку с товарами.
  2. В Excel выделите диапазон со значениями без шапки и нажмите Ctrl+C.
  3. В 1С встаньте в первую ячейку нужной колонки табличной части и нажмите Ctrl+V.

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

Что может пойти не так

  • Если у справочника есть несколько элементов с одинаковым названием, 1С выберет не того или остановится.
  • Вставка заполняет колонки подряд. Скрытые в форме колонки пропускаются, поэтому проверьте результат.
  • Для строк больше нескольких сотен буфер начинает подтормаживать.

Не вставляйте текст в числовое поле «одним куском». Если в 1С сумма стала нулевой, значит, число скопировалось текстом с пробелом или неразрывным пробелом. Замените его через Ctrl+H в Excel.

Внешняя обработка «Загрузка данных из табличного документа»

Когда встроенных средств мало, на помощь приходят внешние обработки. Классический пример — обработка «Загрузка данных из табличного документа» с диска ИТС. Её же в разных вариациях можно найти у сторонних разработчиков. Подключается как внешний файл .epf, без изменения конфигурации.

Что умеет такая обработка

  • Загружает данные в справочники, документы, регистры сведений.
  • Позволяет задать соответствие столбцов реквизитам, в том числе с поиском объекта по наименованию, коду или другому полю.
  • Работает пакетно: можно обработать несколько тысяч строк.
  • Сохраняет настройки соответствия, чтобы при следующей загрузке не настраивать всё заново.

Как подключить

  1. Откройте основное меню 1С и выберите открытие файла. Укажите .epf.
  2. Либо добавьте её в «Дополнительные отчёты и обработки», если эта подсистема включена в настройках программы (раздел администрирования).
  3. Выберите вид объекта и сам объект, затем загрузите таблицу и настройте колонки.

Внешние обработки — это исполняемый код. Берите их только из проверенных источников. В облачных базах и защищённых контурах запуск могут запрещать: нужно право на открытие внешних файлов у вашей роли.

Загрузка через COM-соединение для программистов

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

Минимальный пример

Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = Ложь;
Книга = Excel.Workbooks.Open(ПутьКФайлу);
Лист = Книга.Sheets(1);

ПоследняяСтрока = Лист.Cells(Лист.Rows.Count, 1).End(-4162).Row;

Для Строка = 2 По ПоследняяСтрока Цикл
    Артикул = СокрЛП(Лист.Cells(Строка, 1).Value);
    Наименование = СокрЛП(Лист.Cells(Строка, 2).Value);
    // здесь поиск или создание элемента справочника
КонецЦикла;

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

Значение -4162 — это константа xlUp для поиска последней заполненной строки. В таком коде не забывайте закрывать Excel и в случае ошибки, иначе в диспетчере задач останутся висеть процессы EXCEL.EXE.

Ограничения способа

ЧтоКак влияет
Нужен установленный ExcelНа сервере 1С или в веб-клиенте этот способ работать не будет
СкоростьЧтение ячейка за ячейкой медленное; для больших таблиц читайте диапазон целиком в массив
РазрядностьПлатформа 1С и Excel должны быть одной разрядности
ПраваЗапускается на клиенте под правами текущего пользователя

Если Excel на машине нет, прочитать файл можно через табличный документ: метод Прочитать у типа ТабличныйДокумент понимает .xlsx, и COM не нужен. Для серверной загрузки это обычно лучший выбор.

Прочитайте диапазон одним вызовом: Значения = Лист.Range("A2:F5000").Value. Получите двумерный массив, и цикл по нему работает на порядок быстрее, чем обращение к каждой ячейке.

Обмен через XML: когда данные идут из другой системы

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

Два подхода

  • Готовый обмен. Для связки типовых конфигураций (например, Бухгалтерия и Зарплата и управление персоналом) есть правила обмена, и настройка делается в интерфейсе: раздел «Администрирование», настройка синхронизации данных.
  • Свой формат. Excel конвертируется в XML сторонним скриптом или самой 1С, затем читается объектом ЧтениеXML. Это уже разработка.

Простейший вариант чтения выглядит так:

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ПутьКФайлу);
Пока Чтение.Прочитать() Цикл
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "Строка" Тогда
        // читаем атрибуты и вложенные элементы
    КонецЕсли;
КонецЦикла;
Чтение.Закрыть();

Этот способ оправдан, когда схема данных стабильна и формат согласован обеими сторонами. Для разового переноса таблицы он избыточен.

Какой способ выбрать под вашу задачу

СпособОбъёмНужен программистКогда подходит
Встроенная загрузкадо нескольких тысяч строкнетСправочники и документы из списка поддерживаемых
Буфер обменадо пары сотен строкнетБыстро заполнить табличную часть
Внешняя обработкатысячи строкнетНужны гибкие соответствия
COM / ТабличныйДокументлюбойдаРегулярная автоматическая загрузка
XMLлюбойда, иногда нетДанные идут из другой системы
Какой у вас случай?

Типичные ошибки загрузки и их исправление

Диагностика: выберите симптом

Оптимизация: как загружать быстрее и регулярнее

Если загрузка нужна каждую неделю, одноразовых хитростей недостаточно. Что стоит сделать:

  • 📁 Фиксируйте шаблон файла. Одинаковые названия столбцов и порядок. Любой поставщик присылает прайс в своей форме, а загрузку проще написать под один формат.
  • 💾 Сохраняйте настройки соответствия в обработке, чтобы не собирать их каждый раз.
  • 🔍 Загружайте в два шага. Сначала проверка без записи: сколько строк найдено, сколько новых, сколько с ошибками. Затем сама загрузка.
  • 📝 Ведите журнал. Сколько загружено, какие строки отброшены и почему. Пригодится при спорных ситуациях.
  • ⏰ Для полной автоматики используйте регламентное задание: оно запускает процедуру чтения файла из сетевой папки по расписанию.

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

Ещё три приёма, которые ускоряют работу с большими файлами:

  1. Разбивайте файл на части по 5–10 тысяч строк. Одна ошибка не обнулит часовую загрузку, а проблемные строки проще найти.
  2. Отключайте лишнее на время загрузки. Если в базе включены сложные подписки на события или контроль остатков при проведении, загрузка замедляется в разы. Согласуйте это с администратором.
  3. Загружайте справочники раньше документов. Сначала контрагенты и номенклатура, потом поступления и реализации. Тогда в документах есть на что ссылаться.

Пример: прайс на 12 000 позиций, разбитый на 3 файла по 4 000 строк, обычно проходит без сбоев. Тот же прайс одним куском нередко упирается в нехватку памяти на клиенте.

Частые вопросы

Можно ли загрузить Excel в 1С без программиста?
Да. Для справочников и табличных частей хватает встроенной загрузки и копирования через буфер, а гибкие случаи закрывает внешняя обработка.
Какой формат файла лучше: xls или xlsx?
Для встроенных средств подойдут оба, но старый .xls читается проще. Если нужен .xlsx в серверном коде, используйте чтение через ТабличныйДокумент.
Почему 1С не видит файл Excel?
Чаще всего файл открыт в самой программе Excel, лежит в недоступной для пользователя папке либо повреждён. Закройте его и скопируйте на локальный диск.
Работает ли загрузка в веб-клиенте и облаке?
Встроенная загрузка работает. COM-автоматизация Excel в веб-клиенте недоступна, а запуск внешних обработок часто запрещён политикой сервиса.
Можно ли откатить неудачную загрузку?
Только если вы сделали копию базы или загружали в документ, который ещё не проведён. Для справочников удаление придётся делать вручную или через обработку поиска и удаления помеченных объектов.
Сколько строк можно загрузить за один раз?
Жёсткого лимита нет. На практике через буфер комфортно до нескольких сотен строк, а пакетные способы справляются с десятками тысяч.