Восемь путей из таблицы Excel в базу 1С 8.3: от Ctrl+V до OData

· 10 мин

Содержание

Перенести данные из 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 и другие — содержат механизм загрузки из файла. Он вызывается командой Загрузить в списке справочника (например, Справочники → Товары и услуги → Номенклатура в Бухгалтерии) и в табличных частях документов поступления и реализации. В отдельных формах команда спрятана в меню Ещё.

Порядок действий

  1. Выделите в Excel диапазон с данными без строки заголовков и скопируйте его.
  2. В 1С откройте список или документ и нажмите Загрузить.
  3. Откроется форма с пустой таблицей-шаблоном. Колонки шаблона уже названы: «Наименование», «Артикул», «Количество», «Цена» и т. д.
  4. Встаньте в первую ячейку и нажмите Ctrl+V. Если порядок колонок в Excel другой, сначала переставьте их в файле — так проще, чем править в форме.
  5. Нажмите Далее. Программа ищет каждую строку среди существующих элементов.
  6. На шаге сопоставления увидите три группы строк: найденные, не найденные и неоднозначные. Для не найденных выберите, создавать ли новые элементы.
  7. Нажмите Загрузить и проверьте результат в списке.

💡 Для таблицы на 20–50 строк это самый быстрый путь. Для 5 000 строк он тоже работает, но вставка и сопоставление займут несколько минут — не закрывайте форму.

Копирование одной ячейки и вставка в поле формы, само собой, тоже работают. А вот вставить сразу несколько строк прямо в табличную часть документа обычный Ctrl+V не позволит: для этого и нужна форма загрузки.

Обработка «Загрузка данных из табличного документа» в 1С 8.3

Универсальная внешняя обработка ЗагрузкаДанныхИзТабличногоДокумента.epf распространяется на диске и портале ИТС для подписчиков. Есть версия для управляемых форм, она работает в интерфейсе «Такси». Обработка грузит данные в три вида объектов:

  • справочник — создание и обновление элементов;
  • табличную часть выбранного документа или справочника;
  • регистр сведений — например, цены или курсы.

Пошаговая загрузка данных из табличного документа

  1. Откройте обработку через Файл → Открыть. Если база запрещает внешние обработки, нужна роль с правом их запуска или профиль «Администратор».
  2. Выберите режим загрузки: в справочник, в табличную часть или в регистр сведений.
  3. Укажите объект: например, справочник «Номенклатура».
  4. На закладке с табличным документом откройте файл Excel кнопкой чтения файла или вставьте данные через буфер.
  5. Укажите номер первой строки с данными — обычно 2.
  6. На закладке настроек отметьте реквизиты, которые будете загружать, и для каждого задайте номер колонки файла.
  7. Для одного реквизита включите признак поиска: по нему обработка найдёт существующий элемент. Остальные строки она создаст как новые.
  8. Для ссылочных реквизитов (единица измерения, вид номенклатуры, ставка НДС) выберите, как искать значение: по наименованию или по коду. Либо задайте одно значение по умолчанию для всех строк.
  9. Нажмите Контроль заполнения. Обработка подсветит строки, где значение не нашлось.
  10. Когда ошибок нет, запустите загрузку.

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

💡 Сохраните настройки соответствия колонок в файл. В следующем месяце загрузка нового прайса займёт минуту.

Обработка не заполняет обязательные реквизиты, которых нет в файле. Номенклатура в Бухгалтерии 3.0 без вида номенклатуры и единицы измерения запишется, но работать с ней в документах будет неудобно. Задайте эти значения по умолчанию на шаге 8.

Готовые внешние обработки сторонних разработчиков

На маркетплейсах и форумах лежат десятки обработок «загрузка из Excel » под конкретные задачи: прайс поставщика с распознаванием колонок, начальные остатки, сотрудники, банковские выписки из таблицы. Их удобство — в готовых шаблонах под типовую конфигурацию .

Перед запуском в рабочей базе проверьте:

  1. 🔍 Под какую конфигурацию и релиз написана обработка. Обработка для УТ 11 может не работать в Бухгалтерии, хотя обе на 8.3.
  2. 🔍 Что она пишет. Если есть возможность, откройте модуль в Конфигураторе и найдите вызовы Записать().
  3. 🔍 Происхождение файла. Внешняя обработка — это исполняемый код с полными правами пользователя. Скачанный с непроверенного сайта .epf может удалить данные или отправить их наружу.
  4. 🔍 Сначала копия базы. Первый прогон — только на копии.

