Excel и 1С 8.3: загрузка таблиц, выгрузка отчётов и COM-ошибки

· 10 мин

Содержание

Поставщик прислал прайс на 300 позиций в Excel, а их нужно занести в поступление. Вручную это полдня. В БП 3.0 и УТ 11 загрузить такой файл из Экселя в 1С можно штатно: в табличной части документа нажмите Загрузить, вставьте строки из Excel или откройте файл, сопоставьте колонки и проверьте, что номенклатура нашлась.

Обратная задача ещё проще. Любой отчёт, список или печатная форма в 1С 8.3 сохраняется в .xlsx кнопкой «Сохранить» (значок дискеты) или сочетанием Ctrl+S. Сложности начинаются, когда штатной загрузки нет, файл кривой или обработка падает на COM-ошибке. Об этом — подробно ниже.

Какие форматы Excel понимает 1С и какой выбрать

Табличный документ 1С 8.3 сохраняет и читает несколько форматов. Для обмена с Excel важны три.

ФорматЧтение в 1СЗапись из 1СКогда брать
.xlsxда, без установленного Excelдаосновной вариант для любых задач
.xlsдадафайл от старой программы или контрагента, который шлёт «Excel 97-2003»
.csvчерез текстовый файл или обработкучерез обработкувыгрузка из банков, маркетплейсов, сайтов
.odsдадау получателя LibreOffice или «Мой Офис»

💡 Если контрагент прислал .csv, откройте его в Excel и пересохраните в .xlsx. Так вы уйдёте от проблем с кодировкой и разделителем «точка с запятой».

⚠️ Перед загрузкой закройте файл в Excel. Открытая книга заблокирована, и 1С выдаст ошибку чтения или прочитает пустую таблицу.

Сравнение способов обмена между 1С и Excel

Способов пять. Выбор зависит от того, есть ли штатная команда и сколько раз вы будете повторять загрузку.

СпособНужен ли Excel на компьютереКому подходитОграничения
Штатная команда Загрузить в документе или справочникенетбухгалтеру, разово и регулярнотолько там, где команда предусмотрена
Копирование Ctrl+C → Ctrl+V в форму загрузкинетбыстрые загрузки до нескольких сотен строкнужно держать порядок колонок
Универсальная внешняя обработка загрузки из табличного документанетсправочники и регистры без своей командынужны права на внешние обработки, риск испортить данные
Своя обработка через ТабличныйДокумент.Прочитатьнетрегулярная загрузка нестандартного файланужен программист
COM-соединение Excel.Applicationда, на той машине, где выполняется кодсложные книги: формулы, несколько листов, форматированиемедленно, зависит от Office, ошибки DCOM

Для 90% бухгалтерских задач хватает первых двух строк таблицы. COM имеет смысл, только когда нужно управлять самим Excel: строить книгу с формулами, читать конкретные листы по имени, работать с макросами.

Как выгрузить отчёт, список или документ из 1С в Excel

Отчёт или печатная форма

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

Группировки отчёта при этом сохраняются как структура Excel, а суммы — как числа, а не текст. Их можно сразу складывать формулами.

Список справочника или журнал документов

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

💡 Нужен кусок таблицы на пару строк? Выделите ячейки в списке или табличной части мышкой с Shift, нажмите Ctrl+C и вставьте в Excel. Колонки лягут как в 1С.

Через отчёт на СКД

Если в стандартном списке не хватает полей, соберите универсальный отчёт: Отчёты → Стандартные отчёты → Универсальный отчёт в БП 3.0. Там можно выбрать любой справочник или регистр, вывести нужные реквизиты и сохранить результат в .xlsx.

Как подготовить таблицу Excel к загрузке в 1С

