Выгрузка печатной формы и списка из 1С в файл Excel

· 9 мин

Содержание

Открыли печатную форму документа или отчёт, нажали «Сохранить» и выбрали тип файла Лист Excel 2007-... (*.xlsx). Это самый короткий путь. Он работает для любого табличного документа в 1С 8.3: накладной, счёта, ведомости, оборотно-сальдовой.

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

Сохранение через меню программы: пошагово

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

Шаг 1. Откройте печатную форму или отчёт

  1. В журнале документов откройте нужный документ.
  2. Нажмите кнопку Печать и выберите форму: счёт, накладная, акт.
  3. Дождитесь, пока форма сформируется в отдельном окне.

Для отчёта всё проще: сформируйте его кнопкой Сформировать. Результат уже является табличным документом.

Шаг 2. Сохраните файл

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

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

Шаг 3. Выгрузка списка документов

Журнал или справочник тоже можно отправить в Excel. В форме списка откройте меню Еще (в старых формах — Все действия) и выберите Вывести список.... Программа предложит отметить колонки и покажет результат в табличном документе. Дальше сохраняйте его как в шаге 2.

Выводится то, что видно с учётом отбора и сортировки. Хотите выгрузить только оплаченные счета за квартал: сначала настройте отбор, потом выводите.

Копирование через буфер

Для небольшого куска проще скопировать. Выделите ячейки в табличном документе, нажмите Ctrl+C, в Excel — Ctrl+V. Форматирование чаще сохраняется, но объединённые ячейки иногда ведут себя непредсказуемо.

Какой формат выбрать: xlsx, xls, mxl и другие

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

ФорматКогда братьРиски
xlsxОбычная выгрузка для Excel и таблиц LibreOfficeМакросов внутри нет
xlsСтарый Excel 97-2003 или чужая система, которая принимает только егоДо 65 536 строк на лист, потеря части форматирования
mxlСохранить документ в родном формате 1С и открыть позже в 1СExcel его не откроет
odsРабота в LibreOffice или OpenOfficeНекоторые форматы чисел могут поплыть
pdfОтправить документ как есть, без правокПравить таблицу нельзя
htmlВставить таблицу на сайт или в письмоДля расчётов не подходит
txtОбмен с программой, которой нужен текстТеряется оформление, важна кодировка

Набор типов зависит от версии платформы, поэтому в вашем списке может быть чуть больше или меньше вариантов. Для Excel почти всегда нужен xlsx: он вмещает 1 048 576 строк и работает без лишних предупреждений.

Кодировка и текстовые форматы: как избежать «кракозябр»

Сам xlsx кодировки не касается: тексты внутри файла хранятся в Юникоде. Проблема возникает, когда вы выгружаете в txt или csv и открываете в Excel.

Типичная картина: вместо русских бук⠫Накладная». Excel прочитал файл не в той кодировке.

Что делать:

  • Выгружайте в xlsx. Если файл нужен именно текстовый, откройте его не двойным щелчком, а через Данные → Из текста/CSV (в русском Excel меню может называться чуть иначе) и вручную выберите кодировку: UTF-8 или Windows-1251.
  • Старые программы чаще ждут Windows-1251, современные — UTF-8.
  • Если ваш получатель требует конкретную кодировку, смотрите её в его требованиях. Не угадывайте.

Отдельная ловушка — разделитель. В русском Excel он по умолчанию точка с запятой, а не запятая. Файл, где все значения «склеены» в первую колонку, открыт с неверным разделителем.

Длинные номера (ИНН, КПП, номера карт, артикулы с ведущими нулями) Excel любит превращать в числа: 0012345 станет 12345, а ИНН юрлица — в 1,23457E+11. Перед открытием текстового файла задайте для такой колонки тип «Текст».

Выгрузка через COM-соединение: когда меню мало

Меню даёт одну форму за раз. Если нужно заполнить готовый шаблон Excel, положить данные на конкретные листы или выгрузить сотни строк с условным форматированием, подключают Excel через COM из кода 1С. Это работает там, где на компьютере установлен Microsoft Excel.

Минимальный пример, как запустить Excel и записать значение:

Попытка
    Excel = Новый COMОбъект("Excel.Application");
Исключение
    ВызватьИсключение "Не удалось запустить Excel: " + ОписаниеОшибки();
КонецПопытки;

Excel.Visible = Ложь;
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
Лист.Cells(1, 1).Value = "Контрагент";
Лист.Cells(1, 2).Value = "Сумма";
Лист.Cells(2, 1).Value = "ООО Ромашка";
Лист.Cells(2, 2).Value = 15000;

Книга.SaveAs("C:\Temp\vygruzka.xlsx");
Книга.Close();
Excel.Quit();

Что учесть:

  • Код выполняется там, где запущен. На клиенте Excel должен стоять на компьютере пользователя, на сервере — на сервере. Для серверной выгрузки это нежелательно: Excel не рассчитан на фоновую работу без пользователя.
  • Запись ячейка за ячейкой медленная. Если строк тысячи, передавайте диапазон целиком: массив значений за одно обращение работает на порядок быстрее.
  • Всегда закрывайте книгу и вызывайте Excel.Quit(). Иначе в диспетчере задач останется невидимый процесс EXCEL.EXE, и следующий запуск может зависнуть.
  • В веб-клиенте COM недоступен: браузер не даёт прямого доступа к Excel.

