Из таблицы Excel в базу 1С: встроенная загрузка, обработки и код
Содержание
Добавить файл
Excel в 1С 8.3 проще всего встроенной командой «Загрузить»: она есть в списке номенклатуры и в табличной части товаров у документов поступления и реализации в 1С:Бухгалтерии 3.0. Программа принимает .xlsx, .xls, .ods, .csv и .mxl, показывает предпросмотр, просит сопоставить колонки с реквизитами и только после этого записывает данные в базу.
Если встроенной команды в нужном месте нет, остаются два пути: внешняя обработка загрузки из табличного документа или собственный код на встроенном языке. Ниже по порядку: как подготовить таблицу, как пройти загрузку, как настроить соответствие полей, когда брать обработку и как написать загрузку самому.
Что проверить в таблице Excel до загрузки
Половина проблем при загрузке решается ещё в Excel. 1С читает таблицу буквально: лишняя строка «Итого» станет товаром, объединённая ячейка — пустым значением.
Приведите файл к «плоскому» виду:
- 📄 Одна строка — одна запись. Никаких подзаголовков групп, промежуточных итогов и пустых строк-разделителей.
- 🏷️ Одна строка заголовков над данными. Если шапка занимает две-три строки, объедините её в одну.
- 🧱 Без объединённых ячеек. Снимите объединение и заполните каждую ячейку значением.
- 🔢 Числа — числами. Цена
1 250,00с неразрывным пробелом внутри часто читается как текст. Уберите пробелы через «Найти и заменить». - 📅 Даты — одного формата, например
15.03.2025, а не вперемешку с15 марта. - ✂️ Без лишних пробелов в начале и конце артикулов и наименований. Функция
СЖПРОБЕЛЫв Excel чистит их за минуту. - 🧮 Значения вместо формул. Скопируйте диапазон и вставьте его как значения — так вы точно знаете, что увидит 1С.
Держите данные на первом листе книги и удалите пустые листы. Так меньше шансов, что загрузчик возьмёт не ту таблицу.
Какой ключ использовать для поиска
Решите заранее, по какому полю 1С будет искать уже существующие элементы. Для товаров лучший ключ — артикул или штрихкод: они уникальны. Наименование подходит хуже: «Болт М8х30» и «Болт М8×30» для программы разные строки, и вместо сопоставления появится дубль.
Для контрагентов надёжный ключ — ИНН. Если в таблице его нет, загрузка по названию почти гарантирует дубли.
Формат файла
| Формат | Когда подходит | На что смотреть |
|---|---|---|
.xlsx | Основной вариант | Открывается без установленного Excel |
.xls | Старые выгрузки | Лучше пересохранить в .xlsx |
.csv | Выгрузки из других программ | Кодировка и разделитель (; или ,) |
.mxl | Табличный документ 1С | Обмен между базами 1С |
Платформа 8.3 читает .xlsx сама, без установленного Microsoft Excel. Это важно для серверов и для работы через веб-клиент.
Встроенная загрузка из Excel в 1С: Бухгалтерию 3.0
В типовых конфигурациях на Библиотеке стандартных подсистем (БСП) загрузка из файла — штатный механизм. Отдельно покупать или скачивать ничего не нужно.
Загрузка в справочник номенклатуры
- Откройте
Справочники → Товары и услуги → Номенклатура. - Встаньте в группу, куда должны попасть новые позиции. Если групп нет, загрузка пойдёт в корень.
- Нажмите «Загрузить» в командной панели списка.
- Откроется форма с шаблоном таблицы. Её можно заполнить двумя способами: выбрать файл Excel или скопировать диапазон из Excel и вставить в шаблон через
Ctrl+V. - Проверьте, что колонки распознаны правильно, и переходите к следующему шагу.
- Программа покажет, какие строки она сопоставила с уже существующей номенклатурой, а какие создаст как новые.
- Подтвердите загрузку и посмотрите итоговый отчёт: сколько создано, сколько обновлено, сколько пропущено.
Загрузка в документ поступления или реализации
Самый частый сценарий — поставщик прислал счёт на 200 строк в Excel, и вбивать его руками не хочется.
- Создайте документ
Покупки → Поступление (акты, накладные, УПД). - Заполните шапку: контрагента, договор, склад.
- На вкладке «Товары» нажмите «Загрузить».
- Укажите файл или вставьте строки из буфера обмена.
- Сопоставьте колонки: номенклатура, количество, цена, сумма, ставка НДС.
- Позиции, которых нет в базе, программа предложит создать или подобрать вручную.
- После загрузки сверьте итог документа с итогом файла.
Для реализации путь тот же, документ создаётся в разделе Продажи → Реализация (акты, накладные, УПД).
Загрузка в справочник записывает элементы сразу. Перед загрузкой сотен позиций сделайте резервную копию базы — откатить массовое создание элементов удобнее из копии, чем удалять их по одному.
В других конфигурациях на БСП (Управление торговлей 11, Комплексная автоматизация, ERP) работает тот же механизм. Где именно он подключён, видно по наличию команды «Загрузить» в списке или над табличной частью.
Сопоставление колонок и типов данных
Этап сопоставления решает, будет ли результат правильным. Ошибка здесь не вызывает сообщения — просто в базу ляжут не те данные.
Как сопоставить колонки
Механизм БСП пытается узнать колонки по заголовкам. Если в файле колонка называется «Арт.», а в 1С реквизит «Артикул», программа может их не связать. Тогда укажите соответствие вручную.
Типичная карта полей для товаров:
Ссылочные поля
Колонки вроде «Единица измерения», «Ставка НДС», «Вид номенклатуры» в 1С — не текст, а ссылки на справочники и перечисления. Программа ищет совпадение по представлению.
- 📏 Единица «шт» найдётся, если в классификаторе единиц она записана так же. «Шт.» с точкой может не найтись.
- 💯 Ставку НДС пишите в виде, который показывает сама программа, например
20%, а не0,2. - 🗂️ Вид номенклатуры должен уже существовать в базе — создавать его на лету загрузчик не обязан.
Числа и даты
Числовой реквизит в 1С примет только число. Если в ячейке 1 250,00 руб., значение не распознается и станет нулём или строка уйдёт в ошибки.
| Что в ячейке | Что получит 1С | Что сделать |
|---|---|---|
1250,5 | 1 250,50 | Ничего |
1 250,50 (неразрывный пробел) | Может прочитать как текст | Удалить пробелы |
1250.50 | Зависит от региональных настроек | Заменить точку на запятую |
1250 руб. | Текст, не число | Убрать единицы в отдельную колонку |
Внешние обработки и конвертеры
Встроенная загрузка покрывает справочники и табличные части, куда разработчики её подключили. Для остального есть внешние обработки — файлы .epf, которые открываются через Файл → Открыть или подключаются в базе.
Универсальная обработка загрузки из табличного документа
Фирма 1С много лет распространяет через ИТС обработку «Загрузка данных из табличного документа». Её логика:
- Выбираете режим: загрузка в справочник, в табличную часть объекта или в регистр сведений .
- Указываете конкретный объект, например справочник «Контрагенты».
- Загружаете файл Excel в табличный документ внутри обработки.
- Для каждого реквизита задаёте номер колонки, режим поиска и значение по умолчанию.
- Отмечаете флажком реквизит, по которому искать существующие элементы.
- Запускаете загрузку.
Настройки соответствия можно сохранить в файл и использовать для повторной загрузки от того же поставщика.
Обработка пишет напрямую в объекты базы и не проверяет бизнес-логику так, как это делает форма документа. Сначала прогоните её на копии базы.
Как открыть внешнюю обработку
- В режиме «1С:Предприятие» выберите
Файл → Открытьи укажите файл.epf. Если пункта «Файл» не видно, откройте главное меню через кнопку с тремя полосками в левом верхнем углу. - Для постоянного использования подключите её в справочнике дополнительных обработок:
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
Открыть внешнюю обработку может не каждый пользователь. Право на интерактивное открытие внешних файлов включают в профиле групп доступа, и по умолчанию у обычных ролей его нет — это защита от вредоносного кода.
Конвертеры и сторонние решения
Иногда Excel приходит в форме, которую загрузчик не переварит: отчёт с группировками, сводная таблица, бланк с шапкой. Тогда есть смысл сначала преобразовать файл:
- 🔁 развернуть сводную таблицу в плоский список средствами Excel;
- 🧹 удалить шапку и подписи, оставив только табличную часть;
- 📦 для регулярных обменов взять платную обработку под конкретного поставщика или маркетплейс.
Сторонние .epf из интернета запускайте только из проверенных источников: обработка выполняет любой код с правами пользователя.
Автоматизация загрузки через код
Когда файл приходит каждый день одного формата, ручная загрузка утомляет. Программист может сделать команду, которая читает Excel и заполняет документ одним нажатием.
Ключевой приём — объект ТабличныйДокумент и его метод Прочитать(). Он открывает .xlsx без установленного Excel, поэтому работает и на сервере, и в веб-клиенте. Старый способ через COMОбъект("Excel.Application") требует Excel на машине, работает только под Windows и падает на серверах без офиса.
Пример: загрузка товаров из файла в табличную часть
На клиенте пользователь выбирает файл, файл передаётся на сервер, сервер читает таблицу построчно:
&НаКлиенте
Процедура ЗагрузитьИзExcel(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ЗагрузитьНаСервере(Адрес);
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьНаСервере(Адрес)
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ДвоичныеДанные.Записать(ИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
УдалитьФайлы(ИмяФайла);
ТипЧисло = Новый ОписаниеТипов("Число");
// строка 1 — заголовки, данные со строки 2
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
Если ПустаяСтрока(Артикул) Тогда
Продолжить;
КонецЕсли;
ТекстКоличество = СтрЗаменить(ТабДок.Область(НомерСтроки, 3).Текст, Символы.НПП, "");
ТекстЦена = СтрЗаменить(ТабДок.Область(НомерСтроки, 4).Текст, Символы.НПП, "");
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Номенклатура.Пустая() Тогда
Сообщить(СтрШаблон("Строка %1: не найден артикул %2",
Формат(НомерСтроки, "ЧГ=0"), Артикул));
Продолжить;
КонецЕсли;
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = ТипЧисло.ПривестиЗначение(СтрЗаменить(ТекстКоличество, " ", ""));
НоваяСтрока.Цена = ТипЧисло.ПривестиЗначение(СтрЗаменить(ТекстЦена, " ", ""));
НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
КонецЦикла;
КонецПроцедуры
Что в этом примере сделано намеренно:
- 📥
НачатьПомещениеФайла— асинхронный вызов, он работает в тонком и веб-клиенте без модальных окон. - 🧽
Символы.НПП— неразрывный пробел. Excel ставит его как разделитель тысяч, и без замены число не распознается. - 🛡️
ОписаниеТипов("Число").ПривестиЗначение()возвращает 0 вместо ошибки, если в ячейке мусор. Цикл не падает на одной кривой строке. - 🧾 Строки с ненайденным артикулом не теряются молча, а попадают в сообщения с номером строки.
В реальном документе после заполнения ещё нужно пересчитать НДС и итоги — для этого в типовых конфигурациях есть свои процедуры модуля формы. Встраивать такую команду лучше через расширение конфигурации , чтобы не снимать типовую конфигурацию с поддержки.
Регламентное задание
Если файл кладут в сетевую папку по расписанию, загрузку можно повесить на регламентное задание. Тогда код работает целиком на сервере: читает файл по пути, создаёт документ и записывает его. Учтите, что путь должен быть доступен пользователю, от имени которого работает служба сервера 1С, а не вашему пользователю Windows.
Почему 1С не загружает Excel: ошибки и решения
Отдельно про права. Если команда «Загрузить» видна, но при записи появляется сообщение о нарушении прав доступа, у пользователя нет права добавлять элементы в справочник. Это решает администратор базы в настройках групп доступа.
Частые вопросы
Нужен ли установленный Microsoft Excel, чтобы загрузить файл в 1С?
.xlsx и .xls своими средствами. Excel нужен только для старых обработок, которые работают через COM-объект.