Загрузка данных из Excel в 1С 8.3: способы и разбор ошибок

· 10 мин

Содержание

Прайс поставщика на 800 строк в Excel, а в базе пусто. Руками вбивать несколько часов, и половина артикулов уйдёт с опечатками. Чтобы загрузить Excel в 1С, не нужен программист: в 1С 8.3 для типовых справочников и документов есть встроенная загрузка из файла. Она читает таблицу, сопоставляет колонки с реквизитами и создаёт записи.

Если встроенной загрузки не хватает (нестандартный объект, сложная логика, регулярный обмен), подключают внешнюю обработку или пишут код. Ниже все пути от простого к сложному. Начинать стоит с подготовки файла: до 80% проблем при импорте рождаются в самом Excel, а не в 1С.

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

Правила простые, но их нарушают чаще всего.

  • ✅ Одна строка заголовков в самом верху. Никаких объединённых ячеек над таблицей, логотипов, строк «Прайс-лист на дату».
  • ✅ Одна строка — одна запись. Итоги, подытоги и пустые разделители между группами удалите.
  • ✅ Один столбец — один тип данных. Если в колонке «Количество» затесалось «по запросу», загрузка споткнётся именно на этой строке.
  • ✅ Никаких объединённых ячеек в области данных. Программа прочитает значение только из первой ячейки объединения.
  • ✅ Скрытые строки и столбцы удалите или раскройте. Часть из них попадёт в загрузку, и вы получите неожиданные данные.

Ещё три момента, которые ломают импорт незаметно:

  1. Числа-как-текст. Ячейка выглядит как 1250, но слева стоит зелёный уголок: это строка. Выделите столбец, примените числовой формат и пересохраните значения (удобный приём: умножить колонку на 1 через специальную вставку).
  2. Пробелы и неразрывные пробелы. В названиях контрагентов и номенклатуры лишний пробел в конце даст дубль при сопоставлении. Функция СЖПРОБЕЛЫ в Excel убирает обычные пробелы, неразрывные (символ с кодом 160) нужно заменить отдельно.
  3. Ведущие нули. Артикул 00417 превратится в 417, если колонка имела числовой формат. Задайте текстовый формат до ввода данных, а не после.

Формат файла: надёжнее всего .xlsx. Старый .xls читается, но у него меньше шансов пережить спецсимволы. Если файл большой (десятки тысяч строк), сохраните его в .csv или разбейте на части.

Перед загрузкой поставьте в первую колонку номер строки. Когда 1С сообщит «ошибка в строке 143», вы сразу найдёте проблемную запись в исходнике.

Стандартная загрузка данных из файла в 1С 8.3

В большинстве типовых конфигураций (Бухгалтерия предприятия 3.0, Управление торговлей 11, ЗУП 3.1, Розница) загрузка встроена в сами списки. Откройте нужный справочник или список документов, например «Номенклатура» или «Контрагенты», и найдите в командной панели меню «Ещё»: в нём есть команда загрузки данных из файла. Если её не видно, откройте настройку формы списка и проверьте, не скрыта ли команда.

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

  1. Откройте список и вызовите загрузку из файла.
  2. Нажмите «Выбрать файл» и укажите ваш .xlsx. Либо скопируйте диапазон ячеек в Excel и вставьте в табличную область окна загрузки: это быстрее для небольших объёмов.
  3. Программа покажет таблицу. Первой строкой идут заголовки колонок из 1С, ниже ваши данные.
  4. Сопоставьте колонки с реквизитами (подробно в следующем разделе).
  5. Нажмите кнопку проверки или «Далее»: система прогонит данные без записи и покажет проблемные строки.
  6. Исправьте ошибки и запустите загрузку.

У встроенного механизма есть удобная особенность: шаблон. В окне можно скачать пустой образец с нужными колонками в формате Excel, заполнить его и загрузить обратно. Так вы гарантированно попадёте в структуру, которую ждёт программа.

