Excel и 1С 8.3: загрузка, выгрузка и обмен данными через COM и OData
Содержание
Подключить Excel к 1С можно четырьмя путями, и программировать нужно только в двух. Бухгалтеру хватит встроенных средств: кнопка «Загрузить» в списке номенклатуры и в табличных частях документов принимает данные из Excel, а любой список или отчёт сохраняется в .xlsx через команду сохранения табличного документа. Для регулярного обмена используют COM-соединение (V83.COMConnector), стандартный интерфейс OData или внешнюю обработку
.
Всё ниже относится к платформе 8.3 с интерфейсом «Такси» и типовым конфигурациям вроде «Бухгалтерии предприятия 3.0». Механизм загрузки из файла есть во всех современных конфигурациях на БСП, отличается только набор справочников и документов, где он подключён.
Какой способ обмена Excel и 1С выбрать
Сначала определитесь с задачей. От неё зависит, понадобится ли программист.
| Способ | Когда подходит | Кто настраивает | Риски |
|---|---|---|---|
| Загрузка из файла (встроенная) | разово завести товары, строки накладной, цены | пользователь | дубли номенклатуры при плохом сопоставлении |
| Выгрузка списка или отчёта в xlsx | отдать данные аналитику, сверить вручную | пользователь | формулы и итоги в файле не пересчитываются |
| Внешняя обработка загрузки | нестандартный формат файла, регулярный импорт | программист 1С | обработку нужно проверять после обновлений |
| COM-соединение | Excel сам забирает данные из базы по кнопке | программист, администратор | занимает сеанс, работает только в Windows |
| OData + Power Query | живая аналитика в Excel без кода на VBA | администратор | нужна публикация базы на веб-сервере |
💡 Если нужно один раз перенести 300 строк — не стройте интеграцию. Встроенной загрузки хватит, и это займёт 10–15 минут.
Загрузка данных из Excel в 1С встроенными средствами
Подготовка файла
Большинство ошибок загрузки появляется из-за файла, а не из-за 1С. Приведите таблицу в порядок до того, как открывать базу:
- 📄 одна строка — один объект, первая строка — заголовки колонок;
- 🧹 уберите объединённые ячейки, промежуточные итоги и пустые строки посередине;
- 🔢 артикулы и ИНН храните как текст, иначе Excel срежет ведущие нули;
- 📅 даты — настоящими датами Excel, а не текстом вида «05.03.24г.»;
- 💰 суммы — числом, без пробелов-разделителей и без «руб.» в ячейке.
Загрузка справочника номенклатуры
- Откройте
Справочники → Товары и услуги → Номенклатура. - В командной панели списка нажмите «Загрузить». Откроется форма загрузки данных из файла.
- Скопируйте диапазон в Excel (
Ctrl+C) и вставьте его в таблицу формы (Ctrl+V). Второй вариант — выбрать файл на диске. - Проверьте сопоставление колонок: каждая колонка файла должна попасть в своё поле — наименование, артикул, единица измерения, ставка НДС.
- На шаге сопоставления программа покажет, какие строки она узнала как существующие элементы, а какие создаст заново. Просмотрите список «новых» — именно там прячутся дубли.
- Завершите загрузку и откройте пару созданных карточек, чтобы проверить реквизиты.
Если в базе уже есть «Бумага А4», а в файле «Бумага A4» с латинской буквой, программа создаст второй элемент. Сопоставляйте по артикулу, а не по наименованию, когда артикулы заполнены.
Загрузка строк в документ
В документах с табличной частью «Товары» (поступление, реализация, перемещение) команда «Загрузить» стоит над таблицей; в части форм её прячут в меню «Ещё». Порядок тот же: вставили данные, сопоставили колонки «Номенклатура», «Количество», «Цена», загрузили. Суммы и НДС документ пересчитает сам.
Так удобно переносить счёт поставщика на 200 позиций: вместо ручного подбора — две минуты на сопоставление.
Выгрузка из 1С в Excel: списки, отчёты, печатные формы
Любой список
- Откройте нужный список, например журнал документов или справочник контрагентов.
- Настройте отбор и колонки, если нужно не всё.
- Выберите
Ещё → Вывести список..., отметьте нужные колонки и нажмите «ОК». - Получится табличный документ. Сохраните его кнопкой с дискетой или
Ctrl+S, в поле типа файла выберите «Лист Excel 2007-…» (.xlsx).
Отчёты и печатные формы
Оборотно-сальдовая ведомость, карточка счёта, печатная форма накладной — всё это табличные документы. У каждого в командной панели есть кнопка сохранения; формат выбирается в окне сохранения. Для печатных форм там же можно сразу отправить файл по почте.
💡 Для быстрой проверки не нужен даже файл: выделите область отчёта мышью, нажмите Ctrl+C и вставьте в Excel. Колонки лягут как в отчёте.
Выгруженный отчёт — это снимок. Формул и связей с базой в нём нет: если в 1С перепровели документ, файл об этом не узнает.
COM-соединение: Excel и 1С без ручного переноса
Это вариант для программиста. COM работает только в Windows и в двух направлениях.
Направление 1. 1С читает файл Excel
На компьютере, где выполняется код, должен стоять Excel. 1С создаёт объект Excel.Application и читает ячейки. Пример обработки, которая проходит по листу и выводит три колонки:
&НаКлиенте
Процедура ПрочитатьФайл(ИмяФайла)
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Open(ИмяФайла);
Лист = Книга.Worksheets(1);
// -4162 = xlUp: ищем последнюю заполненную строку в колонке A
ПоследняяСтрока = Лист.Cells(Лист.Rows.Count, 1).End(-4162).Row;
Для НомерСтроки = 2 По ПоследняяСтрока Цикл
Артикул = Лист.Cells(НомерСтроки, 1).Text;
Наименование = Лист.Cells(НомерСтроки, 2).Text;
Цена = Лист.Cells(НомерСтроки, 3).Value;
Сообщить(СтрШаблон("%1 | %2 | %3", Артикул, Наименование, Цена));
КонецЦикла;
Книга.Close(Ложь);
Excel.Quit();
КонецПроцедуры
Строка Excel.Quit() обязательна. Без неё в диспетчере задач копятся процессы EXCEL.EXE, и следующий запуск получает заблокированный файл.
Если Excel на сервере не установлен, обойдитесь без COM: табличный документ платформы умеет сам читать .xlsx. Метод Прочитать выполняется на сервере, поэтому файл сначала передают туда через временное хранилище:
&НаСервере
Процедура ПрочитатьБезExcel(АдресФайла)
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ПолучитьИзВременногоХранилища(АдресФайла).Записать(ИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла);
Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
Артикул = ТабДок.Область(НомерСтроки, 1, НомерСтроки, 1).Текст;
Наименование = ТабДок.Область(НомерСтроки, 2, НомерСтроки, 2).Текст;
Сообщить(Артикул + " | " + Наименование);
КонецЦикла;
УдалитьФайлы(ИмяФайла);
КонецПроцедуры
Этот вариант надёжнее для серверных баз: он не зависит от офисного пакета и не оставляет зависших процессов.
Направление 2. Excel забирает данные из 1С
Здесь работает внешнее соединение через V83.COMConnector. Макрос VBA подключается к базе и выполняет запрос:
Sub ЗагрузитьКонтрагентов()
Dim Connector As Object, Base As Object, Q As Object, Sel As Object
Dim R As Long
Set Connector = CreateObject("V83.COMConnector")
Set Base = Connector.Connect("File=""D:\Bases\Buh"";Usr=""Отчеты"";Pwd=""пароль""")
Set Q = Base.NewObject("Запрос")
Q.Text = "ВЫБРАТЬ Наименование, ИНН ИЗ Справочник.Контрагенты ГДЕ НЕ ЭтоГруппа"
Set Sel = Q.Execute().Select()
R = 2
Do While Sel.Next()
Cells(R, 1).Value = Sel.Get(0)
Cells(R, 2).NumberFormat = "@"
Cells(R, 2).Value = Sel.Get(1)
R = R + 1
Loop
End Sub
Для серверной базы строка подключения выглядит так: Srvr="имя_сервера";Ref="имя_базы";Usr="...";Pwd="...". Формат "@" во второй колонке нужен, чтобы ИНН не превратился в число.
Что знает практик и о чём молчат инструкции:
- 🔌 Компонента
comcntr.dllдолжна быть зарегистрирована. Запустите командную строку от имени администратора и выполнитеregsvr32 "C:\Program Files\1cv8\<версия>\bin\comcntr.dll". - 🧩 Разрядность компоненты совпадает с разрядностью Excel, а не Windows. Для 32-разрядного Office регистрируют
comcntr.dllизC:\Program Files (x86)\1cv8\. - 👤 Внешнее соединение — полноценный сеанс. Он виден в списке активных пользователей и требует лицензии. Заведите для макроса отдельного пользователя с правами только на чтение.
- 🔐 Пароль в тексте макроса видит любой, кто откроет файл. Защитите проект VBA паролем или храните учётные данные отдельно.
Внешние обработки и расширения для импорта из Excel
Когда файл поставщика приходит в своём формате и каждый раз с одинаковой шапкой, разумно один раз заказать внешнюю обработку. Она открывается через Файл → Открыть (файл .epf) или подключается в справочнике дополнительных обработок: Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.
Классический инструмент из комплекта обработок ИТС — универсальная обработка «Загрузка данных из табличного документа». Она умеет загружать в любой справочник, документ или регистр сведений , но требует аккуратного сопоставления реквизитов и права на администрирование.
Расширение конфигурации выбирают, когда загрузка нужна прямо в форме документа — отдельной кнопкой у конкретного поставщика. Расширения появились в платформе 8.3.6 и переживают обновление типовой конфигурации лучше, чем правка самой конфигурации.
Перед первым запуском обработки на рабочей базе прогоните её на копии. Загрузка в регистры и документы без проверки может создать сотни лишних записей, которые потом удаляют вручную.
Ошибки при обмене данными Excel и 1С
Отдельно про даты. Если в файле дата записана текстом, загрузка либо пропустит её, либо подставит пустую. Проверка простая: в Excel дата выравнивается по правому краю ячейки, текст — по левому.
Другие способы связать таблицы и 1С без программирования
OData и Power Query
В типовых конфигурациях есть стандартный интерфейс OData. Его включают в разделе Администрирование → Синхронизация данных, ссылка на настройку интерфейса OData находится там же. В настройке отмечают, какие справочники и регистры отдавать наружу.
Дальше базу публикуют на веб-сервере (IIS или Apache), а в Excel выбирают Данные → Получить данные → Из других источников → Из канала OData и указывают адрес публикации. Таблица обновляется кнопкой «Обновить все», без макросов.
Для OData удобно завести отдельного пользователя с минимальными правами: адрес публикации и логин часто оказываются в файлах, которые пересылают по почте.
CSV и обмен через буфер
Если Excel недоступен (например, на Linux-сервере), сохраняйте таблицу в CSV с разделителем «;». Такой файл читают и встроенная загрузка, и любая самописная обработка. Для разовых задач буфер обмена остаётся самым быстрым мостом: Ctrl+C в Excel, Ctrl+V в форму загрузки.
Облачные таблицы
Google Таблицы и Яндекс Таблицы с 1С напрямую не связаны. Рабочая схема — скачать файл в .xlsx и загрузить штатно, либо настроить обмен через HTTP-сервис 1С силами программиста.