Если задача одноразовая, штатной загрузки и обработки с ИТС обычно хватает: сторонний код тогда не нужен.

Загрузка через XML и «Универсальный обмен данными в формате XML»

Обработка УниверсальныйОбменДаннымиXML.epf переносит данные между базами 1С по правилам, созданным в конфигурации «Конвертация данных ». Excel она напрямую не читает. Поэтому для таблицы этот путь имеет смысл в одном сценарии: данные уже загружены в одну базу 1С, и их нужно перенести в другую, с иной структурой.

Схема такая:

  1. Таблицу Excel загружают в базу-источник одним из способов выше.
  2. В «Конвертации данных» описывают правила: какой объект источника превращается в какой объект приёмника.
  3. В базе-источнике обработкой выгружают XML-файл по этим правилам.
  4. В базе-приёмнике той же обработкой загружают файл.

Второй вариант 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.

Типовой сценарий ночной загрузки:

  1. Скрипт забирает файл из папки обмена.
  2. Подключается к базе через V83.COMConnector: тот же COM, только без Excel.
  3. Передаёт данные в общий модуль или внешнюю обработку базы, которая уже создаёт объекты.
  4. Перекладывает обработанный файл в архив и пишет лог.

Таблицу в этом сценарии проще получать в CSV: текст читается построчно без Excel и без COM-объекта табличного процессора.

OData для облачных и опубликованных баз

Если база опубликована на веб-сервере или работает в облаке, данные можно загружать по HTTP через стандартный интерфейс OData. COM и доступ к файлам сервера тогда не нужны.

  1. Администратор публикует базу на веб-сервере с включённой публикацией стандартного интерфейса OData.
  2. В самой базе задают состав интерфейса — какие справочники и документы доступны. В типовых конфигурациях это делается в разделе Администрирование → Синхронизация данных, команда настройки стандартного интерфейса OData. Если в вашем релизе её там нет, найдите её поиском по слову «OData» в разделе «Администрирование».
  3. Внешняя программа или скрипт отправляет POST-запрос на адрес вида https://server/base/odata/standard.odata/Catalog_Номенклатура?$format=json с JSON-телом нового элемента.

Для обращения к базе нужен пользователь 1С с правами на нужные объекты. Для сложной логики — проверок, связей между объектами, проведения документов — программисты делают собственный HTTP-сервис в конфигурации или расширении. OData остаётся удобным способом для простого создания и изменения элементов.

Ошибки при загрузке из Excel и что с ними делать

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

Отдельно о строке «Итого» внизу таблицы. Обработка считает её обычной строкой данных и создаёт элемент с наименованием «Итого». Удаляйте итоговые строки до загрузки.

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

Можно ли загрузить из Excel сразу документ с проведением?
Штатная загрузка заполняет строки документа, а шапку и проведение делаете вы сами. Создание и проведение документов пачкой из файла — задача для обработки программиста.
Как загрузить начальные остатки из Excel?
В Бухгалтерии 3.0 остатки вводят документами ввода остатков по разделам учёта; строки таких документов можно заполнить из буфера через команду загрузки, если она есть в форме. Иначе используют обработку «Загрузка данных из табличного документа» в режиме табличной части.
Работает ли загрузка из Excel в облачной 1С?
Штатная команда «Загрузить» работает в облаке так же, как в локальной базе. Внешние обработки в облачных сервисах обычно разрешены только после проверки провайдером, а COM недоступен вовсе.
Какой объём таблицы выдержит загрузка?
Ограничение задаёт не 1С, а время и память компьютера. Таблицы на десятки тысяч строк лучше делить на части по 5–10 тысяч, чтобы при сбое не начинать сначала.
Можно ли грузить файл .csv вместо .xlsx?
Для автоматической загрузки CSV даже удобнее: программист читает его построчно объектом ЧтениеТекста, без Excel и без зависимости от его версии. Для ручной загрузки через обработку надёжнее открыть CSV в Excel и сохранить как .xlsx.