Перенос таблицы Excel в базу 1С: три способа и разбор ошибок

· 10 мин

Содержание

Чтобы выгрузить данные из Excel в 1С 8.3, откройте нужный список или табличную часть документа и нажмите команду загрузки из файла: например, в БП 3.0 это кнопка Загрузить в списке Справочники → Номенклатура и в табличной части «Товары» документа поступления. Если встроенной загрузки для объекта нет, используют внешнюю обработку «Загрузка данных из табличного документа». Программирование в обоих случаях не нужно.

Частое заблуждение — что 1С «не видит» Excel и таблицу надо перебивать руками или конвертировать в XML. Платформа 8.3 сама читает файлы xls и xlsx, установленный Microsoft Excel для этого не нужен. Главная работа — не в 1С, а в подготовке файла: именно кривая таблица даёт 9 из 10 проблем при загрузке.

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

Программа читает таблицу буквально: каждая строка — объект или строка документа, каждая колонка — реквизит. Всё, что человек «понимает по смыслу», 1С не поймёт.

Перед загрузкой приведите файл к простому виду:

  • 📄 Один лист — одна таблица. Обработки берут первый лист. Сводные таблицы, итоги и заметки на полях уберите.
  • 🧱 Одна строка заголовков. Двухуровневые шапки и объединённые ячейки разъедините, иначе колонки сместятся.
  • 🔢 Числа — числами. Цены и количества не должны храниться как текст. Пробел-разделитель тысяч («1 250,00») и знак валюты в ячейке ломают распознавание.
  • 🔤 Коды — текстом. ИНН, КПП, артикулы и штрихкоды с ведущими нулями задайте текстовым форматом, иначе Excel превратит 0274062111 в 274062111.
  • ✂️ Без лишних пробелов. Пробел в конце наименования — уже другое наименование. Очистите колонку функцией СЖПРОБЕЛЫ (в английском Excel — TRIM) и вставьте результат как значения.
  • 🧹 Без пустых строк внутри. Пустая строка в середине либо остановит загрузку, либо создаст пустой элемент.
  • 📏 Значения из справочников — как в 1С. Единица «шт» в файле должна совпадать с единицей в базе. Если в базе ставка записана как «20%», в файле не пишите «20».

Отдельно продумайте ключ поиска. Это колонка, по которой 1С поймёт, что строка уже есть в базе: артикул для товаров, ИНН для контрагентов, табельный номер для сотрудников. Наименование как ключ ненадёжно: «Болт М8×40» и «Болт М8x40» (русская и латинская «х») — два разных товара.

Добавьте в файл служебную колонку с порядковым номером строки. Если загрузка упадёт на 347-й строке, вы найдёте её за секунду.

Формулы можно оставить: 1С берёт вычисленное значение ячейки. Но надёжнее перед загрузкой скопировать лист и вставить специальной вставкой «Значения» — так не будет сюрпризов со ссылками на другие файлы.

Встроенная загрузка из файла в типовых конфигурациях

В современных релизах БП 3.0, УТ 11 и КА 2 загрузка из файла встроена прямо в формы. Это самый безопасный путь: программа сама проверяет данные и не даёт записать заведомо неверное.

Загрузка в справочник

На примере номенклатуры в БП 3.0:

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

Загрузка в табличную часть документа

Типичный сценарий — поставщик прислал счёт на 200 позиций в Excel, а вводить их вручную в поступление долго.

  1. Создайте документ, например Покупки → Поступление (акты, накладные, УПД).
  2. Заполните шапку: контрагента, договор, склад.
  3. На вкладке «Товары» найдите команду Загрузить над табличной частью.
  4. Вставьте или выберите файл, сопоставьте колонки «Номенклатура», «Количество», «Цена».
  5. Позиции, которых нет в базе, программа предложит создать или сопоставить с существующими вручную.

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

Универсальная обработка загрузки из табличного документа

Обработка «Загрузка данных из табличного документа» (файл ЗагрузкаДанныхИзТабличногоДокумента.epf) — классический инструмент внедренцев. Она умеет загружать данные в:

  • справочник (создавать новые элементы и обновлять существующие);
  • табличную часть выбранного документа или справочника;
  • регистр сведений .