Девять из десяти неудачных загрузок — это не ошибка 1С, а неподготовленный файл. Перед тем как выгрузить данные из Экселя в 1С, приведите таблицу к простому виду.

  • 📄 Один лист, одна таблица. Удалите шапку поставщика, логотип, реквизиты и итоговую строку «Всего».
  • 🔤 Одна строка заголовков. Названия колонок короткие: «Артикул», «Наименование», «Количество», «Цена», «Сумма».
  • 🚫 Никаких объединённых ячеек. Выделите всю таблицу, снимите объединение, пустые ячейки заполните.
  • 🔢 Числа — числами. Проверьте, что в «Цене» нет текста «150 руб.» и пробелов-разделителей тысяч, скопированных с сайта.
  • 0️⃣ Коды — текстом. Артикулы, ИНН, штрихкоды и коды ТН ВЭД с ведущими нулями задайте форматом «Текстовый», иначе Excel превратит 0012345 в 12345, а штрихкод — в 4,6E+12.
  • ✂️ Без лишних пробелов. Функция =СЖПРОБЕЛЫ(A2) в соседнем столбце убирает пробелы по краям. Иначе «Молоко » и «Молоко» станут двумя разными товарами.
  • 👁️ Без скрытых строк и фильтров. Скрытые строки 1С всё равно прочитает.
  • 📏 Единицы измерения как в 1С. Если в справочнике «шт», то в файле не «штука» и не «шт.».
Файл готов к загрузке в 1С
Выполнено: 0 / 6

Как загрузить из Экселя в 1С штатными средствами

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

Загрузка товаров в документ

  1. Создайте документ, например Покупки → Поступление (акты, накладные, УПД) в БП 3.0.
  2. Заполните шапку: контрагента, договор, склад.
  3. На закладке «Товары» нажмите кнопку Загрузить.
  4. Откроется форма с таблицей-шаблоном. Вставьте в неё колонки из Excel через буфер обмена или загрузите файл с диска.
  5. Программа сопоставит строки с номенклатурой по наименованию, артикулу или штрихкоду.
  6. Посмотрите строки, которые не нашлись. Их можно сопоставить вручную или создать новые элементы.
  7. Подтвердите загрузку — строки попадут в табличную часть. Проверьте итоговую сумму с суммой в файле поставщика.

Сверяйте сумму документа с итогом файла до проведения. Одна строка, где Excel хранил цену текстом, загрузится с нулём, и разницу вы увидите только в акте сверки.

Загрузка в справочник

В списке номенклатуры, контрагентов и некоторых других справочников есть команда Загрузить (в части релизов она в меню Ещё). Механизм тот же: шаблон колонок, вставка данных, сопоставление, создание новых элементов.

💡 Перед массовой загрузкой справочника включите в файл колонку, по которой 1С найдёт уже существующие элементы: артикул или ИНН. Так вы обновите старые позиции, а не наплодите дублей.

Загрузка цен

Прайс-лист обычно грузят в документ установки цен. В УТ 11 документ «Установка цен номенклатуры» находится в разделе CRM и маркетинг → Ценообразование. В БП 3.0 документ «Установка цен номенклатуры» открывается из раздела Склад. Порядок тот же: шапка документа, затем загрузка табличной части.

Внешние обработки и расширения для загрузки из Excel

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

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

Самая известная — ЗагрузкаДанныхИзТабличногоДокумента.epf. Она распространяется фирмой 1С на диске ИТС и подходит к любой конфигурации. Принцип работы:

  1. Выберите режим: загрузка в справочник, в табличную часть или в регистр сведений .
  2. Укажите объект загрузки.
  3. Откройте файл Excel или вставьте данные на закладку с табличным документом.
  4. Для каждой колонки задайте реквизит 1С и способ поиска: по наименованию, коду, артикулу.
  5. Нажмите «Контроль заполнения» и исправьте строки с ошибками.
  6. Запустите загрузку.

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

Как запустить внешнюю обработку

  • Разово: Главное меню → Файл → Открыть, выбрать .epf. Платформа покажет предупреждение безопасности — подтвердите, если файл получен из надёжного источника.
  • Постоянно: зарегистрировать в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.

Если пункт открытия файла не срабатывает, у пользователя нет права на интерактивное открытие внешних обработок. Его выдаёт администратор базы в профиле групп доступа.

Расширение вместо внешней обработки

Если загрузку одного и того же файла делают каждую неделю, программист может оформить её расширением конфигурации. Плюсы: команда появляется прямо в нужном документе, не теряется при обновлении типовой конфигурации, не требует прав на внешние файлы. Расширения работают на платформе 8.3.6 и выше.

Чтение Excel кодом: табличный документ и COM

Без Excel: метод Прочитать

Платформа 8.3 читает .xlsx своими силами. Excel на компьютере не нужен, а значит, нет и COM-ошибок. Метод выполняется на сервере, поэтому файл сначала передают с клиента во временное хранилище.

