Восемь путей из таблицы Excel в базу 1С 8.3: от Ctrl+V до OData
Содержание
Перенести данные из Excel
в 1С 8.3 быстрее всего штатной командой Загрузить в списке справочника или в табличной части документа: вставляете таблицу через Ctrl+V, сопоставляете колонки, жмёте «Загрузить». Если такой команды нет или грузить нужно в нестандартное место — регистр сведений
, реквизит, сразу в несколько объектов, — берут универсальную обработку «Загрузка данных из табличного документа».
Частое заблуждение — что для загрузки обязательно нужен программист или платная обработка. Для справочников и строк документов хватает того, что уже есть в типовой конфигурации. Программирование нужно, когда загрузку надо повторять по расписанию или тянуть данные из внешней системы.
Подготовка файла Excel к загрузке в 1С
Большинство проблем при загрузке рождается в самой таблице, а не в 1С. Перед любым способом приведите файл в порядок:
- 📌 Один лист — одна таблица. Без шапки отчёта, логотипов и строки «Итого» внизу.
- 📌 Первая строка — заголовки колонок, данные начинаются со второй.
- 📌 Без объединённых ячеек. Объединение ломает чтение строк: значение попадает только в первую ячейку.
- 📌 Числа — числами. Уберите пробелы-разделители тысяч и текст «руб.» в ячейках с ценой.
- 📌 Коды и ИНН — текстом. Иначе Excel срежет ведущие нули: артикул
00125превратится в125. - 📌 Ключ для поиска. Решите заранее, по какому полю 1С будет находить существующие элементы: артикул, код или ИНН. Наименование — худший ключ, в нём бывают лишние пробелы и разные кавычки.
Сохраните файл в формате .xlsx. Перед загрузкой закройте его в Excel: открытый файл часто не читается.
Чтобы быстро выбрать путь, сверьтесь с таблицей:
| Способ | Когда подходит | Нужен программист | Риски |
|---|---|---|---|
| Ctrl+V и команда «Загрузить» | Номенклатура, контрагенты, строки документа | Нет | Минимальные, есть сопоставление |
| «Загрузка данных из табличного документа» | Любой справочник, табличная часть, регистр сведений | Нет, но нужна аккуратность | Массовая перезапись реквизитов |
| Сторонняя внешняя обработка | Узкая задача: прайс поставщика, остатки | Нет | Чужой код в рабочей базе |
| XML и «Универсальный обмен данными» | Перенос между базами 1С | Да, нужны правила | Сложная настройка |
| COM-соединение | Регулярная загрузка, макрос из Excel | Да | Разрядность, лицензии |
| OneScript | Пакетная загрузка по расписанию | Да | Обслуживание скриптов |
| OData (REST) | Облачные базы, внешние сервисы | Да | Права и публикация базы |
Вставка из буфера обмена и встроенная команда «Загрузить»
Типовые конфигурации на Библиотеке стандартных подсистем — Бухгалтерия 3.0, Управление торговлей 11 и другие — содержат механизм загрузки из файла. Он вызывается командой Загрузить в списке справочника (например, Справочники → Товары и услуги → Номенклатура в Бухгалтерии) и в табличных частях документов поступления и реализации. В отдельных формах команда спрятана в меню Ещё.
Порядок действий
- Выделите в Excel диапазон с данными без строки заголовков и скопируйте его.
- В 1С откройте список или документ и нажмите
Загрузить. - Откроется форма с пустой таблицей-шаблоном. Колонки шаблона уже названы: «Наименование», «Артикул», «Количество», «Цена» и т. д.
- Встаньте в первую ячейку и нажмите Ctrl+V. Если порядок колонок в Excel другой, сначала переставьте их в файле — так проще, чем править в форме.
- Нажмите
Далее. Программа ищет каждую строку среди существующих элементов. - На шаге сопоставления увидите три группы строк: найденные, не найденные и неоднозначные. Для не найденных выберите, создавать ли новые элементы.
- Нажмите
Загрузитьи проверьте результат в списке.
💡 Для таблицы на 20–50 строк это самый быстрый путь. Для 5 000 строк он тоже работает, но вставка и сопоставление займут несколько минут — не закрывайте форму.
Копирование одной ячейки и вставка в поле формы, само собой, тоже работают. А вот вставить сразу несколько строк прямо в табличную часть документа обычный Ctrl+V не позволит: для этого и нужна форма загрузки.
Обработка «Загрузка данных из табличного документа» в 1С 8.3
Универсальная внешняя обработка ЗагрузкаДанныхИзТабличногоДокумента.epf распространяется на диске и портале ИТС для подписчиков. Есть версия для управляемых форм, она работает в интерфейсе «Такси». Обработка грузит данные в три вида объектов:
- справочник — создание и обновление элементов;
- табличную часть выбранного документа или справочника;
- регистр сведений — например, цены или курсы.
Пошаговая загрузка данных из табличного документа
- Откройте обработку через
Файл → Открыть. Если база запрещает внешние обработки, нужна роль с правом их запуска или профиль «Администратор». - Выберите режим загрузки: в справочник, в табличную часть или в регистр сведений.
- Укажите объект: например, справочник «Номенклатура».
- На закладке с табличным документом откройте файл Excel кнопкой чтения файла или вставьте данные через буфер.
- Укажите номер первой строки с данными — обычно
2. - На закладке настроек отметьте реквизиты, которые будете загружать, и для каждого задайте номер колонки файла.
- Для одного реквизита включите признак поиска: по нему обработка найдёт существующий элемент. Остальные строки она создаст как новые.
- Для ссылочных реквизитов (единица измерения, вид номенклатуры, ставка НДС) выберите, как искать значение: по наименованию или по коду. Либо задайте одно значение по умолчанию для всех строк.
- Нажмите
Контроль заполнения. Обработка подсветит строки, где значение не нашлось. - Когда ошибок нет, запустите загрузку.
Сделайте резервную копию базы перед первой загрузкой. Обработка записывает объекты напрямую. Ошибка в номере колонки за секунду перепишет наименования у тысячи товаров, а отменить это одной кнопкой нельзя.
💡 Сохраните настройки соответствия колонок в файл. В следующем месяце загрузка нового прайса займёт минуту.
Обработка не заполняет обязательные реквизиты, которых нет в файле. Номенклатура в Бухгалтерии 3.0 без вида номенклатуры и единицы измерения запишется, но работать с ней в документах будет неудобно. Задайте эти значения по умолчанию на шаге 8.
Готовые внешние обработки сторонних разработчиков
На маркетплейсах и форумах лежат десятки обработок «загрузка из Excel » под конкретные задачи: прайс поставщика с распознаванием колонок, начальные остатки, сотрудники, банковские выписки из таблицы. Их удобство — в готовых шаблонах под типовую конфигурацию .
Перед запуском в рабочей базе проверьте:
- 🔍 Под какую конфигурацию и релиз написана обработка. Обработка для УТ 11 может не работать в Бухгалтерии, хотя обе на 8.3.
- 🔍 Что она пишет. Если есть возможность, откройте модуль в Конфигураторе и найдите вызовы
Записать(). - 🔍 Происхождение файла. Внешняя обработка — это исполняемый код с полными правами пользователя. Скачанный с непроверенного сайта
.epfможет удалить данные или отправить их наружу. - 🔍 Сначала копия базы. Первый прогон — только на копии.
Если задача одноразовая, штатной загрузки и обработки с ИТС обычно хватает: сторонний код тогда не нужен.
Загрузка через XML и «Универсальный обмен данными в формате XML»
Обработка УниверсальныйОбменДаннымиXML.epf переносит данные между базами 1С по правилам, созданным в конфигурации «Конвертация данных
». Excel она напрямую не читает. Поэтому для таблицы этот путь имеет смысл в одном сценарии: данные уже загружены в одну базу 1С, и их нужно перенести в другую, с иной структурой.
Схема такая:
- Таблицу Excel загружают в базу-источник одним из способов выше.
- В «Конвертации данных» описывают правила: какой объект источника превращается в какой объект приёмника.
- В базе-источнике обработкой выгружают XML-файл по этим правилам.
- В базе-приёмнике той же обработкой загружают файл.
Второй вариант XML — интеграция с внешней системой, которая сама умеет выдавать XML. Тогда программист пишет обработку на встроенном языке: читает файл объектом ЧтениеXML или через ФабрикаXDTO и создаёт объекты. Сохранять Excel в XML ради загрузки в 1С обычно бессмысленно: обработка «Загрузка данных из табличного документа» читает .xlsx без посредников.
COM-соединение: Excel из 1С и 1С из Excel
COM работает только в Windows и в двух направлениях.
Чтение Excel из 1С
Классический вариант — запустить Excel как COM-объект: Новый COMОбъект("Excel.Application"). Он требует установленного Excel на том компьютере, где выполняется код, и медленный: каждое обращение к ячейке — отдельный вызов.
Удобнее читать файл платформой, без Excel. Табличный документ открывает .xlsx методом Прочитать(), и такой код работает в том числе на сервере. Пример загрузки номенклатуры по артикулу из колонок 1 и 2:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПутьКФайлу);
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Адрес = "R" + Формат(НомерСтроки, "ЧГ=0");
Артикул = СокрЛП(ТабДок.Область(Адрес + "C1").Текст);
Наименование = СокрЛП(ТабДок.Область(Адрес + "C2").Текст);
Если ПустаяСтрока(Артикул) Тогда
Продолжить;
КонецЕсли;
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если Ссылка.Пустая() Тогда
Объект = Справочники.Номенклатура.СоздатьЭлемент();
Объект.Артикул = Артикул;
Иначе
Объект = Ссылка.ПолучитьОбъект();
КонецЕсли;
Объект.Наименование = Наименование;
Объект.Записать();
КонецЦикла;
Формат(НомерСтроки, "ЧГ=0") нужен, чтобы номер строки 1000 не превратился в «1 000» с пробелом и адрес ячейки не сломался.
Подключение к 1С из Excel
Обратный путь — макрос VBA в Excel подключается к базе через V83.COMConnector и создаёт объекты сам. Так делают, когда сотрудники живут в Excel и хотят кнопку «Отправить в 1С».
Что нужно знать:
- Компонента
comcntr.dllлежит в каталогеbinустановленной платформы. Регистрируют её командойregsvr32 comcntr.dllот имени администратора. - Разрядность компоненты должна совпадать с разрядностью Excel. 32-битный Office не увидит 64-битную
comcntr.dll, и наоборот. - Версия компоненты должна совпадать с версией платформы, на которой работает база. После обновления платформы компоненту регистрируют заново.
- COM-соединение занимает лицензию, как обычный сеанс.
Строка подключения для файловой базы выглядит так: File="D:\Bases\Buh";Usr="Загрузка";Pwd="...". Для загрузки заведите отдельного пользователя с минимальными правами: пароль в макросе видит любой, кто откроет файл.
Автоматизация: OneScript и REST-интерфейс OData
OneScript
OneScript (его ещё пишут как 1Script) — свободный движок, который выполняет скрипты на языке, почти совпадающем со встроенным языком 1С. Скрипт zagruzka.os запускают командой oscript zagruzka.os — вручную или из Планировщика заданий Windows.
Типовой сценарий ночной загрузки:
- Скрипт забирает файл из папки обмена.
- Подключается к базе через
V83.COMConnector: тот же COM, только без Excel. - Передаёт данные в общий модуль или внешнюю обработку базы, которая уже создаёт объекты.
- Перекладывает обработанный файл в архив и пишет лог.
Таблицу в этом сценарии проще получать в CSV: текст читается построчно без Excel и без COM-объекта табличного процессора.
OData для облачных и опубликованных баз
Если база опубликована на веб-сервере или работает в облаке, данные можно загружать по HTTP через стандартный интерфейс OData. COM и доступ к файлам сервера тогда не нужны.
- Администратор публикует базу на веб-сервере с включённой публикацией стандартного интерфейса OData.
- В самой базе задают состав интерфейса — какие справочники и документы доступны. В типовых конфигурациях это делается в разделе
Администрирование → Синхронизация данных, команда настройки стандартного интерфейса OData. Если в вашем релизе её там нет, найдите её поиском по слову «OData» в разделе «Администрирование». - Внешняя программа или скрипт отправляет POST-запрос на адрес вида
https://server/base/odata/standard.odata/Catalog_Номенклатура?$format=jsonс JSON-телом нового элемента.
Для обращения к базе нужен пользователь 1С с правами на нужные объекты. Для сложной логики — проверок, связей между объектами, проведения документов — программисты делают собственный HTTP-сервис в конфигурации или расширении. OData остаётся удобным способом для простого создания и изменения элементов.
Ошибки при загрузке из Excel и что с ними делать
Отдельно о строке «Итого» внизу таблицы. Обработка считает её обычной строкой данных и создаёт элемент с наименованием «Итого». Удаляйте итоговые строки до загрузки.
Частые вопросы
Можно ли загрузить из Excel сразу документ с проведением?
Как загрузить начальные остатки из Excel?
Работает ли загрузка из Excel в облачной 1С?
Какой объём таблицы выдержит загрузка?
Можно ли грузить файл .csv вместо .xlsx?
ЧтениеТекста, без Excel и без зависимости от его версии. Для ручной загрузки через обработку надёжнее открыть CSV в Excel и сохранить как .xlsx.