Обработку распространяют на диске ИТС и в комплекте поставки технологических обработок. Берите версию для управляемых форм: старая версия для обычного приложения в интерфейсе «Такси» не откроется.

Как запустить

Есть два варианта:

  1. Разово. Главное меню (кнопка с тремя полосками в заголовке окна) → Файл → Открыть → выберите .epf. Платформа покажет предупреждение безопасности; открыть файл может только пользователь с правом на внешние обработки.
  2. Постоянно. Включите флажок в Администрирование → Печатные формы, отчеты и обработки, затем добавьте файл в «Дополнительные отчеты и обработки». После этого обработка доступна всем пользователям с нужными правами и не требует подтверждения при каждом открытии.

Первую загрузку через универсальную обработку делайте в копии базы. Она пишет в базу напрямую и может создать сотни лишних элементов за одно нажатие. Отменить такую загрузку одной кнопкой нельзя.

Порядок работы

  1. В поле режима выберите, куда грузить: справочник, табличная часть или регистр.
  2. Укажите конкретный объект, например справочник «Контрагенты».
  3. Откройте файл Excel кнопкой чтения файла на вкладке с табличным документом. Таблица появится прямо в форме.
  4. Укажите номер первой строки с данными (обычно 2, если в первой — заголовки).
  5. На вкладке настройки реквизитов отметьте, какие реквизиты загружать, и укажите номер колонки для каждого.
  6. Выполните контроль заполнения — обработка покажет ошибки без записи в базу.
  7. Если ошибок нет, запустите загрузку.

Настройки соответствия колонок можно сохранить в файл и подгрузить в следующий раз. Для регулярной загрузки прайсов это экономит 10–15 минут на каждой итерации.

Сопоставление колонок Excel и реквизитов 1С

Самый ответственный шаг. Ошибку в сопоставлении программа не заметит: если перепутать колонки «Цена» и «Количество», 1С честно запишет 15 000 штук по 3 рубля.

Три режима для каждой колонки

В универсальной обработке у каждого реквизита задаётся режим загрузки:

РежимЧто делаетКогда использовать
ИскатьНаходит в базе существующий объект по значению из колонкиСсылочные реквизиты: единица измерения, ставка НДС, группа, вид номенклатуры
УстанавливатьЗаписывает одно значение во все строки, колонка не нужнаВсе товары одного вида, одна единица «шт» для всего списка
ВычислятьСчитает значение выражением на встроенном языкеСклеить артикул и наименование, пересчитать цену с наценкой

Для режима «Искать» укажите, по какому полю искать: по наименованию, коду или реквизиту. Единицу измерения надёжнее искать по коду ОКЕИ (796 — штука), чем по наименованию.

Ключевой реквизит и обновление

Для справочника отметьте реквизит поиска — тот самый ключ из подготовки файла. Логика такая:

  • элемент с таким ключом найден — обработка обновит отмеченные реквизиты;
  • не найден — создаст новый элемент, если это не запрещено настройкой.

Если задача только обновить цены или артикулы у существующих товаров, запретите создание новых элементов. Тогда опечатка в ключе не породит дубль, а просто попадёт в протокол.

Пример схемы соответствия

Для прайса поставщика, который загружают в номенклатуру:

Сопоставление полей
Артикул (колонка A)→Номенклатура.Артикул — ключ поиска
Наименование (колонка B)→Номенклатура.Наименование и НаименованиеПолное
Ед. изм. (колонка C)→Единица измерения — режим «Искать» по коду ОКЕИ
НДС (колонка D)→Ставка НДС — режим «Искать»
Группа (колонка E)→Родитель — режим «Искать» по наименованию группы
Вид номенклатуры→режим «Устанавливать»: «Товары»

Ошибки при загрузке из Excel и как их исправить

Тексты сообщений зависят от обработки и релиза, поэтому ниже — симптомы, которые видит пользователь, и их реальные причины.

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