&НаСервере
Процедура ЗагрузитьНаСервере(АдресФайла)

    ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
    Данные = ПолучитьИзВременногоХранилища(АдресФайла);
    Данные.Записать(ИмяФайла);

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

    // Строка 1 — заголовки, данные со второй
    Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл
        Артикул = СокрЛП(ТабДок.Область(НомерСтроки, 1).Текст);
        Если ПустаяСтрока(Артикул) Тогда
            Продолжить;
        КонецЕсли;
        ТекстЦены = СтрЗаменить(ТабДок.Область(НомерСтроки, 3).Текст, " ", "");
        ТекстЦены = СтрЗаменить(ТекстЦены, Символы.НПП, "");
        ТекстЦены = СтрЗаменить(ТекстЦены, ",", ".");
        Попытка
            Цена = Число(ТекстЦены);
        Исключение
            Сообщить(СтрШаблон("Строка %1: цена «%2» не число", Формат(НомерСтроки, "ЧГ=0"), ТекстЦены));
            Продолжить;
        КонецПопытки;
        // Здесь — поиск номенклатуры по артикулу и запись цены
    КонецЦикла;

    УдалитьФайлы(ИмяФайла);

КонецПроцедуры

Очистка пробелов и неразрывных пробелов в примере — не перестраховка. Именно на них чаще всего спотыкается преобразование Число() для файлов, скачанных с сайтов поставщиков.

Через Excel.Application

COM нужен, когда работать приходится с самим Excel: листы по имени, формулы, оформление.

Excel = Новый COMОбъект("Excel.Application");
Excel.DisplayAlerts = Ложь;
Книга = Excel.Workbooks.Open(ИмяФайла);
Лист = Книга.Worksheets(1);
Значение = Лист.Cells(2, 1).Value;
// ...
Книга.Close(Ложь);
Excel.Quit();

💡 Обращение к каждой ячейке через COM — это отдельный межпроцессный вызов. На 10 000 строк обработка будет идти минуты. Быстрее прочитать весь диапазон разом: Лист.UsedRange.Value возвращает COMSafeArray, который метод Выгрузить() превращает в обычный массив 1С.

Ошибки COM-соединения с Excel и как их исправить

Главное правило: COM-объект создаётся там, где выполняется код. В клиент-серверной базе процедура с директивой &НаСервере работает на сервере 1С. Значит, Excel должен стоять на сервере, а запускаться будет от имени учётной записи службы агента сервера (по умолчанию USR1CV8), а не от вашей.

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

⚠️ Перед тем как завершать процессы EXCEL.EXE на сервере, убедитесь, что в этот момент не идёт чужая загрузка или печать отчёта. Принудительное завершение оборвёт её без сохранения. Делайте это в паузе работы пользователей.

Microsoft официально не поддерживает автоматизацию Office из серверных служб. Поэтому серверный COM — это решение «на свой страх», а для регулярных загрузок на сервере надёжнее ТабличныйДокумент.Прочитать.

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

Можно ли загрузить данные из Excel в 1С без программиста?
Да, если в документе или справочнике есть команда «Загрузить». Она есть в табличных частях товаров у основных документов БП 3.0 и УТ 11, а также в списке номенклатуры.
Нужен ли установленный Microsoft Excel, чтобы 1С сохраняла и читала xlsx?
Нет. Табличный документ 1С 8.3 сохраняет и читает xlsx своими средствами. Excel нужен только для COM-обработок.
Почему после выгрузки в Excel суммы не складываются формулой?
Обычно это выгрузка через буфер обмена в Excel с другим разделителем дробной части. Сохраняйте отчёт кнопкой «Сохранить» в xlsx: так суммы попадут числами.
Как загрузить из Excel начальные остатки?
В БП 3.0 остатки вводят документами из помощника ввода начальных остатков в разделе «Главное». Если в табличной части нужного документа нет загрузки из файла, используют внешнюю обработку, сначала на копии базы.
Сколько строк можно загрузить за один раз?
Жёсткого лимита у штатной загрузки нет, но на нескольких тысячах строк сопоставление идёт заметно дольше. Большой прайс удобнее разбить на файлы по 1000–2000 строк.