Связь 1С 8.3 и Excel: от сохранения отчёта до живого подключения

· 10 мин

Содержание

Привязать 1С к Excel можно четырьмя способами: сохранить отчёт или список в .xlsx, загрузить таблицу Excel в документ или справочник, подключиться к базе из Excel через COM-объект V83.COMConnector или через стандартный интерфейс OData с Power Query. Первые два способа работают без программиста. Два последних дают «живую» интеграцию: Excel сам забирает свежие данные из 1С по кнопке «Обновить».

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

Какой способ интеграции 1С и Excel выбрать

Сначала определите направление и частоту обмена. От этого зависит всё остальное.

СпособНаправлениеКогда подходитЧто нужно
Сохранение в xlsx1С → ExcelРазовая выгрузка отчёта, спискаНичего, кроме 1С
Загрузка из файлаExcel → 1СПрайсы, остатки, номенклатураТиповая команда или обработка
COM-соединениеExcel ↔ 1СМакросы VBA, регулярные выборкиЗарегистрированный comcntr.dll, VBA
OData + Power Query1С → ExcelСводные отчёты, обновляемые по кнопкеПубликация базы на веб-сервере
Внешняя обработкаExcel ↔ 1СНестандартный формат, расписаниеПрограммист 1С
Что вам нужно сделать?

Выгрузка данных из 1С в Excel без программирования

Любой отчёт в 1С 8.3 — это табличный документ. Его можно сохранить в формате Excel за три действия.

Сохранение отчёта

  1. Сформируйте отчёт, например «Оборотно-сальдовая ведомость».
  2. Нажмите кнопку с дискетой в командной панели отчёта или откройте главное меню (кнопка с тремя полосками) Файл → Сохранить как.
  3. В поле «Тип файла» выберите Лист Microsoft Excel 2007-... (*.xlsx).
  4. Укажите папку и имя файла, нажмите «Сохранить».

Форматирование, объединённые ячейки и группировки сохраняются. Расшифровки — нет: в Excel это обычные числа.

Выгрузка любого списка

Справочник, журнал документов или регистр выгружаются через команду Ещё → Вывести список.

  1. Откройте список, например Справочники → Товары и услуги → Номенклатура.
  2. Настройте отбор, если нужна только часть строк.
  3. Нажмите Ещё → Вывести список, отметьте нужные колонки.
  4. В открывшемся табличном документе сохраните файл в xlsx так же, как отчёт.

В окне «Вывести список» можно выбрать вывод в текстовый документ. Для Excel берите табличный: так колонки не слипнутся.

Почему числа в Excel не суммируются

Частая жалоба: выгрузили ведомость, а СУММ даёт ноль. Причина — разделитель разрядов. 1С выводит 1 250 000,00 с неразрывным пробелом, и Excel иногда принимает это за текст.

Что делать:

  • 🔧 выделите столбец, Данные → Текст по столбцам → Готово — Excel перечитает значения;
  • 🔧 или замените через Ctrl+H неразрывный пробел (введите его сочетанием Alt+0160 на цифровой клавиатуре) на пустоту;
  • 🔧 в собственной обработке выводите числа как числа, а не строки с форматом ЧГ=.

Табличный документ и макеты: Excel внутри 1С

1С умеет не только сохранять, но и открывать файлы Excel. Через главное меню Файл → Открыть выберите .xlsx или .xls — файл откроется как табличный документ. Его можно поправить и сохранить обратно.

Это пригодится в трёх случаях:

  • 📄 посмотреть файл на компьютере, где нет Excel;
  • 📄 быстро перенести бланк из Excel в макет печатной формы;
  • 📄 проверить, как 1С «видит» таблицу перед загрузкой.

Макет печатной формы из файла Excel

Программисту не нужно рисовать бланк с нуля. В конфигураторе откройте файл Excel через Файл → Открыть, выделите нужную область и скопируйте её в макет обработки или расширения. Затем назначьте областям имена и параметры.

Готовый бланк из Excel теряет формулы. В макете остаются только значения и оформление, а расчёт пишется на встроенном языке.

Не правьте макеты типовой конфигурации напрямую. Пользовательский макет меняется в режиме 1С:Предприятие через Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм, а новый — через внешнюю обработку или расширение. Так изменения переживут обновление.

