Импорт таблицы Excel в 1С 8.3: справочники, цены и документы без ручного ввода
Содержание
Загрузить данные в 1С из Excel можно тремя способами: встроенной командой Загрузить в списке справочника или в табличной части документа, внешней обработкой «Загрузка данных из табличного документа» или собственным кодом. Для номенклатуры и строк накладной в БП 3.0 и УТ 11 почти всегда хватает первого способа. Обработка нужна для справочников и регистров, где встроенной загрузки нет.
Частое заблуждение — что достаточно «открыть Excel в 1С», и программа сама разберётся. Не разберётся. Девять из десяти неудачных загрузок ломаются ещё в Excel: объединённые ячейки, числа текстом, лишние пробелы в артикулах. Поэтому начинаем с файла, а не с 1С.
Готовим файл Excel к импорту в 1С
1С читает лист как простую сетку: строка — один объект, колонка — один реквизит. Всё, что красиво для человека, мешает загрузке.
Что сделать с таблицей до загрузки:
- 🧹 Одна строка заголовков. Шапку из трёх строк, логотип и итоги внизу удалите.
- 🔗 Без объединённых ячеек. Выделите весь лист и снимите объединение.
- 🔢 Числа — числами. Цены и количество не должны быть текстом с пробелами вроде
1 250,00 ₽. Уберите символ валюты и пробел-разделитель тысяч. - ✂️ Без пробелов по краям. Артикул
А-100с пробелом в конце 1С не найдёт. В Excel поможет функцияСЖПРОБЕЛЫво вспомогательной колонке. - 🅰️ ИНН, КПП, коды и штрихкоды — текстом. Иначе Excel срежет ведущий ноль, а штрихкод EAN-13 превратит в
4,6E+12. - 📅 Даты — датами одного формата, без смеси
01.02.2025и1 февраля. - 📄 Один лист — один вид данных. Номенклатуру и контрагентов держите в разных файлах.
Сохраняйте файл в .xlsx. Современная платформа 8.3 читает этот формат сама, установленный Excel на компьютере не нужен. Старый .xls и .csv загружаются хуже: с .csv чаще всего и всплывают проблемы с кодировкой.
Добавьте в файл колонку с ключом поиска — артикулом, кодом или ИНН. Без ключа повторная загрузка того же файла создаст полный комплект дублей.
Встроенная команда «Загрузить» в списках и документах
В БП 3.0, УТ 11 и УНФ загрузка из файла встроена в типовые формы. Это самый безопасный путь: программа сама подсказывает, какие колонки ей нужны.
Где команда есть точно:
| Что загружаем | Где искать команду |
|---|---|
| Номенклатура | Список справочника «Номенклатура», командная панель |
| Строки накладной, счёта, реализации | Табличная часть «Товары» внутри документа |
| Цены по прайсу | Табличная часть документа «Установка цен номенклатуры» |
В некоторых формах кнопка спрятана в меню Ещё. Название в разных релизах звучит как Загрузить или Загрузить из файла.
Как проходит загрузка
- Нажмите
Загрузить. Откроется окно с пустой таблицей и шапкой колонок, которые ждёт 1С. - Скопируйте данные из Excel (
Ctrl+C) и вставьте в эту таблицу (Ctrl+V). Второй вариант — кнопка загрузки из файла в том же окне. - Проверьте, что колонки встали на свои места. Если порядок в Excel другой, переставьте колонки в файле или укажите соответствие в окне.
- Нажмите
Далее. 1С покажет, какие строки она сопоставила с существующими элементами, а какие создаст заново. - Для несопоставленных строк выберите: создать новые элементы или подобрать вручную.
- Завершите загрузку и откройте пару элементов, чтобы проверить результат.
Шаг 4 — главный. Если программа пишет, что из 500 строк сопоставлено 0, а у вас в базе эти товары уже есть, остановитесь: скорее всего, не совпадает ключ (пробелы, другой артикул, другое наименование).
Обработка «Загрузка данных из табличного документа»
Когда встроенной команды нет — например, для договоров, счетов учёта номенклатуры или регистра сведений — используют внешнюю обработку
ЗагрузкаДанныхИзТабличногоДокумента.epf. Для управляемого интерфейса нужна её версия для управляемых форм. Обработка распространяется фирмой 1С в составе материалов ИТС.
Запуск
- Откройте 1С в режиме Предприятие под пользователем с правами администратора.
- Выберите
Файл → Открытьи укажите файл.epf. - Платформа выдаст предупреждение защиты от опасных действий. Если файл получен из надёжного источника, разрешите открытие.
Открывать внешние обработки можно только пользователю с соответствующим правом. Обычному бухгалтеру его обычно не дают — это нормально, загрузку проводит администратор или ответственный.
Что настроить в обработке
- 🎯 Режим загрузки — в справочник, в табличную часть документа или в регистр сведений .
- 📚 Вид объекта — какой именно справочник или документ заполняем.
- 📋 Табличный документ — сюда вставляете данные из Excel или открываете файл.
- 🔢 Первая строка данных — обычно 2, если в первой строке заголовки.
- ↔️ Номера колонок — для каждого реквизита указываете, из какой колонки брать значение.
Настройки сохраняются в файл. Если загрузку повторяете раз в месяц, сохраните их один раз и потом только подставляйте новый файл.
Сопоставление колонок и типов данных в 1С
Это место, где решается, будет ли загрузка чистой или придётся удалять 2000 дублей.
Для каждого реквизита обработка позволяет выбрать, как получить значение:
| Режим | Что делает | Когда брать |
|---|---|---|
| Искать / поле поиска | По этой колонке 1С ищет существующий элемент | Артикул, код, ИНН — один ключ на загрузку |
| Устанавливать | Берёт значение из колонки как есть | Наименование, цена, количество |
| Значение по умолчанию | Одно значение для всех строк | Вид номенклатуры, ставка НДС, единица |
| Вычислять | Значение считается выражением на встроенном языке | Склейка полей, пересчёт единиц |
Ссылочные реквизиты
Самая частая ловушка — реквизиты-ссылки: единица измерения, ставка НДС, группа, страна. В Excel там просто текст, а 1С нужно найти по этому тексту элемент другого справочника.
- Если в Excel написано
шт., а в справочнике единиц —шт, ссылка останется пустой. - Ставку НДС пишите так, как она называется в перечислении программы, например
20%, а не0,2. - Группы номенклатуры создайте заранее, иначе часть товаров «упадёт» в корень справочника.
Флажок «Не создавать новых элементов» включайте при первой пробной загрузке. Так вы увидите, что программа нашла, ничего не испортив.
Номенклатура и контрагенты: особенности справочников
Номенклатура
В БП 3.0 у карточки номенклатуры есть обязательные для учёта поля: вид номенклатуры, единица измерения, ставка НДС. Если их не заполнить при загрузке, товар создастся, но в документе вылезут пустые счета учёта или ставка «Без НДС».
Порядок, который работает:
- Создайте в базе нужные виды номенклатуры и группы.
- Убедитесь, что для видов настроены счета учёта (
Справочники → Товары и услуги → Счета учета номенклатуры). - Грузите номенклатуру с ключом по артикулу, вид и ставку НДС задайте значением по умолчанию.
- Наименование для печати (полное наименование) загрузите отдельной колонкой — оно попадает в накладные и счета-фактуры.
Контрагенты
Для контрагентов ключ поиска — ИНН. Наименование для этого не годится: ООО «Ромашка» и Ромашка ООО для программы разные строки.
- Колонку ИНН держите в текстовом формате, проверьте длину: 10 цифр у организации, 12 у ИП и физлица.
- КПП загружайте отдельной колонкой, только для юрлиц.
- Вид контрагента (юрлицо или физлицо) лучше задать по умолчанию, разбив файл на две части.
После загрузки откройте несколько карточек и воспользуйтесь заполнением реквизитов по ИНН (работает при подключённой интернет-поддержке). Так подтянутся адрес и полное наименование из ЕГРЮЛ, и не придётся грузить их из Excel.
Договоры с контрагентами грузят вторым проходом, когда контрагенты уже есть: ключ владельца договора — тот же ИНН.
Прайс-лист поставщика и документы из Excel
Цены из прайса
Прайс-лист — типичный повод загрузить в 1С данные из Excel. В БП 3.0 цены хранятся документом «Установка цен номенклатуры» (раздел Склад). Создайте документ, выберите тип цен и загрузите в табличную часть колонки «Артикул» и «Цена».
Если в прайсе есть товары, которых нет в базе, сначала загрузите номенклатуру, потом цены. Иначе строки с новыми позициями останутся пустыми.
Накладная поставщика
Поставщик прислал счёт на 300 позиций в Excel — не набирайте его вручную:
- Создайте документ поступления, заполните шапку: контрагент, договор, склад.
- В табличной части «Товары» нажмите
Загрузить. - Вставьте колонки: артикул или наименование, количество, цена.
- Сверьте итоговую сумму документа с суммой в файле поставщика до проведения.
Много документов сразу
Встроенная загрузка и универсальная обработка заполняют один документ за раз. Если нужно создать, например, 150 реализаций из одной таблицы, есть два пути:
- 🔄 настроить обмен через формат EnterpriseData (при переходе из другой программы);
- 🛠️ написать обработку, которая группирует строки Excel по номеру документа и создаёт документы в цикле.
Массовое создание документов делайте сначала на копии базы. Перед загрузкой в рабочую базу сделайте резервную копию. Удалять 150 ошибочных проведённых документов по одному долго, а помеченные на удаление ещё тянут за собой движения.
Ошибки при загрузке из Excel: кодировка, форматы, пустые ссылки
Ещё одна неочевидная проблема — разделитель дробной части. Если файл пришёл из программы с английскими настройками, в нём 1250.50 вместо 1250,50. 1С может прочитать такую цену неверно. Замените точку на запятую в Excel до загрузки.
Автоматизация: загрузка из Excel кодом и регламентным заданием
Когда один и тот же файл приходит каждую неделю, ручная загрузка надоедает. Тогда пишут свою обработку. Основа — объект ТабличныйДокумент, который умеет прочитать .xlsx.
Пример: обновить или создать номенклатуру по артикулу. Колонка 1 — артикул, колонка 2 — наименование, данные со второй строки.
Процедура ЗагрузитьНоменклатуру(ИмяФайла) Экспорт
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Стр = Формат(НомерСтроки, "ЧГ=0");
Артикул = СокрЛП(ТабДок.Область("R" + Стр + "C1").Текст);
Наименование = СокрЛП(ТабДок.Область("R" + Стр + "C2").Текст);
Если ПустаяСтрока(Артикул) Или ПустаяСтрока(Наименование) Тогда
Продолжить;
КонецЕсли;
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Ссылка.Пустая() Тогда
Объект = Справочники.Номенклатура.СоздатьЭлемент();
Объект.Артикул = Артикул;
Иначе
Объект = Ссылка.ПолучитьОбъект();
КонецЕсли;
Объект.Наименование = Наименование;
Объект.Записать();
КонецЦикла;
КонецПроцедуры
Что важно в этом коде:
- Пустой артикул пропускаем. Иначе
НайтиПоРеквизитунайдёт любой товар без артикула и перезапишет его. Формат(..., "ЧГ=0")убирает пробел-разделитель из номера строки. Без него на строке 1000 адрес ячейки станетR1 000C1и чтение сломается.- Процедура работает на сервере, поэтому файл должен лежать там, где его видит сервер 1С. С клиента файл сначала передают на сервер через помещение во временное хранилище.
- Для новых элементов в реальной обработке заполните вид номенклатуры, единицу и ставку НДС — как в разделе про справочники.
Дальше процедуру можно повесить на регламентное задание, которое раз в сутки забирает файл из сетевой папки. Чтобы не прочитать файл повторно, после загрузки перемещайте его в подпапку «Загружено».
Свою обработку меняйте только через расширение или внешний файл .epf, а не правкой типовой конфигурации. Иначе при следующем обновлении придётся сравнивать и объединять изменения вручную.
Чего не делать
Вариант через COM-объект Excel.Application встречается в старых инструкциях. Он требует установленного Excel на сервере, работает медленно и зависает при открытом диалоге в Excel. Чтение через ТабличныйДокумент проще и надёжнее.