А если встроенной команды в нужном списке нет? Тогда работает универсальная обработка «Загрузка данных из табличного документа». Она есть в составе многих типовых конфигураций, а в других подключается как дополнительная внешняя обработка. Искать её проще через поиск команд интерфейса (значок лупы или Ctrl+F в разделе меню) по слову «Загрузка».

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

Как настроить соответствие колонок и ключи сопоставления

Это самый ответственный этап. Здесь решается, создаст ли 1С новые элементы или обновит существующие.

Для каждой колонки файла вы выбираете реквизит 1С. Колонки, которые не нужны, отключаете. Затем указываете поле сопоставления (его ещё называют ключевым): по нему программа ищет, есть ли уже такая запись в базе.

Как выбирать ключ:

  • Для номенклатуры лучший ключ — артикул или код. Наименование работает хуже: 50 позиций «Кабель ВВГ 3х2,5» с разной длиной бухты превратятся в одну или в дубли.
  • Для контрагентов — ИНН (и КПП для организаций с обособленными подразделениями). Один ИНН может встречаться у головной организации и филиалов.
  • Для сотрудников — табельный номер или ИНН физлица.

Режим при совпадении обычно предлагает выбор: «Обновлять найденные» или «Только создавать новые». Для первичной загрузки справочника выбирайте создание. Для актуализации цен, наоборот, обновление.

Отдельная тема: ссылочные поля. Когда в колонке «Единица измерения» написано шт, а в справочнике единица называется шт., строка не сопоставится. 1С либо создаст новую единицу, либо выдаст ошибку, в зависимости от настройки «Создавать, если не найдено». Заранее приведите значения в файле к тем, что уже есть в базе. Быстрая проверка: откройте справочник и сравните написание.

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

Загрузка Excel в 1С через XML и JSON: что на самом деле можно

В этой теме есть путаница, которую стоит развеять. Универсальный обмен данными в формате XML (в типовых конфигурациях он находится в разделе «Администрирование → Синхронизация данных» и в сервисных обработках) предназначен для обмена между базами 1С по правилам конвертации. Excel он напрямую не читает.

Что это значит на практике:

  • Если у вас таблица Excel, используйте загрузку из файла или обработку, описанные выше.
  • Если нужно обменяться данными между двумя базами 1С, настраивайте правила обмена и синхронизацию. Excel там промежуточным звеном быть не должен.
  • Если данные приходят из внешней системы в JSON или XML (интернет-магазин, учётная система партнёра), нужна интеграция: HTTP-сервис, веб-сервис или чтение файла кодом. Excel конвертируют в нужный формат отдельным скриптом, а потом файл разбирает код 1С.

Конвертация Excel в XML имеет смысл в одном случае: у вас есть готовая обработка, которая ждёт XML определённой схемы. Тогда выгрузка из Excel формируется макросом, а 1С разбирает результат. Для обычной загрузки номенклатуры эта цепочка избыточна: лишний шаг — лишний источник ошибок.

Кодировка, числа и даты: что ломается при импорте

Самые частые симптомы и причины собраны ниже.

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

Ещё один случай: Excel показывает значение округлённым, а в ячейке хранится длинное число. Цена 99,9 на экране может быть 99,89999 в данных. Посмотрите содержимое ячейки в строке формул перед загрузкой, а не только на экране.

Автоматизация: внешние обработки и код на встроенном языке

Когда загрузка нужна каждую неделю (прайс поставщика, остатки склада, выписка), ручное сопоставление надоедает. Есть два пути.

Внешняя обработка

Её подключают через дополнительные отчёты и обработки или открывают как файл .epf из меню «Файл → Открыть». Обработка запоминает настройку колонок и выполняет всё в один клик. Готовые обработки разных авторов гуляют по сети, но к ним стоит относиться осторожно: проверяйте их на копии базы и убедитесь, что они рассчитаны на вашу конфигурацию и релиз.

Чтение таблицы кодом

Современные платформы 8.3 умеют читать .xlsx средствами объекта ТабличныйДокумент, без запуска Excel. Это работает на сервере и не требует установленного Office.