Загрузка из Excel в 1С и обратный обмен

Обратное направление — самое востребованное: прайс поставщика, начальные остатки, список номенклатуры.

Загрузка в табличную часть документа

В 1С:Бухгалтерии 3.0 в документах поступления и реализации над табличной частью «Товары» есть команда «Загрузить». Порядок такой:

  1. Создайте документ и заполните шапку: контрагента, склад, договор.
  2. В табличной части нажмите «Загрузить».
  3. Скопируйте строки из Excel и вставьте их в открывшуюся таблицу или укажите файл.
  4. Сопоставьте колонки: какая — наименование, какая — количество и цена.
  5. Проверьте, какие позиции программа нашла в справочнике, а какие предлагает создать.

Сопоставление идёт по наименованию, артикулу или штрихкоду. Чем точнее совпадает наименование, тем меньше ручной работы.

Сопоставление полей
Наименование товара→Номенклатура (поиск по наименованию)
Артикул→Номенклатура (поиск по артикулу)
Кол-во→Количество
Цена без НДС→Цена
Ставка НДС→Ставка НДС (20%, 10%, Без НДС)

Загрузка справочников целиком

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

Подготовьте файл заранее:

  • ✅ одна строка — один элемент, без объединённых ячеек и промежуточных итогов;
  • ✅ первая строка — заголовки, данные начинаются со второй;
  • ✅ ИНН, КПП, артикулы и коды хранятся как текст, иначе Excel срежет ведущие нули;
  • ✅ единицы измерения и ставки НДС написаны так же, как в 1С.

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

Двусторонний обмен

Настоящий двусторонний обмен — когда Excel и 1С постоянно сверяют одни и те же данные — строят на COM-соединении или внешней обработке. Типовая схема: 1С выгружает файл в общую папку, сотрудник правит его, обработка загружает изменения и пишет протокол расхождений.

COM-соединение: Excel берёт данные из 1С напрямую

COM-соединение позволяет макросу VBA подключиться к базе 1С без запуска клиента. Макрос выполняет запрос и раскладывает результат по ячейкам.

Регистрация компоненты

Компонента comcntr.dll лежит в каталоге платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\. Её нужно зарегистрировать от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\comcntr.dll"

Подставьте номер своей версии платформы. Разрядность должна совпадать: 32-битному Excel нужна 32-битная платформа из C:\Program Files (x86)\1cv8\, 64-битному — 64-битная.

Макрос VBA для чтения справочника

Sub ЗагрузитьНоменклатуру()
    Dim conn As Object, base As Object, q As Object, sel As Object
    Dim r As Long

    Set conn = CreateObject("V83.COMConnector")
    ' Файловая база. Для серверной: Srvr=""server1c"";Ref=""buh"";
    Set base = conn.Connect("File=""D:\Bases\Buh"";Usr=""Обмен"";Pwd=""пароль"";")

    Set q = base.NewObject("Query")
    q.Text = "ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование " & _
             "ИЗ Справочник.Номенклатура КАК Номенклатура " & _
             "ГДЕ НЕ Номенклатура.ЭтоГруппа"

    Set sel = q.Execute().Select()
    r = 2
    Do While sel.Next()
        Cells(r, 1).Value = sel.Code
        Cells(r, 2).Value = sel.Description
        r = r + 1
    Loop

    Set sel = Nothing: Set q = Nothing: Set base = Nothing: Set conn = Nothing
End Sub

Методы объектов 1С через COM можно вызывать по английским именам: Execute, Select, Next. Стандартные реквизиты — тоже: Code вместо «Код», Description вместо «Наименование».

Для подключения заведите в 1С отдельного пользователя с минимальными правами на чтение. Пароль в макросе хранится открытым текстом — не давайте такой файл посторонним.

Обратное направление: 1С управляет Excel

Из 1С тоже можно запустить Excel: Excel = Новый COMОбъект("Excel.Application"). Так раньше заполняли сложные шаблоны с формулами. Минус — Excel должен стоять на том компьютере, где выполняется код. На сервере 1С так делать не стоит: процессы EXCEL.EXE зависают и копятся. Для простого чтения и записи xlsx Excel вообще не нужен — об этом в разделе про автоматизацию.

OData и Power Query: обновляемая привязка без кода

