К статье
Практический материал

Документы и Печать · 9 мин

Как добавить строку в Excel из 1С

Как добавить строку в Excel из 1С: вставка строк в табличный документ, выгрузка в Excel, работа через COM-объект и код на встроенном языке 1С.

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

Важно понимать: 1С не редактирует Excel-файлы напрямую в пользовательском режиме. Стандартный механизм — сформировать табличный документ (m xl-файл), сохранить его как .xlsx и далее работать в Excel. Любые строки, которые нужно «добавить», логичнее добавить до выгрузки — в исходных данных или в табличном документе. Это исключает потерю форматирования и лишние преобразования.

Ниже разобраны оба сценария: ручное добавление строк в уже выгруженном файле и программная вставка строк при формировании файла из 1С. Отдельно рассмотрены типовые ошибки, из-за которых данные «съезжают» или теряются.

Как добавить строку в уже выгруженном файле Excel

После выгрузки из 1С (кнопка «Сохранить» в табличном документе или команда «Выгрузить в Excel») файл открывается в Excel как обычная книга. Чтобы вставить строку, щёлкните правой кнопкой мыши по номеру строки слева от листа и выберите «Вставить». Новая пустая строка появится выше выделенной, а все данные ниже сместятся вниз без потери содержимого.

Если нужно вставить несколько строк, выделите сразу несколько номеров строк (протяните мышью или используйте Shift) — Excel вставит столько же пустых строк, сколько выделено. Альтернатива — сочетание клавиш Ctrl и «+» на цифровом блоке при выделенной строке.

Обратите внимание: если файл выгружен из 1С с объединёнными ячейками (типично для печатных форм), вставка строки может нарушить структуру объединений. В этом случае перед вставкой снимите объединение в нужной области: выделите диапазон и нажмите «Отменить объединение ячеек» на вкладке «Главная».

Добавление строки в табличный документ перед выгрузкой

Самый надёжный способ получить Excel-файл с нужными строками — добавить их ещё в 1С, в табличный документ, и только потом сохранять. В пользовательском режиме откройте сформированный табличный документ (например, печатную форму), включите режим редактирования: меню «Таблица» → «Только просмотр» (снимите флажок) или сочетание клавиш, предусмотренное конфигурацией. После этого можно встать на строку и через контекстное меню вставить новую.

В программном сценарии строки добавляются методами объекта «ТабличныйДокумент». Типовой приём — вывести область из макета методом Вывести() или Присоединить(): каждый вызов добавляет новые строки в конец документа. Если нужно вставить строки в середину, используется метод ВставитьОбласть() с указанием области-источника и области-приёмника.

bsl
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетОтчета");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого Стр Из ТаблицаДанных Цикл
    ОбластьСтрока.Параметры.Наименование = Стр.Наименование;
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
ТабДок.Записать("C:\\Temp\\Отчет.xlsx", ТипФайлаТабличногоДокумента.XLSX);

После формирования документ сохраняется методом Записать() с типом файла XLSX. Все выведенные строки попадут в Excel-файл в том же порядке, и дополнительная вставка в самом Excel не потребуется.

Программная вставка строки через COM-объект Excel

Когда требуется изменить уже существующий Excel-файл (например, дописать строки в шаблон с формулами и диаграммами), из 1С используют COM-соединение с приложением Excel. Создаётся объект Excel.Application, открывается книга, и строки вставляются методом Insert у объекта строки.

bsl
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Open("C:\\Temp\\Шаблон.xlsx");
Лист = Книга.Worksheets(1);
Лист.Rows(5).Insert(); // вставить пустую строку перед пятой
Лист.Cells(5, 1).Value = "Новое значение";
Книга.Save();
Книга.Close();
Excel.Quit();

Метод Rows(N).Insert() сдвигает существующие строки вниз, формулы и ссылки Excel пересчитывает автоматически. Это ключевое отличие от записи значений напрямую в ячейки: при вставке структура листа сохраняется корректно.

Учитывайте ограничения: COM-подход работает только на компьютере с установленным Excel и, как правило, не применяется на сервере 1С в Linux-инфраструктуре. Для серверной генерации файлов используйте табличный документ или пакеты формата OpenXML.

Выбор способа под разные задачи

Сравнение вариантов

Ручная вставка в Excel

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

Строки в табличном документе 1С

Оптимально при формировании файла из 1С. Работает на сервере и без установленного Excel, но требует доработки кода или макета.

COM-объект Excel

Нужен для правки готовых файлов с формулами и сложным форматированием. Требует установленный Excel и работает только под Windows.

