Перенос таблицы Excel в базу 1С: три способа и разбор ошибок
Содержание
Чтобы выгрузить данные из 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:
- Откройте
Справочники → Номенклатура. - Нажмите
Загрузитьв командной панели списка. Если кнопки не видно, проверьте менюЕщё. - В открывшемся помощнике выберите файл или вставьте данные из Excel через буфер обмена (
Ctrl+Cв Excel,Ctrl+Vв таблицу помощника). - Сопоставьте колонки файла с реквизитами 1С (подробнее — в разделе ниже).
- Проверьте результат на шаге предпросмотра: строки, которые программа не смогла разобрать, будут отмечены.
- Нажмите кнопку завершения загрузки и откройте пару созданных карточек для контроля.
Загрузка в табличную часть документа
Типичный сценарий — поставщик прислал счёт на 200 позиций в Excel, а вводить их вручную в поступление долго.
- Создайте документ, например
Покупки → Поступление (акты, накладные, УПД). - Заполните шапку: контрагента, договор, склад.
- На вкладке «Товары» найдите команду
Загрузитьнад табличной частью. - Вставьте или выберите файл, сопоставьте колонки «Номенклатура», «Количество», «Цена».
- Позиции, которых нет в базе, программа предложит создать или сопоставить с существующими вручную.
Встроенный помощник загружает только то, что разработчики предусмотрели для конкретной формы. Произвольный регистр сведений или нетиповой реквизит через него не заполнить — для этого нужна универсальная обработка.
Универсальная обработка загрузки из табличного документа
Обработка «Загрузка данных из табличного документа» (файл ЗагрузкаДанныхИзТабличногоДокумента.epf) — классический инструмент внедренцев. Она умеет загружать данные в:
- справочник (создавать новые элементы и обновлять существующие);
- табличную часть выбранного документа или справочника;
- регистр сведений .
Обработку распространяют на диске ИТС и в комплекте поставки технологических обработок. Берите версию для управляемых форм: старая версия для обычного приложения в интерфейсе «Такси» не откроется.
Как запустить
Есть два варианта:
- Разово. Главное меню (кнопка с тремя полосками в заголовке окна) →
Файл → Открыть→ выберите.epf. Платформа покажет предупреждение безопасности; открыть файл может только пользователь с правом на внешние обработки. - Постоянно. Включите флажок в
Администрирование → Печатные формы, отчеты и обработки, затем добавьте файл в «Дополнительные отчеты и обработки». После этого обработка доступна всем пользователям с нужными правами и не требует подтверждения при каждом открытии.
Первую загрузку через универсальную обработку делайте в копии базы. Она пишет в базу напрямую и может создать сотни лишних элементов за одно нажатие. Отменить такую загрузку одной кнопкой нельзя.
Порядок работы
- В поле режима выберите, куда грузить: справочник, табличная часть или регистр.
- Укажите конкретный объект, например справочник «Контрагенты».
- Откройте файл Excel кнопкой чтения файла на вкладке с табличным документом. Таблица появится прямо в форме.
- Укажите номер первой строки с данными (обычно 2, если в первой — заголовки).
- На вкладке настройки реквизитов отметьте, какие реквизиты загружать, и укажите номер колонки для каждого.
- Выполните контроль заполнения — обработка покажет ошибки без записи в базу.
- Если ошибок нет, запустите загрузку.
Настройки соответствия колонок можно сохранить в файл и подгрузить в следующий раз. Для регулярной загрузки прайсов это экономит 10–15 минут на каждой итерации.
Сопоставление колонок Excel и реквизитов 1С
Самый ответственный шаг. Ошибку в сопоставлении программа не заметит: если перепутать колонки «Цена» и «Количество», 1С честно запишет 15 000 штук по 3 рубля.
Три режима для каждой колонки
В универсальной обработке у каждого реквизита задаётся режим загрузки:
| Режим | Что делает | Когда использовать |
|---|---|---|
| Искать | Находит в базе существующий объект по значению из колонки | Ссылочные реквизиты: единица измерения, ставка НДС, группа, вид номенклатуры |
| Устанавливать | Записывает одно значение во все строки, колонка не нужна | Все товары одного вида, одна единица «шт» для всего списка |
| Вычислять | Считает значение выражением на встроенном языке | Склеить артикул и наименование, пересчитать цену с наценкой |
Для режима «Искать» укажите, по какому полю искать: по наименованию, коду или реквизиту. Единицу измерения надёжнее искать по коду ОКЕИ (796 — штука), чем по наименованию.
Ключевой реквизит и обновление
Для справочника отметьте реквизит поиска — тот самый ключ из подготовки файла. Логика такая:
- элемент с таким ключом найден — обработка обновит отмеченные реквизиты;
- не найден — создаст новый элемент, если это не запрещено настройкой.
Если задача только обновить цены или артикулы у существующих товаров, запретите создание новых элементов. Тогда опечатка в ключе не породит дубль, а просто попадёт в протокол.
Пример схемы соответствия
Для прайса поставщика, который загружают в номенклатуру:
Ошибки при загрузке из Excel и как их исправить
Тексты сообщений зависят от обработки и релиза, поэтому ниже — симптомы, которые видит пользователь, и их реальные причины.
Если загрузка создала сотни ошибочных элементов, не удаляйте их по одному и не пытайтесь «перезалить сверху». Остановитесь, оцените масштаб и при необходимости восстановите копию базы, сделанную перед загрузкой.
Как автоматизировать регулярную загрузку из Excel
Когда прайс поставщика приходит каждую неделю, ручная загрузка перестаёт окупаться. Варианты от простого к сложному:
| Способ | Что нужно | Подходит для |
|---|---|---|
| Сохранённые настройки обработки | Один файл настроек | Загрузка раз в неделю, файл всегда одного формата |
| Дополнительная обработка с регламентным заданием | Программист, подключение через «Дополнительные отчеты и обработки» | Ежедневная загрузка из папки на сервере без участия пользователя |
| Обмен через EnterpriseData или Конвертацию данных | Внедренец, согласованный формат | Постоянный поток из другой учётной системы, а не из Excel |
Для второго варианта программист пишет обработку, которая читает файл встроенными средствами платформы. Основа выглядит так:
// Читаем файл Excel без установленного Microsoft Excel
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
Если ПустаяСтрока(Артикул) Тогда
Продолжить;
КонецЕсли;
Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 2).Текст);
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Ссылка.Пустая() Тогда
ТоварОбъект = Справочники.Номенклатура.СоздатьЭлемент();
ТоварОбъект.Артикул = Артикул;
Иначе
ТоварОбъект = Ссылка.ПолучитьОбъект();
КонецЕсли;
ТоварОбъект.Наименование = Наименование;
ТоварОбъект.НаименованиеПолное = Наименование;
ТоварОбъект.Записать();
КонецЦикла;
Пример обновляет существующие товары и создаёт новые по артикулу. В рабочей обработке для новых элементов дополнительно заполняют обязательные реквизиты конфигурации: в БП 3.0 это как минимум вид номенклатуры и единица измерения. Перед Записать() полезно добавить проверку заполнения и запись ошибок в журнал, чтобы утром было видно, какие строки не загрузились.
Для регламентного задания договоритесь с поставщиком о неизменной структуре файла. Новая колонка в середине прайса сдвинет все номера колонок — обработка, которая ищет колонки по названию заголовка, переживёт это спокойнее, чем жёстко заданные номера.
Когда загрузка из Excel — не лучшая идея
Иногда правильнее отказаться от Excel вовсе:
- 🔄 Перенос из другой базы 1С. Между конфигурациями фирмы 1С есть готовые правила переноса и обмены. Через Excel теряются связи: ссылки на контрагентов, договоры, история документов.
- 🏦 Банковская выписка. Банк выгружает файл в формате обмена с 1С (
kl_to_1c.txt), его загружают через обработку обмена с банком, а не через Excel. - 📑 Входящие документы от поставщика. Если контрагент работает через ЭДО, УПД придёт в базу формализованным документом с сопоставлением номенклатуры — без промежуточной таблицы.
- 💰 Остатки на начало работы. Их вводят специальными документами ввода остатков. Табличную часть такого документа можно заполнить из Excel, но сам документ создавайте штатно, а не загружайте записи в регистры напрямую.
Прямая запись в регистры накопления и бухгалтерии через внешние обработки обходит логику проведения. Остатки после такой загрузки не сходятся с документами, и найти расхождение потом очень трудно.