Стандартный интерфейс OData отдаёт данные базы по HTTP. Excel подключается к нему через Power Query, и таблица обновляется одной кнопкой.

Настройка на стороне 1С

  1. Опубликуйте базу на веб-сервере (IIS или Apache). В конфигураторе: Администрирование → Публикация на веб-сервере, отметьте флажок «Публиковать стандартный интерфейс OData».
  2. В режиме 1С:Предприятие откройте Администрирование → Синхронизация данных → Настройка стандартного интерфейса OData.
  3. Создайте пользователя для доступа к интерфейсу и задайте ему пароль.
  4. Отметьте объекты, которые нужно отдавать: например, справочник «Номенклатура» и регистр «Хозрасчетный».

Адрес интерфейса выглядит так: http://server/buh/odata/standard.odata/.

Подключение в Excel

  1. Данные → Получить данные → Из других источников → Из канала OData.
  2. Вставьте адрес интерфейса.
  3. Выберите «Обычная» авторизация и введите логин и пароль пользователя OData.
  4. В навигаторе отметьте нужные таблицы, нажмите «Преобразовать данные», чтобы убрать лишние колонки.
  5. «Закрыть и загрузить». Обновление — Данные → Обновить все.

Тяните не всю таблицу проводок, а виртуальные таблицы остатков и оборотов с отбором по периоду. Иначе первая загрузка из базы за несколько лет займёт много времени.

Автоматизация: внешние обработки, расширения и расписание

Когда обмен нужен каждый день, ручные действия заменяют обработкой.

Чтение xlsx средствами платформы

Платформа 8.3 читает и пишет xlsx сама, без установленного Excel. Пример функции, которая читает прайс в таблицу значений:

Функция ПрочитатьПрайс(ИмяФайла) Экспорт
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Значение);

    Результат = Новый ТаблицаЗначений;
    Результат.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
    Результат.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));

    Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
        Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст);
        Если ПустаяСтрока(Артикул) Тогда
            Продолжить;
        КонецЕсли;

        ТекстЦены = ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст;
        ТекстЦены = СтрЗаменить(ТекстЦены, Символы.НПП, "");
        ТекстЦены = СтрЗаменить(ТекстЦены, " ", "");
        ТекстЦены = СтрЗаменить(ТекстЦены, ",", ".");

        Строка = Результат.Добавить();
        Строка.Артикул = Артикул;
        Попытка
            Строка.Цена = Число(ТекстЦены);
        Исключение
            Строка.Цена = 0; // цену не распознали — строку проверит пользователь
        КонецПопытки;
    КонецЦикла;

    Возврат Результат;
КонецФункции

Запись — одной строкой: ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX).

Где разместить такую логику

  • 🧩 Внешняя обработка подключается без изменения конфигурации: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  • 🧩 Расширение конфигурации добавляет кнопку «Загрузить из Excel» прямо в форму документа и переживает обновления.
  • 🧩 Регламентное задание выгружает отчёт в xlsx по расписанию в сетевую папку. Файл должен быть доступен учётной записи, под которой работает служба сервера 1С.

Сбои при обмене 1С и Excel: кодировка, форматы, COM

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

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

Нужен ли установленный Excel, чтобы сохранять отчёты 1С в xlsx?
Нет. Платформа 1С 8.3 записывает и читает xlsx сама. Excel нужен только для COM-автоматизации и для просмотра файла.
Можно ли работать с LibreOffice вместо Excel?
Да. Файлы xlsx, сохранённые из 1С, открываются в LibreOffice Calc. Power Query и VBA-макросы там недоступны, поэтому OData и COM-способ не подойдут.
Работает ли привязка Excel к облачной 1С?
Сохранение и загрузка файлов работают в любой базе. COM-соединение требует доступа к каталогу базы или серверу 1С, поэтому в облаке обычно недоступно. OData работает, если провайдер разрешает публикацию интерфейса.
Почему загрузка из Excel создала дубли номенклатуры?
Наименования в файле не совпали с карточками в базе: лишний пробел, другая единица, кавычки. Сопоставляйте по артикулу или штрихкоду, а не по названию.
Сохранятся ли формулы, если открыть файл Excel в 1С и сохранить обратно?
Нет. Табличный документ 1С хранит значения и оформление, формулы Excel теряются. Для правки файлов с формулами используйте сам Excel.