Накладная из 1С в таблицу Excel: пять способов, от Ctrl+C до кода на запросах
Содержание
Чтобы выгрузить накладную из 1С в Excel, откройте документ, нажмите Печать, выберите нужную форму (ТОРГ-12, УПД или «Расходная накладная
») и в окне печатной формы нажмите кнопку сохранения с дискетой. В списке форматов отметьте «Лист Microsoft Excel 2007» (xlsx). Это займёт полминуты и работает в 1С:Бухгалтерии 3.0, Управлении торговлей 11 и ERP.
Но печатная форма — это бланк с объединёнными ячейками. Если вам нужна не картинка накладной, а живая таблица товаров, которую можно сортировать, фильтровать и сводить, подойдёт другой способ. Ниже пять вариантов: от копирования в два нажатия до выгрузки кодом для программиста.
Какой способ выгрузки накладной выбрать
Сначала определитесь, что вы хотите получить на выходе. От этого зависит способ.
| Способ | Что получите в Excel | Когда подходит | Сложность |
|---|---|---|---|
| Копирование строк | Строки товаров без шапки | Нужно быстро вставить 5–30 позиций в чужую таблицу | Минимальная |
| «Вывести список» | Чистая таблица всех колонок табличной части | Анализ, сверка, фильтры | Низкая |
| Печатная форма → xlsx | Бланк ТОРГ-12 / УПД с реквизитами и подписями | Отправить контрагенту, распечатать, подшить | Низкая |
| Универсальный отчёт или обработка | Строки многих накладных за период | Свод по периоду, по контрагенту | Средняя |
| Код на запросах | Файл заданной структуры, в т.ч. по расписанию | Регулярный обмен, интеграция | Нужен программист |
💡 Для сверки с поставщиком почти всегда удобнее «Вывести список »: числа приходят числами, а не текстом с пробелами.
Где лежат накладные в типовых конфигурациях:
| Конфигурация | Продажа | Поступление |
|---|---|---|
| Бухгалтерия 3.0 | Продажи → Реализация (акты, накладные, УПД) | Покупки → Поступление (акты, накладные, УПД) |
| Управление торговлей 11 | Продажи → Документы продажи | Закупки → Документы закупки |
Порядок выгрузки во всех случаях одинаковый. Различается только место, где искать документ.
Способ 1. Копирование строк накладной через буфер обмена
Самый быстрый вариант, когда нужно перенести список товаров в уже готовую таблицу.
- Откройте накладную и перейдите на вкладку
Товары. - Щёлкните по первой строке, затем зажмите
Shiftи щёлкните по последней. Выделить все строки сразу можно сочетаниемCtrl+A, предварительно щёлкнув внутри таблицы. - Нажмите
Ctrl+C. - Перейдите в Excel, встаньте в ячейку и нажмите
Ctrl+V.
Строки вставятся, каждая колонка формы попадёт в свою колонку листа.
⚠️ Ограничения способа:
- 📌 Шапка документа (номер, дата, контрагент) не копируется — только табличная часть.
- 📌 Заголовки колонок не переносятся, их придётся вписать вручную.
- 📌 Скрытые колонки не попадают в буфер. Если нужна, скажем, колонка «Счёт учёта», сначала включите её через
Ещё → Изменить форму. - 📌 Если вставилось одно значение вместо таблицы, значит, была выделена ячейка, а не строки. Выделите строки целиком или используйте способ 2.
Способ 2. «Вывести список» — стандартная выгрузка таблицы в Excel
В каждой таблице управляемой формы 1С есть команда, которая превращает её в табличный документ. Из него таблица сохраняется в xlsx штатно, без обработок.
- Откройте накладную, вкладку
Товары. - Над таблицей нажмите
Ещё → Вывести список.... - В окне настроек снимите галочки с колонок, которые не нужны. Режим вывода оставьте «Табличный документ».
- Нажмите
ОК. Откроется новое окно с таблицей. - Сохраните её: кнопка с дискетой в окне или
Ctrl+S. В поле «Тип файла» выберите «Лист Excel 2007-… (*.xlsx)».
Готовый файл открывается в Excel как обычная таблица: с заголовками, без объединённых ячеек.
Тот же приём работает и для списка документов. Откройте журнал реализаций, установите отбор по периоду и контрагенту, выполните Ещё → Вывести список... — и получите реестр накладных с номерами, датами и суммами. Строк товаров в нём не будет, только шапки документов.
💡 Если в окне табличного документа выделить диапазон ячеек мышью, его можно скопировать через Ctrl+C и вставить в Excel вместе с заголовками. Это гибрид первого и второго способов.
Способ 3. Сохранение печатной формы накладной в xlsx
Нужен именно бланк — с реквизитами сторон, итогами прописью и местами для подписей. Тогда сохраняйте печатную форму.
- Откройте проведённую накладную.
- Нажмите
Печатьи выберите форму: «Товарная накладная (ТОРГ-12)», «Универсальный передаточный документ (УПД)» или «Расходная накладная». - В окне предварительного просмотра нажмите кнопку
Сохранить(значок дискеты). - В диалоге сохранения отметьте формат «Лист Microsoft Excel 2007 (.xlsx)». Можно отметить сразу несколько, например xlsx и pdf.
- Выберите «Сохранить в папку на компьютере» и укажите папку.
В этом же диалоге есть вариант «Присоединить к документу»: файл ляжет в присоединённые файлы накладной, и коллеги найдут его прямо из карточки.
Как выгрузить сразу несколько накладных
- В списке документов выделите нужные накладные (
Ctrl+ щелчок илиShift+ щелчок). - Нажмите
Печатьи выберите форму. - Все бланки откроются в одном окне просмотра, по одному на странице.
- При сохранении в xlsx каждая печатная форма попадёт в отдельный файл. Имя файла программа подставит сама, по виду и номеру документа.
Печатная форма — это бланк, а не база данных. В ней объединённые ячейки, суммы прописью, многострочные шапки. Сортировка и фильтр в Excel на таком листе ломаются. Для расчётов используйте способ 2.
Если в печатной форме чего-то не хватает
Добавить колонку (артикул, штрихкод, вес) в типовую ТОРГ-12 правкой основной конфигурации нельзя без снятия с поддержки. Практики делают по-другому:
- 🛠️ заказывают внешнюю печатную форму и подключают её через
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки; - 🛠️ правят макет через расширение конфигурации — типовой релиз потом обновляется без конфликтов;
- 🛠️ в БСП-конфигурациях копируют макет в пользовательский через
Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форми меняют его там.
Третий вариант подходит для мелких правок оформления. Новые данные в макет так не добавить: туда попадают только поля, которые заполняет программа.
Способ 4. Отчёт или внешняя обработка для выгрузки многих накладных
Задача типичная: «выгрузите мне все отгрузки контрагенту за квартал по строкам». Открывать 80 документов по одному нет смысла.
Универсальный отчёт
В Бухгалтерии 3.0 и других конфигурациях на БСП есть «Универсальный отчёт». Найти его проще всего в разделе Отчеты, а если ссылки не видно — через поиск по командам в верхней панели.
- В отчёте выберите тип объекта «Документ» и сам документ, например «Реализация (акт, накладная, УПД)».
- В качестве источника данных укажите табличную часть «Товары».
- Задайте период и отбор по контрагенту.
- Через
Настройкидобавьте поля: номер и дата документа, номенклатура, количество, цена, сумма, НДС. - Сформируйте отчёт и сохраните его в xlsx той же кнопкой с дискетой.
Получится одна плоская таблица: каждая строка — позиция товара с номером накладной. Такую можно сразу класть в сводную таблицу.
Внешняя обработка
Если универсального отчёта мало (нужен свой формат, нужные колонки в нужном порядке), используют внешнюю обработку
(файл .epf):
- 🔹 подключите её в
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, кнопкаДобавить из файла; - 🔹 или откройте разово через главное меню
Файл → Открыть, если у вас есть права на это.
Открывайте только обработки из надёжного источника. Внешняя обработка выполняет любой код с вашими правами: может изменить или удалить данные. Программа предупреждает об этом перед открытием файла. Не скачивайте «бесплатные выгрузчики» с форумов и не запускайте их в рабочей базе без проверки.
Способ 5. Выгрузка накладной кодом на языке запросов
Вариант для программиста: выгрузка с жёсткой структурой колонок, регулярная выгрузка по расписанию, выгрузка в сетевую папку для склада.
Удобнее всего собрать данные запросом, вывести в ТабличныйДокумент и записать его методом Записать() в формате XLSX. Excel на компьютере не нужен, COM-объекты не используются.
Пример для документа «Реализация товаров и услуг» в Бухгалтерии 3.0. Процедура выполняется на сервере: в файловом варианте файл ляжет на компьютер пользователя, в клиент-серверном — на сервер 1С.
&НаСервереБезКонтекста
Процедура ВыгрузитьНакладнуюВExcel(ДокументСсылка, ИмяФайла)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура.Наименование КАК Номенклатура,
| Товары.Количество КАК Количество,
| Товары.Цена КАК Цена,
| Товары.Сумма КАК Сумма,
| Товары.СуммаНДС КАК СуммаНДС
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
ТабДок = Новый ТабличныйДокумент;
Заголовки = СтрРазделить("№;Товар;Количество;Цена;Сумма;НДС", ";");
Для Кол = 1 По Заголовки.Количество() Цикл
ТабДок.Область(1, Кол).Текст = Заголовки[Кол - 1];
КонецЦикла;
Поля = СтрРазделить("НомерСтроки;Номенклатура;Количество;Цена;Сумма;СуммаНДС", ";");
Выборка = Запрос.Выполнить().Выбрать();
НомерРяда = 1;
Пока Выборка.Следующий() Цикл
НомерРяда = НомерРяда + 1;
Для Кол = 1 По Поля.Количество() Цикл
Значение = Выборка[Поля[Кол - 1]];
Ячейка = ТабДок.Область(НомерРяда, Кол);
Если ТипЗнч(Значение) = Тип("Число") Тогда
// число пишем значением, чтобы в Excel оно не стало текстом
Ячейка.СодержитЗначение = Истина;
Ячейка.ТипЗначения = Новый ОписаниеТипов("Число");
Ячейка.Значение = Значение;
Иначе
Ячейка.Текст = Строка(Значение);
КонецЕсли;
КонецЦикла;
КонецПока;
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
Что важно в этом примере:
- 🔸 Числа записываются через
СодержитЗначениеиЗначение. Если положить их вТекст, Excel получит строку «1 250,00» и не сможет её сложить. - 🔸 Для УТ 11 и ERP имена документа и колонок табличной части другие. Сверьте их в конфигураторе по дереву метаданных, прежде чем копировать запрос.
- 🔸 Для выгрузки по расписанию оберните процедуру в регламентное задание или в команду дополнительной обработки с типом «Регламентная». Путь к файлу тогда указывайте сетевой, доступный пользователю, от которого работает сервер 1С.
Вариант через Новый COMОбъект("Excel.Application") тоже рабочий, но требует установленного Excel на той машине, где выполняется код, медленно работает на больших объёмах и не запускается на сервере под Linux. Запись через табличный документ надёжнее.
Чтобы отдать файл пользователю в тонком клиенте, сформируйте табличный документ на сервере и верните его на клиент: метод Показать() откроет таблицу, а пользователь сохранит её сам кнопкой с дискетой.