Загрузка данных из Excel в 1С 8.3: способы и решение ошибок
Содержание
Загрузить номенклатуру или контрагентов из Excel в 1С 8.3 быстрее всего типовой командой Загрузить прямо из формы списка справочника — файл .xlsx подхватывается без обработок. Если данные идут в документ или в нетиповой справочник, подойдёт внешняя обработка загрузки из табличного документа, а разовую выгрузку из чужой системы удобнее переливать через COM или чтение файла кодом.
Ниже — все пять рабочих путей: от кнопки в интерфейсе до программного чтения .xlsx, плюс подготовка файла, сопоставление колонок и разбор ошибок, из-за которых импорт обычно спотыкается.
Готовим файл Excel: от этого зависит половина успеха
Большинство сбоев при загрузке начинается не в 1С, а в самом файле. Приведите его к табличному виду до того, как откроете окно импорта.
- ✅ Одна строка — один объект. Шапка справочника или строка документа. Никаких объединённых ячеек, подытогов и пустых строк между данными.
- ✅ Заголовки колонок в первой строке. По ним вы потом свяжете поля файла с реквизитами 1С.
- ✅ Числа — числами, даты — датами. Проверьте формат ячеек: цена, записанная как текст
1 200,00 ₽, в 1С приедет строкой и не встанет в числовой реквизит. - ✅ Коды и артикулы — текстовым форматом. Иначе Excel срежет ведущие нули (
007→7) и переведёт длинные коды в экспоненту. - ✅ Разделитель дробной части — тот, что ждёт ваша система (обычно запятая). Лишние пробелы-разделители тысяч лучше убрать.
Сохраняйте книгу в формате .xlsx (Книга Excel). Старый .xls и .csv тоже читаются, но .xlsx даёт меньше всего сюрпризов с кодировкой и типами.
Если в таблице есть обязательные для 1С значения, которых нет в выгрузке (например, единица измерения или ставка НДС), добавьте колонку с одинаковым значением на все строки — это проще, чем доставлять реквизит вручную после импорта.
Отдельно проверьте строки, которые Excel любит портить. Дата 01.03 без года он превращает в 1 марта текущего года, телефон с + — в формулу, а длинный штрихкод 4601234567890 — в число с округлением. Такие колонки заранее переведите в текстовый формат и при необходимости допишите недостающее (год, код страны) прямо в файле.
Какой способ загрузки выбрать
Путей переноса данных из Excel несколько, и выбор зависит от того, куда грузим и как часто.
| Способ | Когда подходит | Что нужно |
|---|---|---|
| Типовая команда «Загрузить» | Номенклатура, контрагенты, цены в типовой конфигурации | Ничего, встроено |
| Внешняя обработка загрузки | Документы и нетиповые справочники | Файл обработки .epf |
| COM-соединение с Excel | Разовый перенос, сложная логика | Excel на компьютере |
Чтение файла кодом (ТабличныйДокумент) | Регулярная загрузка без Excel на сервере | Код в обработке |
| Через CSV/XML | Обмен с внешними системами | Согласованный формат |
Логика простая: для типовых справочников всегда сначала пробуйте встроенную команду — она не требует ни файлов обработок, ни программиста. Код и COM берите, только когда штатных средств не хватает.
Загрузка через типовую команду в форме списка
В 1С:Бухгалтерии 3.0, Управлении торговлей 11 и других типовых конфигурациях на платформе 8.3 встроен механизм загрузки из файла для ключевых справочников.
- Откройте нужный справочник, например
Справочники → Номенклатура(в УТ 11 —НСИ и администрирование → Номенклатура). - В командной панели списка нажмите
Загрузить(если кнопки не видно, разверните менюЕщё). - Выберите файл
.xlsxна диске. 1С покажет его содержимое таблицей. - Свяжите колонки файла с реквизитами справочника. В шапке каждой колонки укажите, какому полю она соответствует: «Наименование», «Артикул», «Цена» и т. д.
- Отметьте, по какому полю искать совпадения (чаще всего по наименованию или артикулу), чтобы не создавать дубли.
- Запустите загрузку и проверьте отчёт: сколько строк создано, сколько обновлено, по каким возникли вопросы.
Механизм сам предложит создать недостающие единицы измерения, ставки НДС или группы, если на них ссылаются загружаемые строки — соглашаться на это стоит осознанно, чтобы в справочниках не появился мусор.
Загрузка пишет данные в рабочую базу сразу. Перед первым массовым импортом сделайте выгрузку базы (.dt) или резервную копию — откатить тысячу ошибочно созданных позиций поиском по одной мучительно.
Внешняя обработка: когда типовой кнопки мало
Типовая команда закрывает справочники, но не умеет грузить табличные части документов или заполнять нетиповые реквизиты. Здесь выручает универсальная внешняя обработка «Загрузка данных из табличного документа» — её распространяет сама фирма 1С для подписчиков сопровождения.
Как работает:
- Обработку подключают через
Файл → ОткрытьилиСервис → Дополнительные обработки, если её зарегистрировали в базе. - Указывают объект-приёмник: справочник, документ или его табличную часть.
- Загружают
.xlsxв табличное поле обработки. - Для каждой колонки файла задают реквизит приёмника и правило: искать существующий объект, создавать новый или пропускать.
- Запускают контроль заполнения и только потом — саму загрузку.
Плюсы и минусы такого подхода:
- ➕ Грузит практически в любой объект, включая табличные части документов.
- ➕ Гибкое сопоставление и предварительная проверка перед записью.
- ➖ Требует понимания структуры метаданных — куда и что пишется.
- ➖ Версию обработки нужно держать совместимой с релизом платформы.
Сопоставление колонок — самый ответственный шаг. Держите перед глазами, какое поле файла в какой реквизит едет:
| Колонка в Excel | Реквизит в 1С |
|---|---|
| Наименование | Наименование справочника |
| Код / Артикул | Код или Артикул |
| Цена | Реквизит табличной части документа цен |
| Контрагент (ИНН) | Поиск по ИНН в справочнике контрагентов |
| Ставка НДС | Элемент перечисления ставок |
Если нужного реквизита нет в стандартной обработке, его добавляют в расширении конфигурации, а не правкой типовой — так загрузка переживёт обновление.
Программный импорт: COM и чтение файла кодом
Когда данные нужно переливать регулярно или по сложным правилам, пишут код. Есть два принципиально разных подхода.
Чтение файла средствами платформы. Объект ТабличныйДокумент умеет открывать .xlsx без установленного Excel — это надёжно работает и на сервере.
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Обмен\Номенклатура.xlsx");
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Наименование = ТабДок.Область("R" + НомерСтроки + "C1").Текст;
Цена = Число(ТабДок.Область("R" + НомерСтроки + "C2").Текст);
// далее — поиск или создание элемента справочника и запись
КонецЦикла;
Первая строка файла обычно отводится под заголовки, поэтому перебор начинают со второй. Текст из ячейки приводят к нужному типу явно (Число, Дата), а не полагаются на автоопределение.
COM-соединение с Excel. Подходит, когда файл со сложной структурой или нужны формулы, которые считает сам Excel. Требует установленного Microsoft Excel на том же компьютере, где идёт обработка.
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Open("C:\Обмен\Данные.xlsx");
Лист = Книга.Worksheets(1);
Значение = Лист.Cells(2, 1).Value;
Книга.Close(Ложь);
Excel.Quit();
COM-объект Excel после работы обязательно закрывайте (Close, Quit), иначе в памяти накапливаются «висящие» процессы EXCEL.EXE. На сервере 1С COM-доступ к Excel часто недоступен — там выбирайте чтение через ТабличныйДокумент.
Для файлов .csv код ещё проще: их читают построчно через ЧтениеТекста и разбивают строки по разделителю функцией СтрРазделить.
Чтение = Новый ЧтениеТекста("C:\Обмен\Прайс.csv", "UTF-8");
Строка = Чтение.ПрочитатьСтроку(); // пропускаем заголовки
Строка = Чтение.ПрочитатьСтроку();
Пока Строка <> Неопределено Цикл
Колонки = СтрРазделить(Строка, ";");
Наименование = Колонки[0];
Цена = Число(Колонки[1]);
// поиск или создание элемента и запись
Строка = Чтение.ПрочитатьСтроку();
КонецЦикла;
Чтение.Закрыть();
Обратите внимание на два момента: кодировку файла указывают явно (UTF-8 или windows-1251), иначе русский текст прочитается кракозябрами, а разделитель (; или ,) сверяют с тем, что реально стоит в файле — у русской локали Excel по умолчанию это точка с запятой.
Разбор частых ошибок импорта
Типичные сбои почти всегда сводятся к типам данных и сопоставлению полей.
Если загрузка валится молча, сократите файл до 3–5 строк и проверьте на нём — так быстрее видно, строка или настройка сопоставления даёт сбой.
После успешного импорта сверьте результат, не доверяя отчёту загрузки на слово. Сравните число строк в файле с числом новых элементов в справочнике, выборочно откройте 2–3 позиции и посмотрите, что заполнены цена, единица измерения и прочие ключевые реквизиты. Для цен и остатков удобно свести итог по колонке в Excel и сопоставить с тем, что показывает соответствующий список или отчёт в 1С.
Автоматизация регулярной загрузки
Разовый импорт делают руками, а вот ежедневную выгрузку из интернет-магазина или складской программы ставят на поток.
- Папка обмена. Внешняя система кладёт
.xlsxили.csvв согласованный каталог, а обработка в 1С по расписанию его читает и удаляет обработанный файл. - Регламентное задание. Код загрузки оформляют в общий модуль и запускают регламентным заданием с нужной периодичностью — ночью, раз в час и т. д.
- Проверка результата. Логируйте, сколько строк загружено и с какими ошибками, и шлите уведомление ответственному. Молчаливая автозагрузка опасна: расхождения всплывут только при сверке.
Для постоянного обмена Excel — не лучший формат: он легко ломается ручными правками. Если частота высокая, переходите на структурированные форматы.
Форматы помимо Excel: CSV, XML, JSON
Excel удобен человеку, но для машинного обмена есть варианты понадёжнее.
- CSV — простой текст с разделителями. Читается без Excel, но чувствителен к кодировке и к разделителю (
;против,). Хорош для плоских таблиц. - XML — основной формат для обмена между информационными базами 1С (планы обмена, выгрузка-загрузка объектов). Жёстко структурирован, описывается схемой. Платформа читает его объектами
ЧтениеXMLи сериализацией. - JSON — компактный формат для обмена с веб-сервисами и API. Платформа работает с ним через
ЧтениеJSON/ЗаписьJSONи функцииПрочитатьJSON.
Правило выбора: разовая заливка справочника от человека — .xlsx; обмен между базами 1С — XML; интеграция с сайтом или сторонним сервисом — JSON или согласованный CSV.
Можно ли загрузить Excel в 1С без программиста?
Загрузить в форме списка — она работает без обработок и кода.Нужен ли установленный Excel, чтобы прочитать .xlsx?
ТабличныйДокумент — платформа открывает .xlsx сама. Excel нужен только для варианта с COM-соединением.