Процедура ЗагрузитьПрайс(ПутьКФайлу)

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

    // Первая строка — заголовки, данные со второй
    Для НомерСтроки = 2 По Таблица.ВысотаТаблицы Цикл

        Артикул = СокрЛП(Таблица.Область(НомерСтроки, 1, НомерСтроки, 1).Текст);
        Название = СокрЛП(Таблица.Область(НомерСтроки, 2, НомерСтроки, 2).Текст);
        Цена = Таблица.Область(НомерСтроки, 3, НомерСтроки, 3).Значение;

        Если ПустаяСтрока(Артикул) Тогда
            Продолжить;
        КонецЕсли;

        // Дальше: поиск элемента по артикулу и запись
        Сообщить(СтрШаблон("Строка %1: %2, %3, цена %4",
            Формат(НомерСтроки, "ЧГ=0"), Артикул, Название, Цена));

    КонецЦикла;

КонецПроцедуры

Это каркас: он читает значения, а запись в справочник вы добавляете под свою задачу (поиск по артикулу, создание нового элемента, обновление цены). Файл на сервере должен лежать там, куда есть доступ у учётной записи, под которой работает служба 1С. Для клиент-серверной базы путь вида C:\Users\Иван\Desktop\price.xlsx с сервера не виден. Передавайте файл через хранилище значения или временный файл.

Для работы через Excel.Application (COM) нужен установленный Excel на той машине, где выполняется код. Этот способ медленнее и капризнее, поэтому его оставляют для случаев, когда нужны макросы или особое форматирование. После работы обязательно закрывайте приложение (Excel.Quit()), иначе в памяти останется невидимый процесс.

Массовую запись в справочник в цикле без транзакции и без проверки на дубли никогда не запускайте на рабочей базе с первого раза. Сначала отладьте на копии на 20-30 строках.

Проверка результата и типичные ошибки после загрузки

Загрузка прошла без сообщений об ошибках — ещё не повод считать работу сделанной. Проверьте результат.

Проверка после загрузки
Выполнено: 0 / 5

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

Ошибки, которые встречаются после успешной загрузки:

  • 🔹 Не заполнен вид номенклатуры или группа. Загрузка создала записи, но проводить документы по ним нельзя. Проверьте обязательные реквизиты на нескольких элементах.
  • 🔹 Неверная ставка НДС. Колонка в файле содержала 20%, а в 1С значение называется 20% с другим регистром или с пробелом. Сопоставление пропустило поле, и подставилось значение по умолчанию.
  • 🔹 Остатки загрузились документом, но не проведены. Для остатков обычно создаётся документ ввода начальных остатков. Его нужно провести, и это отдельное действие.
  • 🔹 Загрузилась только часть строк. Причина — пустая строка внутри таблицы или объединённая ячейка. Программа считает пустую строку концом данных.

Как не повторять эти ошибки: храните эталонный шаблон файла, ведите журнал загрузок (дата, источник, количество строк) и не меняйте порядок колонок без необходимости.

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

Можно ли загрузить Excel в 1С 8.3 без программиста?
Да. Для справочников и простых документов типовых конфигураций есть встроенная загрузка из файла и универсальная обработка «Загрузка данных из табличного документа». Программист нужен только для нестандартных объектов.
Какой формат лучше: xls или xlsx?
.xlsx. Он современнее, надёжнее переносит спецсимволы и читается без установленного Excel на сервере.
Загрузка создаёт дубли, как этого избежать?
Выберите правильное поле сопоставления (артикул, ИНН), приведите написание значений к базе и включите режим «обновлять найденные». Наименование как единственный ключ не годится.
Сколько строк можно загрузить за один раз?
Жёсткого лимита нет, но удобно загружать пакетами до нескольких тысяч строк. Большие файлы разбивайте: так проще найти ошибку и не держать форму открытой часами.
Нужно ли ставить Excel на сервер 1С?
Только если код работает через COM-объект Excel.Application. При чтении средствами ТабличныйДокумент установленный Office не нужен.