Для разовой задачи — например, добавить пару строк в выгруженную ведомость — достаточно ручной вставки в Excel. Если файл формируется регулярно и строки должны добавляться автоматически, правильнее доработать формирование табличного документа в 1С. COM-подключение оправдано только тогда, когда целевой файл содержит формулы, сводные таблицы или диаграммы, которые табличный документ 1С воспроизвести не может.

Проверка результата после добавления строк

После вставки строк убедитесь, что данные не сместились непреднамеренно: проверьте итоговые суммы, если они считаются формулами Excel — диапазоны суммирования должны охватывать новые строки. В выгрузках из 1С итоги часто записаны значениями, а не формулами, поэтому добавленные вручную строки в итог не попадут — сумму придётся скорректировать вручную.

Контрольные точки

Как проверить результат

Положение новой строки
Норма

Строка вставлена выше выделенной, данные ниже сдвинулись без потерь

Тревожный признак

Часть данных перезаписана или исчезла — отмените действие (Ctrl+Z) и повторите вставку

Итоговые суммы
Норма

Формулы сумм включают новые строки либо итоги скорректированы

Тревожный признак

Итог не изменился после добавления строки со значением — диапазон формулы не расширен

Объединённые ячейки
Норма

Объединения сохранили структуру, текст не обрезан

Тревожный признак

Вставка разорвала объединённый блок — снимите объединение и вставьте строку заново

Типичные ошибки и ограничения

Типичные ошибки
01
Вставка ячеек со сдвигом вместо целой строки — соседние колонки «разъезжаются», и таблица теряет структуру. Вставляйте именно строку целиком через номер строки.
02
Редактирование файла, предназначенного для обратной загрузки в 1С — обработка загрузки не находит нужные колонки или строки и завершается ошибкой.
03
Забытый Excel.Quit() при COM-работе — процесс остаётся в памяти, файл заблокирован для других пользователей.
04
Попытка использовать COM-объект Excel на сервере без установленного Office — код падает с ошибкой создания объекта. Переносите формирование в табличный документ.
05
Сохранение табличного документа в старый формат XLS — ограничение в 65536 строк; для больших выгрузок используйте XLSX.

Отдельное ограничение касается больших выгрузок: табличный документ 1С при большом числе строк потребляет значительный объём памяти. Если выгрузка содержит сотни тысяч строк, рассмотрите построчную запись в файл через текстовые форматы (CSV) с последующим открытием в Excel — в CSV строки добавляются простым добавлением текста в конец файла.

Итог

Что важно запомнить

Разовую правку делайте вручную в Excel через вставку строки по её номеру. Регулярное формирование файлов автоматизируйте добавлением строк в табличный документ 1С до сохранения в XLSX. COM-объект Excel используйте только для файлов с формулами и сложным форматированием, обязательно закрывая приложение после работы.

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

Можно ли добавить строку в Excel прямо из пользовательского режима 1С без программирования?

Напрямую в xlsx-файл — нет. Откройте сформированный табличный документ, снимите режим «Только просмотр» и вставьте строку в нём, затем сохраните как Excel. Либо сохраните файл и добавьте строку уже в Excel через контекстное меню номера строки.

Почему после вставки строки итоговая сумма не изменилась?

В выгрузках из 1С итоги обычно записаны фиксированными значениями, а не формулами. Добавленная строка в такой итог автоматически не попадает. Замените значение итога формулой СУММ с нужным диапазоном или скорректируйте сумму вручную.

Как вставить сразу несколько строк в табличный документ 1С программно?

Вызовите метод Вывести() с областью-строкой в цикле — каждый вызов добавит новую строку в конец документа. Для вставки в середину используйте ВставитьОбласть() с указанием позиции приёмника и типа смещения.

Работает ли COM-объект Excel на сервере 1С под Linux?

Нет, COM-технология доступна только в Windows и требует установленного Excel. На Linux-сервере формируйте файл через табличный документ с сохранением в XLSX либо используйте построчную запись в CSV.

Что делать, если файл Excel заблокирован после работы обработки 1С?

Скорее всего, остался незавершённый процесс EXCEL.EXE из-за ошибки в коде до вызова Quit(). Закройте процесс через диспетчер задач Windows, после чего файл разблокируется. В коде добавьте закрытие Excel в блок Исключение, чтобы ситуация не повторялась.

Какой формат выбрать при сохранении — XLS или XLSX?

Выбирайте XLSX: формат XLS ограничен 65536 строками на лист и считается устаревшим. XLSX поддерживает значительно большее число строк и лучше совместим с актуальными версиями Excel.