Альтернатива без Excel на компьютере

Если нужен просто файл, COM не обязателен. Табличный документ умеет записать себя сам:

ТабДок.Записать("C:\Temp\vygruzka.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Установленный Excel для этого не требуется, и такой код нормально работает на сервере. Минус — нет доступа к тонкой настройке Excel: макросам, диаграммам, готовым шаблонам.

Если выгрузка не удалась: частые сбои и разбор

Сначала смотрите на текст ошибки, потом на состояние файла.

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

Почему в выгруженном файле не хватает строк или данных

Обычно причина не в сохранении, а в самом отчёте:

  1. Отчёт не сформирован полностью: часть строк свёрнута группировками. Разверните уровни или выберите вариант «подробнее».
  2. Отбор скрывает нужные записи. Посмотрите настройки отчёта.
  3. Для формата xls строк больше лимита. Переходите на xlsx.
  4. Выгружаете список, но в форме включён быстрый поиск или отбор по статусу.

Что делать с огромными выгрузками

Если отчёт на десятки тысяч строк, сохранение может занять заметное время, а окно программы на это время не отвечает. Не нажимайте кнопку повторно и не закрывайте окно: дождитесь, пока появится готовый файл.

Для таких объёмов полезно:

  • сузить период и выгружать частями, например по месяцам;
  • убрать лишние колонки из настроек отчёта до формирования;
  • сохранять сразу в xlsx, а не в xls, чтобы не упереться в лимит строк;
  • открывать результат на компьютере с достаточным объёмом оперативной памяти: Excel с большим файлом работает заметно тяжелее самой 1С.

Скрытые и сгруппированные колонки

Колонки, скрытые в отчёте, попадают в файл как скрытые. Это удобно, но легко упустить: Excel покажет их после выделения соседних столбцов и команды «Показать».

Автоматизация и пакетная выгрузка отчётов

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

Сохранённый вариант отчёта

В отчётах на системе компоновки данных настройки (период, отбор, группировки) можно сохранить как вариант отчёта. Каждый раз вы открываете готовый вариант и жмёте Сформировать, затем Сохранить. Это уже экономит минут десять.

Регламентное задание и запись на диск

Для выгрузки без участия человека в конфигурации пишут процедуру, которая формирует отчёт программно и сохраняет его в сетевую папку. Её запускают регламентным заданием по расписанию. Типичный сценарий: каждый понедельник в 8:00 ведомость остатков попадает в общую папку.

Схема такого кода:

Отчёт = Отчёты.ОстаткиТоваров.Создать();
// настройка периода и отбора
ТабДок = Новый ТабличныйДокумент;
Отчёт.СкомпоноватьРезультат(ТабДок);
ТабДок.Записать(ПутьКПапке + "ostatki.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Точный набор вызовов зависит от того, как устроен конкретный отчёт. Обработку лучше доверить программисту: ему нужно знать структуру отчёта и права, под которыми работает задание.

Отправка на почту

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

Пакетная выгрузка нескольких документов

В журнале выделите несколько документов с зажатым Ctrl, откройте Печать и выберите форму. Часть конфигураций формирует все выбранные документы в одном табличном документе с разрывами страниц. В Excel они окажутся на одном листе друг под другом. Если нужен отдельный файл на каждый документ, придётся использовать обработку или цикл в коде.

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

Как подготовить выгрузку, чтобы Excel не пришлось править

Большая часть ручной правки в Excel нужна из-за мелочей, которые можно исправить до выгрузки.

Перед выгрузкой в Excel
Выполнено: 0 / 6

Ещё несколько приёмов:

  • Для сводных таблиц Excel формируйте отчёт без промежуточных итогов: тогда данные ложатся плоским списком и сводная строится сразу.
  • Не объединяйте ячейки в шапке, если данные пойдут в Excel на обработку. Объединённые ячейки мешают сортировке и фильтрам.
  • Если форму печатает конфигурация, а нужна своя, не правьте типовую. Лучше сделайте дополнительную печатную форму.

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

Можно ли сохранить в Excel сам документ, а не печатную форму?
Нет. Форма документа с полями и вкладками не является табличным документом. Откройте его печатную форму и сохраняйте её либо выгрузите список с нужными колонками.
Чем отличается xlsx от xls при выгрузке из 1С?
xlsx современнее, вмещает больше строк и меньше искажает оформление. xls нужен, когда получатель не умеет открывать новые файлы.
Нужен ли Excel на компьютере, чтобы сохранить файл?
Для обычного сохранения — нет. 1С записывает xlsx сама. Excel нужен для COM-выгрузки и для того, чтобы потом открыть файл.
Как сохранить файл в Excel из веб-клиента?
Тем же путём: Сохранить на форме отчёта. Файл скачает браузер, и ищите его в папке загрузок.
Почему в Excel числа выровнены по левому краю и не суммируются?
Они записаны как текст. Преобразуйте колонку через Данные → Текст по столбцам или умножьте значения на единицу формулой.
Можно ли выгрузить отчёт из 1С в Excel автоматически по расписанию?
Да, через регламентное задание, которое формирует отчёт кодом и записывает файл в папку. Настраивает такую выгрузку программист.