Выгрузка данных из Excel в 1С: 5 проверенных способов с примерами
Содержание
Выгрузить данные из Excel в 1С можно пятью способами: встроенной загрузкой из файла в справочнике или документе, копированием через буфер обмена, внешней обработкой «Загрузка данных из табличного документа», программно через COM-соединение или обменом через XML. Выбор зависит от объёма, повторяемости и того, кто будет этим заниматься.
Строго говоря, «выгрузка из Excel в 1С» — это загрузка в 1С. Но по этой формулировке люди и ищут, поэтому дальше сохраняем её. Начнём с подготовки файла: на ней ломается большинство загрузок, а не на выбранном способе.
Перед любой загрузкой в рабочую базу сделайте копию базы или проверьте процесс на тестовой. Загруженные массово данные откатить вручную очень трудно.
Подготовка таблицы Excel к загрузке в 1С
Хороший файл — половина успеха. Семь правил, которые экономят часы:
- Одна строка заголовков. Никаких объединённых ячеек над шапкой и под ней. Заголовок один, на первой строке.
- Одна запись — одна строка. Не прячьте несколько товаров в одну ячейку через запятую.
- Нет объединённых ячеек внутри данных. При загрузке они дают пустые значения в «хвосте» объединения.
- Числа — числами. Столбец с суммами не должен содержать «1 250,00 руб.» как текст. Уберите пробелы-разделители и единицы измерения, проверьте формат ячеек.
- Даты — датами. Текст «5.10.26» может превратиться в 10 мая. Лучше единый формат
ДД.ММ.ГГГГ. - Нет пустых строк внутри таблицы и итоговых строк внизу. Строку «Итого» удалите.
- Лишние пробелы вычищены. Пробел в конце названия контрагента — и 1С не найдёт его по наименованию. Помогает функция
СЖПРОБЕЛЫв Excel.
Дополнительно:
- 📄 Сохраняйте в формате
.xlsxили.xls. Старые версии 1С лучше переваривают.xls, а для буфера формат вообще не важен. - 🔑 Добавьте столбец с уникальным идентификатором: артикул, ИНН, код. По нему 1С сопоставит строки с уже существующими элементами и не создаст дубли.
- 🧪 Для первой проверки возьмите 5–10 строк, а не весь файл.
Если контрагентов или номенклатуру нужно сопоставить с имеющимися элементами, заранее выгрузите справочник из 1С в Excel и сверьте наименования формулой ВПР.
Встроенная загрузка из файла: самый простой способ
В актуальных конфигурациях 1С 8.3 (Бухгалтерия предприятия 3.0, Управление торговлей, ЗУП) у многих справочников и документов есть загрузка данных из файла. Это путь для небольших и средних таблиц без программирования.
Где найти загрузку
Откройте нужный список: номенклатуру, контрагентов, физических лиц. В командной панели ищите кнопку «Ещё» и пункт со словами «Загрузить данные». Точное название зависит от конфигурации и версии, поэтому, если пункта нет, поищите кнопку «Загрузка» рядом с командой «Создать».
Порядок действий
- Нажмите загрузку и вставьте таблицу из Excel в поле формы либо откройте файл.
- Укажите, в какой справочник или табличную часть идёт загрузка.
- Сопоставьте колонки: для каждого столбца файла выберите реквизит 1С. Колонку, по которой ищутся совпадения, отметьте как ключевую.
- Проверьте предварительный результат. Строки с проблемами подсветятся.
- Исправьте замечания и запустите загрузку.
Способ хорош тем, что не требует доступа к конфигурированию. Минус: набор объектов ограничен, а сложные случаи вроде загрузки реквизитов вложенных справочников придётся решать другим путём.
Копирование через буфер обмена: для небольших таблиц
Когда нужно перенести 20–200 строк в табличную часть документа, быстрее всего скопировать их из Excel.
Как это работает
- Откройте документ, например «Поступление (акт, накладная)», перейдите на вкладку с товарами.
- В Excel выделите диапазон со значениями без шапки и нажмите
Ctrl+C. - В 1С встаньте в первую ячейку нужной колонки табличной части и нажмите
Ctrl+V.
Порядок колонок в Excel должен совпадать с порядком колонок в 1С. Если он другой, переставьте столбцы в Excel заранее.
Что может пойти не так
- Если у справочника есть несколько элементов с одинаковым названием, 1С выберет не того или остановится.
- Вставка заполняет колонки подряд. Скрытые в форме колонки пропускаются, поэтому проверьте результат.
- Для строк больше нескольких сотен буфер начинает подтормаживать.
Не вставляйте текст в числовое поле «одним куском». Если в 1С сумма стала нулевой, значит, число скопировалось текстом с пробелом или неразрывным пробелом. Замените его через Ctrl+H в Excel.
Внешняя обработка «Загрузка данных из табличного документа»
Когда встроенных средств мало, на помощь приходят внешние обработки. Классический пример — обработка «Загрузка данных из табличного документа» с диска ИТС. Её же в разных вариациях можно найти у сторонних разработчиков. Подключается как внешний файл .epf, без изменения конфигурации.
Что умеет такая обработка
- Загружает данные в справочники, документы, регистры сведений.
- Позволяет задать соответствие столбцов реквизитам, в том числе с поиском объекта по наименованию, коду или другому полю.
- Работает пакетно: можно обработать несколько тысяч строк.
- Сохраняет настройки соответствия, чтобы при следующей загрузке не настраивать всё заново.
Как подключить
- Откройте основное меню 1С и выберите открытие файла. Укажите
.epf. - Либо добавьте её в «Дополнительные отчёты и обработки», если эта подсистема включена в настройках программы (раздел администрирования).
- Выберите вид объекта и сам объект, затем загрузите таблицу и настройте колонки.
Внешние обработки — это исполняемый код. Берите их только из проверенных источников. В облачных базах и защищённых контурах запуск могут запрещать: нужно право на открытие внешних файлов у вашей роли.
Загрузка через 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 | любой | да, иногда нет | Данные идут из другой системы |
Типичные ошибки загрузки и их исправление
ТЕКСТ(A2;"ДД.ММ.ГГГГ").Оптимизация: как загружать быстрее и регулярнее
Если загрузка нужна каждую неделю, одноразовых хитростей недостаточно. Что стоит сделать:
- 📁 Фиксируйте шаблон файла. Одинаковые названия столбцов и порядок. Любой поставщик присылает прайс в своей форме, а загрузку проще написать под один формат.
- 💾 Сохраняйте настройки соответствия в обработке, чтобы не собирать их каждый раз.
- 🔍 Загружайте в два шага. Сначала проверка без записи: сколько строк найдено, сколько новых, сколько с ошибками. Затем сама загрузка.
- 📝 Ведите журнал. Сколько загружено, какие строки отброшены и почему. Пригодится при спорных ситуациях.
- ⏰ Для полной автоматики используйте регламентное задание: оно запускает процедуру чтения файла из сетевой папки по расписанию.
Один контрольный приём стоит отдельного внимания: после загрузки сравните количество строк в файле и количество созданных или обновлённых объектов. Расхождение — повод искать пропущенные строки сразу, а не через месяц.
Ещё три приёма, которые ускоряют работу с большими файлами:
- Разбивайте файл на части по 5–10 тысяч строк. Одна ошибка не обнулит часовую загрузку, а проблемные строки проще найти.
- Отключайте лишнее на время загрузки. Если в базе включены сложные подписки на события или контроль остатков при проведении, загрузка замедляется в разы. Согласуйте это с администратором.
- Загружайте справочники раньше документов. Сначала контрагенты и номенклатура, потом поступления и реализации. Тогда в документах есть на что ссылаться.
Пример: прайс на 12 000 позиций, разбитый на 3 файла по 4 000 строк, обычно проходит без сбоев. Тот же прайс одним куском нередко упирается в нехватку памяти на клиенте.
Частые вопросы
Можно ли загрузить Excel в 1С без программиста?
Какой формат файла лучше: xls или xlsx?
.xls читается проще. Если нужен .xlsx в серверном коде, используйте чтение через ТабличныйДокумент.