Если загрузка создала сотни ошибочных элементов, не удаляйте их по одному и не пытайтесь «перезалить сверху». Остановитесь, оцените масштаб и при необходимости восстановите копию базы, сделанную перед загрузкой.

Как автоматизировать регулярную загрузку из Excel

Когда прайс поставщика приходит каждую неделю, ручная загрузка перестаёт окупаться. Варианты от простого к сложному:

СпособЧто нужноПодходит для
Сохранённые настройки обработкиОдин файл настроекЗагрузка раз в неделю, файл всегда одного формата
Дополнительная обработка с регламентным заданиемПрограммист, подключение через «Дополнительные отчеты и обработки»Ежедневная загрузка из папки на сервере без участия пользователя
Обмен через EnterpriseData или Конвертацию данныхВнедренец, согласованный форматПостоянный поток из другой учётной системы, а не из Excel

Для второго варианта программист пишет обработку, которая читает файл встроенными средствами платформы. Основа выглядит так:

// Читаем файл Excel без установленного Microsoft Excel
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
    Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
    Если ПустаяСтрока(Артикул) Тогда
        Продолжить;
    КонецЕсли;
    Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);

    Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
    Если Ссылка.Пустая() Тогда
        ТоварОбъект = Справочники.Номенклатура.СоздатьЭлемент();
        ТоварОбъект.Артикул = Артикул;
    Иначе
        ТоварОбъект = Ссылка.ПолучитьОбъект();
    КонецЕсли;

    ТоварОбъект.Наименование = Наименование;
    ТоварОбъект.НаименованиеПолное = Наименование;
    ТоварОбъект.Записать();
КонецЦикла;

Пример обновляет существующие товары и создаёт новые по артикулу. В рабочей обработке для новых элементов дополнительно заполняют обязательные реквизиты конфигурации: в БП 3.0 это как минимум вид номенклатуры и единица измерения. Перед Записать() полезно добавить проверку заполнения и запись ошибок в журнал, чтобы утром было видно, какие строки не загрузились.

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

Когда загрузка из Excel — не лучшая идея

Иногда правильнее отказаться от Excel вовсе:

  • 🔄 Перенос из другой базы 1С. Между конфигурациями фирмы 1С есть готовые правила переноса и обмены. Через Excel теряются связи: ссылки на контрагентов, договоры, история документов.
  • 🏦 Банковская выписка. Банк выгружает файл в формате обмена с 1С (kl_to_1c.txt), его загружают через обработку обмена с банком, а не через Excel.
  • 📑 Входящие документы от поставщика. Если контрагент работает через ЭДО, УПД придёт в базу формализованным документом с сопоставлением номенклатуры — без промежуточной таблицы.
  • 💰 Остатки на начало работы. Их вводят специальными документами ввода остатков. Табличную часть такого документа можно заполнить из Excel, но сам документ создавайте штатно, а не загружайте записи в регистры напрямую.

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

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

Нужен ли установленный Excel, чтобы 1С прочитала xlsx?
Нет. Платформа 8.3 читает xls и xlsx своими средствами. Excel нужен только для подготовки файла.
Можно ли загрузить CSV вместо xlsx?
Можно, но следите за кодировкой и разделителем. Файл в другой кодировке даст «кракозябры» вместо кириллицы, а точка с запятой в данных разобьёт строку на лишние колонки. Проще пересохранить CSV в xlsx.
Как загрузить картинки товаров вместе с таблицей?
Через Excel — никак: картинки не хранятся в ячейках как значения. Их загружают отдельно, присоединёнными файлами к карточкам, или специальной обработкой по имени файла, совпадающему с артикулом.
Почему у пользователя нет кнопки открытия внешней обработки?
У него нет права на открытие внешних отчётов и обработок. Либо выдайте право через профиль групп доступа, либо подключите обработку как дополнительную — тогда отдельное право не нужно.
Сколько строк можно загрузить за раз?
Жёсткого лимита нет, но десятки тысяч строк в файловой базе грузятся долго. Большой файл разбейте на части по 3–5 тысяч строк: так проще найти ошибку и не придётся повторять всю загрузку.