Выгрузка печатной формы и списка из 1С в файл Excel
Содержание
Открыли печатную форму документа или отчёт, нажали «Сохранить» и выбрали тип файла Лист Excel 2007-... (*.xlsx). Это самый короткий путь. Он работает для любого табличного документа в 1С 8.3: накладной, счёта, ведомости, оборотно-сальдовой.
Если нужно выгрузить не печатную форму, а список документов, пригодится команда вывода списка. Если нужна автоматизация, есть COM-соединение и встроенный язык. Все три способа разобраны ниже, плюс форматы, кодировка и типичные сбои.
Сохранение через меню программы: пошагово
Выгружать можно только то, что 1С показывает как табличный документ. Сам документ в форме редактирования (с полями и вкладками) в Excel не сохраняется. Сначала откройте его печатную форму.
Шаг 1. Откройте печатную форму или отчёт
- В журнале документов откройте нужный документ.
- Нажмите кнопку
Печатьи выберите форму: счёт, накладная, акт. - Дождитесь, пока форма сформируется в отдельном окне.
Для отчёта всё проще: сформируйте его кнопкой Сформировать. Результат уже является табличным документом.
Шаг 2. Сохраните файл
- Нажмите значок дискеты на панели формы. Если его нет, откройте меню
Файлв главном меню программы и выберитеСохранить как.... - В окне выбора файла укажите папку.
- В списке
Тип файлавыберитеЛист Excel 2007-... (*.xlsx). - Введите имя и нажмите
Сохранить.
В тонком клиенте и веб-клиенте файл сохраняется на компьютер пользователя. В браузере он обычно попадает в папку загрузок, выбор папки зависит от настроек браузера.
Шаг 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: макросам, диаграммам, готовым шаблонам.
Если выгрузка не удалась: частые сбои и разбор
Сначала смотрите на текст ошибки, потом на состояние файла.
Данные → Текст по столбцам либо замените неразрывный пробел на пустую строку.Почему в выгруженном файле не хватает строк или данных
Обычно причина не в сохранении, а в самом отчёте:
- Отчёт не сформирован полностью: часть строк свёрнута группировками. Разверните уровни или выберите вариант «подробнее».
- Отбор скрывает нужные записи. Посмотрите настройки отчёта.
- Для формата
xlsстрок больше лимита. Переходите наxlsx. - Выгружаете список, но в форме включён быстрый поиск или отбор по статусу.
Что делать с огромными выгрузками
Если отчёт на десятки тысяч строк, сохранение может занять заметное время, а окно программы на это время не отвечает. Не нажимайте кнопку повторно и не закрывайте окно: дождитесь, пока появится готовый файл.
Для таких объёмов полезно:
- сузить период и выгружать частями, например по месяцам;
- убрать лишние колонки из настроек отчёта до формирования;
- сохранять сразу в
xlsx, а не вxls, чтобы не упереться в лимит строк; - открывать результат на компьютере с достаточным объёмом оперативной памяти: Excel с большим файлом работает заметно тяжелее самой 1С.
Скрытые и сгруппированные колонки
Колонки, скрытые в отчёте, попадают в файл как скрытые. Это удобно, но легко упустить: Excel покажет их после выделения соседних столбцов и команды «Показать».
Автоматизация и пакетная выгрузка отчётов
Если вы сохраняете один и тот же отчёт каждую неделю, повторять шаги руками незачем. Есть несколько уровней автоматизации, от простого к сложному.
Сохранённый вариант отчёта
В отчётах на системе компоновки данных настройки (период, отбор, группировки) можно сохранить как вариант отчёта. Каждый раз вы открываете готовый вариант и жмёте Сформировать, затем Сохранить. Это уже экономит минут десять.
Регламентное задание и запись на диск
Для выгрузки без участия человека в конфигурации пишут процедуру, которая формирует отчёт программно и сохраняет его в сетевую папку. Её запускают регламентным заданием по расписанию. Типичный сценарий: каждый понедельник в 8:00 ведомость остатков попадает в общую папку.
Схема такого кода:
Отчёт = Отчёты.ОстаткиТоваров.Создать();
// настройка периода и отбора
ТабДок = Новый ТабличныйДокумент;
Отчёт.СкомпоноватьРезультат(ТабДок);
ТабДок.Записать(ПутьКПапке + "ostatki.xlsx", ТипФайлаТабличногоДокумента.XLSX);
Точный набор вызовов зависит от того, как устроен конкретный отчёт. Обработку лучше доверить программисту: ему нужно знать структуру отчёта и права, под которыми работает задание.
Отправка на почту
Готовый файл можно не класть в папку, а отправить письмом. Вложение собирают из того же xlsx. Вместо этого иногда достаточно штатной команды отправки из формы документа: она создаёт письмо с вложением, и пользователю остаётся лишь указать адрес.
Пакетная выгрузка нескольких документов
В журнале выделите несколько документов с зажатым Ctrl, откройте Печать и выберите форму. Часть конфигураций формирует все выбранные документы в одном табличном документе с разрывами страниц. В Excel они окажутся на одном листе друг под другом. Если нужен отдельный файл на каждый документ, придётся использовать обработку или цикл в коде.
Перед любыми правками обработок и регламентных заданий в рабочей базе сделайте резервную копию и согласуйте изменения с тем, кто отвечает за базу. Ошибка в коде регламентного задания способна замедлить работу всей базы.
Как подготовить выгрузку, чтобы Excel не пришлось править
Большая часть ручной правки в Excel нужна из-за мелочей, которые можно исправить до выгрузки.
Ещё несколько приёмов:
- Для сводных таблиц Excel формируйте отчёт без промежуточных итогов: тогда данные ложатся плоским списком и сводная строится сразу.
- Не объединяйте ячейки в шапке, если данные пойдут в Excel на обработку. Объединённые ячейки мешают сортировке и фильтрам.
- Если форму печатает конфигурация, а нужна своя, не правьте типовую. Лучше сделайте дополнительную печатную форму.
Частые вопросы
Можно ли сохранить в Excel сам документ, а не печатную форму?
Чем отличается xlsx от xls при выгрузке из 1С?
xlsx современнее, вмещает больше строк и меньше искажает оформление. xls нужен, когда получатель не умеет открывать новые файлы.Нужен ли Excel на компьютере, чтобы сохранить файл?
xlsx сама. Excel нужен для COM-выгрузки и для того, чтобы потом открыть файл.Как сохранить файл в Excel из веб-клиента?
Сохранить на форме отчёта. Файл скачает браузер, и ищите его в папке загрузок.Почему в Excel числа выровнены по левому краю и не суммируются?
Данные → Текст по столбцам или умножьте значения на единицу формулой.