Импорт таблицы из Excel в базу 1С:Предприятие 8.3 без ручного ввода
Содержание
Чтобы загрузить Excel
файл в 1С 8.3, откройте нужный список или табличную часть документа и нажмите кнопку Загрузить (в Бухгалтерии 3.0 она есть в справочнике номенклатуры и на вкладке «Товары» приходных и расходных документов). Программа покажет форму загрузки: вставляете данные из Excel или указываете файл, сопоставляете колонки с реквизитами, проверяете результат и подтверждаете.
Типичный случай: поставщик прислал накладную на 300 позиций в .xlsx, а вбивать её руками — полдня работы и десяток опечаток. Импорт из Excel решает это за 5–10 минут, если файл подготовлен правильно. Ниже — что сделать с таблицей до загрузки, как пройти мастер, как бороться с датами и числами и когда нужна своя обработка.
Как подготовить файл Excel к загрузке в 1С
Большинство неудачных загрузок ломается не в 1С, а в самом файле. Пять минут на чистку таблицы экономят повторные попытки.
Что проверить в структуре:
- 📌 Одна строка — одна запись. Никаких промежуточных итогов, подзаголовков групп и пустых строк посреди таблицы.
- 📌 Одна строка заголовков. Шапка вида «Наименование / Артикул / Кол-во / Цена» — в первой строке. Многоуровневые шапки с объединёнными ячейками разбейте.
- 🧹 Нет объединённых ячеек. Объединение в колонке данных даёт пустые значения во всех строках, кроме первой.
- 🧹 Нет формул. Скопируйте лист и вставьте «только значения». 1С берёт отображаемый текст ячейки, а ошибка вида
#ДЕЛ/0!или#Н/Дуйдёт в базу как строка. - 🧹 Нет скрытых строк и столбцов. При загрузке файла они читаются наравне с видимыми.
- 🔢 Коды и ИНН — в текстовом формате. Иначе Excel срежет ведущие нули: код
000123превратится в123, и сопоставление не найдёт элемент.
Какие колонки нужны. Для номенклатуры минимум — наименование и единица измерения. Если в базе уже есть элементы, добавьте колонку, по которой их однозначно найти: артикул, код или штрихкод. Для табличной части документа — номенклатура, количество, цена; сумму и НДС программа пересчитает сама.
Если Excel под рукой нет, .xlsx открывается прямо в 1С: Файл → Открыть (в главном меню с тремя полосками). Таблица откроется как табличный документ, оттуда её можно скопировать в форму загрузки.
Формат файла. Платформа 8.3 читает .xlsx, .xls и .ods. Старые .xls из учётных систем лучше пересохранить в .xlsx: так меньше сюрпризов с кодировкой. Для очень больших файлов (десятки тысяч строк) удобен .csv, но тогда загрузка обычно идёт через обработку.
Загрузка данных из файла через встроенную кнопку «Загрузить»
В типовых конфигурациях на базе БСП (Бухгалтерия 3.0, Управление торговлей 11, Комплексная автоматизация, ERP) есть единый механизм «Загрузка данных из файла». Он подключён к спискам справочников и к табличным частям документов. Порядок действий одинаковый.
Загрузка в справочник (номенклатура, контрагенты)
- Откройте список, например
Справочники → Товары и услуги → Номенклатурав БП 3.0. - Нажмите
Загрузить. Если кнопки не видно на панели — ищите её в менюЕщё. - В открывшейся форме есть пустой шаблон с колонками. Два варианта:
- выделите в Excel диапазон без заголовков, скопируйте (
Ctrl+C) и вставьте в шаблон (Ctrl+V); - выберите загрузку из файла и укажите
.xlsxна диске.
- выделите в Excel диапазон без заголовков, скопируйте (
- Нажмите
Далее. Программа попробует найти каждую строку среди существующих элементов. - Посмотрите итог: какие строки найдены, какие будут созданы новыми, какие не распознаны.
- Подтвердите загрузку.
Загрузка в табличную часть документа
- Создайте документ, например поступление товаров, и заполните шапку: контрагента, договор, склад.
- На вкладке
ТоварынажмитеЗагрузить. - Вставьте строки из Excel или выберите файл.
- На шаге сопоставления проверьте, что каждая строка привязана к номенклатуре базы.
- Подтвердите — строки появятся в табличной части. Суммы и НДС пересчитаются по ставкам из карточек номенклатуры.
Сначала заполните шапку документа: если вид операции или договор поменять после загрузки, часть строк может пересчитаться не так, как вы ожидаете.
Загрузка в справочник создаёт новые элементы сразу. Перед первой загрузкой большого файла сделайте резервную копию базы или потренируйтесь на копии: удалять 500 дублей номенклатуры вручную долго.
Сопоставление колонок Excel с реквизитами 1С
Самый важный шаг. От него зависит, найдёт ли 1С существующие элементы или наплодит дубли.
Как сопоставляются колонки. В шаблоне загрузки колонки фиксированы: «Номенклатура», «Количество», «Цена» и т. д. При вставке через буфер вы сами определяете, в какую колонку шаблона что ложится. Поэтому порядок колонок в Excel удобно заранее выстроить так же, как в шаблоне.
Как сопоставляются строки. Программа ищет элемент справочника по значению из файла. Порядок надёжности такой:
| Признак для поиска | Надёжность | Когда использовать |
|---|---|---|
| Штрихкод | высокая | товары с заводскими штрихкодами |
| Артикул | высокая | если артикулы в базе заполнены и уникальны |
| Код 1С | высокая | файл выгружен из этой же базы |
| Наименование | низкая | только если других признаков нет |
| ИНН (для контрагентов) | высокая | загрузка контрагентов и их реквизитов |
Поиск по наименованию ломается на мелочах: лишний пробел, «ё» вместо «е», кавычки «ёлочки» против прямых. Если артикулов в базе нет — заполните их перед загрузкой хотя бы для частых позиций.
Нераспознанные строки. На шаге сопоставления строку, для которой элемент не найден, можно:
- 🔗 привязать вручную к существующему элементу (выбрать из списка);
- ➕ создать новый элемент по данным строки — это доступно при загрузке в справочник;
- ✖️ исключить из загрузки.
Единицы измерения 1С ищет по классификатору. «шт.», «шт» и «штука» могут не совпасть с тем, что записано в базе. Приведите колонку к одному виду через замену в Excel.
Даты, числа и суммы: как не потерять значения при импорте
Excel хранит дату как число, а показывает как текст по формату ячейки. 1С при чтении файла берёт отображаемое значение. Отсюда главные сюрпризы.
Даты:
- 📅 Приводите даты к виду
ДД.ММ.ГГГГ. ФорматMM/DD/YYYYиз американской локали даст перепутанные день и месяц: 03/04 станет 3 апреля вместо 4 марта. - 📅 Если вместо даты в 1С пришло число вида
45567— ячейка в Excel имела «Общий» формат. Поставьте формат «Дата» и пересохраните файл. - 📅 Дата, набранная текстом с апострофом, читается как строка. Проверьте выравнивание в Excel: текст прижат влево, дата — вправо.
Числа:
- 🔢 Разделитель дробной части — запятая. Цена
1250.50из выгрузки с точкой может прочитаться как строка или как 125050. - 🔢 Неразрывные пробелы в разрядах (
1 250,50) — частая причина «нулевых» сумм. Уберите их заменой: в поле «Найти» Excel введите неразрывный пробел черезAlt+0160на цифровой клавиатуре. - 🔢 Знак валюты в ячейке («1 250 ₽») мешает распознать число. Оставьте только цифры.
- 🔢 Округление: 1С хранит цену с той точностью, которая задана в реквизите. Цена
12,3456при двух знаках станет12,35, и сумма строки разойдётся с файлом на копейки.
Проверка сумм. После загрузки сравните итог документа с итогом в Excel. Пример: в файле 300 строк на 1 482 640,00 ₽, в документе 1 482 639,97 ₽. Разница 3 копейки — это округление цен, а не потерянная строка. Разница в тысячи — ищите строку, где количество или цена не прочитались.
Ошибки при загрузке Excel и как читать результат
После шага сопоставления форма загрузки показывает, что получилось: строки с найденными элементами, новые, нераспознанные. Не жмите «Загрузить», пока не просмотрите нераспознанные.
Как убрать дубли, если они уже появились. В типовых конфигурациях на БСП есть обработка «Поиск и удаление дублей» в разделе Администрирование → Обслуживание. Она находит похожие элементы и переносит ссылки на оставшийся. Запускайте её на копии базы или вне рабочего времени: при большом справочнике обработка идёт долго.
Не удаляйте дубли номенклатуры, по которым уже проведены документы, простым удалением помеченных объектов. Сначала замените ссылки на правильный элемент, иначе программа не даст удалить объект или в документах останутся битые ссылки.
Внешние обработки и программная загрузка из Excel
Встроенной кнопки хватает для номенклатуры, контрагентов и табличных частей. Своя обработка нужна, когда:
- 🛠 надо загрузить данные в объект, к которому механизм «Загрузить» не подключён (например, регистр сведений или нетиповой справочник);
- 🛠 файл приходит регулярно в одном формате, и сопоставлять его руками каждый раз неудобно;
- 🛠 конфигурация старая или сильно доработанная, и кнопки нет.
Универсальная обработка «Загрузка данных из табличного документа»
Это бесплатная внешняя обработка фирмы 1С, её распространяют через портал ИТС среди универсальных обработок. Работает в режиме управляемого приложения. Порядок:
- Откройте файл через
Файл → Открыть(меню с тремя полосками) и выберите.epf. - Выберите режим: в справочник, в табличную часть или в регистр сведений.
- Укажите объект, например справочник «Номенклатура».
- Вставьте таблицу из Excel или откройте файл на вкладке табличного документа.
- На вкладке настройки укажите для каждого реквизита номер колонки и способ поиска (по коду, по наименованию, по реквизиту).
- Выполните «Контроль заполнения», затем «Загрузить».
Настройки сопоставления можно сохранить в файл и использовать при следующей загрузке того же формата. Для регулярных выгрузок от одного поставщика это главный плюс.
Обработка пишет прямо в справочники и регистры, минуя часть проверок типовой формы. Запускайте её под пользователем с полными правами только после резервной копии. Внешние обработки открывайте только из проверенных источников: файл .epf выполняет код с правами пользователя.
Чтение Excel на встроенном языке
Если пишете свою обработку, проще всего прочитать файл в табличный документ. Платформа 8.3 делает это сама, установленный Excel на компьютере не нужен.
&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресФайла)
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xlsx");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайла);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяВременногоФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);
// Первая строка — заголовки, данные со второй
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст);
Наименование = СокрЛП(ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст);
КоличествоСтрокой = ТабДок.Область(НомерСтроки, 3, НомерСтроки, 3).Текст;
Если ПустаяСтрока(Артикул) И ПустаяСтрока(Наименование) Тогда
Продолжить; // пропускаем пустые строки
КонецЕсли;
// Убираем пробелы-разделители разрядов и приводим к числу
КоличествоСтрокой = СтрЗаменить(КоличествоСтрокой, " ", "");
КоличествоСтрокой = СтрЗаменить(КоличествоСтрокой, Символы.НПП, "");
КоличествоСтрокой = СтрЗаменить(КоличествоСтрокой, ".", ",");
Количество = ?(ПустаяСтрока(КоличествоСтрокой), 0, Число(КоличествоСтрокой));
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Номенклатура.Пустая() Тогда
Сообщить(СтрШаблон("Строка %1: артикул %2 не найден", НомерСтроки, Артикул));
Продолжить;
КонецЕсли;
// Здесь — запись строки в документ или регистр
КонецЦикла;
УдалитьФайлы(ИмяВременногоФайла);
КонецПроцедуры
Пара практических моментов:
- 📄 Файл с клиента сначала помещают во временное хранилище (
НачатьПомещениеФайлаНаСерверилиПоместитьФайлв старом коде), а на сервере записывают во временный файл — как в примере. - 📄
Число()выбросит исключение на строке вида «12 шт». Для «грязных» файлов оберните преобразование вПопытка … Исключениеи выводите номер строки в сообщение. - 📄 Способ через COM-объект
Excel.Applicationтребует установленного Excel там, где выполняется код. На сервере 1С его обычно нет, поэтому чтение через табличный документ надёжнее.