Пять способов перенести данные 1С в Excel: от списка справочника до OData
Содержание
Выгрузить данные из 1С в Excel проще всего так: откройте список или отчёт, нажмите Ещё → Вывести список… (для списков) либо значок дискеты Сохранить (для отчётов и печатных форм) и выберите формат «Лист Excel 2007-…» (*.xlsx). Сам Excel для этого не нужен: платформа 1С:Предприятие 8.3 пишет файл xlsx своими силами.
Способ зависит от того, что именно вы выгружаете: список справочника, готовый отчёт, документ на печать или выборку, которой нет ни в одном отчёте. Для каждого случая есть свой путь. Все они работают одинаково в БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на интерфейсе «Такси», потому что это механизмы платформы, а не конкретной программы.
Какой способ выгрузки в Excel выбрать под задачу
Прежде чем жать кнопки, ответьте себе на два вопроса. Что за данные — строки списка, итоги отчёта или произвольная выборка? И нужна ли выгрузка один раз или каждый день.
| Задача | Способ | Нужны права |
|---|---|---|
| Список контрагентов, номенклатуры, документов | Ещё → Вывести список… | Обычный пользователь |
| Отчёт (ОСВ, остатки, продажи) | Сохранение табличного документа в xlsx | Обычный пользователь |
| Печатная форма (счёт, ТОРГ-12, УПД) | Кнопка Сохранить в форме печати | Обычный пользователь |
| Выборка из нескольких таблиц | Консоль запросов (внешняя обработка) | Право открывать внешние обработки |
| Регулярная выгрузка по расписанию | Код на встроенном языке, регламентное задание | Разработчик |
| Excel сам тянет свежие данные | OData или COM-соединение | Администратор |
«Вывести список»: выгрузка любого списка из 1С в Excel
Команда работает в любой форме списка: справочник, журнал документов , регистр. Это главный инструмент, о котором многие не знают.
- Откройте нужный список, например
Справочники → Контрагенты. - Настройте отбор, если нужны не все строки: поиск, отбор по колонке или кнопка
Ещё → Настроить список…. - Нажмите
Ещё → Вывести список…. - В диалоге снимите галочки с лишних колонок. Если выделили строки заранее, отметьте «Только выделенные».
- Оставьте вывод в табличный документ и нажмите
ОК. - В открывшемся документе нажмите значок дискеты или
Ctrl+S, выберите тип «Лист Excel 2007-…» и укажите папку.
Колонок в списке мало? Сначала добавьте их через Ещё → Изменить форму… или в настройках списка, а потом выводите. «Вывести список» берёт только те колонки, что видны в форме.
Когда нужного списка нет в меню
Часть данных не вынесена в разделы: регистры сведений, служебные справочники, регистры накопления. До них добирается меню «Все функции».
- Нажмите значок главного меню (три полоски в левом верхнем углу).
- Откройте
Сервис → Параметрыи включите флажок «Отображать команду “Все функции”». - Снова откройте главное меню, выберите
Все функции. - В дереве раскройте
Справочники,Регистры сведенийилиРегистры накопленияи откройте нужный объект. - В открывшемся списке используйте тот же
Ещё → Вывести список….
Если пункта «Все функции» нет даже после флажка, у пользователя урезаны права. Это решает администратор базы.
Как сохранить отчёт или печатную форму 1С в файл Excel
Любой отчёт в 1С формирует табличный документ. Его можно сохранить в xlsx с сохранением цветов, шрифтов и группировок строк.
Отчёт
- Сформируйте отчёт, например оборотно-сальдовую ведомость.
- Щёлкните мышью внутри таблицы с результатом, чтобы она стала активной.
- Нажмите значок дискеты в командной панели отчёта или
Ctrl+S. Тот же пункт есть в главном меню:Файл → Сохранить как…. - Выберите тип файла «Лист Excel 2007-…» (
*.xlsx). Формат «Лист Excel 97» (*.xls) берите, только если файл откроют в очень старой версии Excel.
Печатная форма
В форме предварительного просмотра (после команды Печать в документе) есть кнопка Сохранить. Она предлагает выбрать формат, а в типовых конфигурациях ещё и куда сохранить: на компьютер или присоединить файлом к документу. Отметьте xlsx и при необходимости флажок упаковки в архив.
Печатная форма — это макет для бумаги. В Excel она придёт с объединёнными ячейками и «шапкой» на десятки строк. Для анализа цифр выгружайте отчёт или список, а не печатную форму.
Как получить из отчёта «плоскую» таблицу
Отчёт с группировками неудобен для сводных таблиц: итоги перемешаны с деталями, а значения сдвинуты лесенкой. Отчёты на системе компоновки данных (СКД) можно перестроить:
- Откройте
Настройки…отчёта и переключитесь на расширенный вид. - На вкладке структуры удалите группировки и оставьте только «Детальные записи».
- Отключите общие итоги, если они не нужны.
- Сформируйте отчёт и сохраните в xlsx.
Получится таблица, где каждая строка — одна запись, а каждая колонка — одно поле. Именно такую таблицу Excel лучше всего превращает в сводную.
Консоль запросов и внешние обработки для сложных выгрузок
Когда данных нет ни в одном отчёте (например, «контрагенты с ИНН и суммой отгрузок за квартал»), помогает консоль запросов. Это внешняя обработка, которую распространяет фирма 1С для разработчиков; есть и бесплатные аналоги от сообщества.
Порядок работы:
- Откройте обработку через
Файл → Открыть…в главном меню. - Напишите запрос или соберите его конструктором.
- Выполните его и выведите результат в табличный документ.
- Сохраните табличный документ в xlsx так же, как отчёт.
Внешнюю обработку запускайте только из проверенного источника: она выполняется с правами текущего пользователя и может изменить данные в базе. В типовых конфигурациях открытие внешних файлов ограничено защитой от опасных действий и правом «Интерактивное открытие внешних обработок».
Консоль только читает данные, если в ней выполняется запрос. Запрос на языке 1С не умеет менять записи, поэтому сам по себе безопасен. Опасны обработки, у которых есть свои кнопки «Выполнить» или «Записать».
Для регулярных задач консоль неудобна: каждый раз нужно открывать файл. Сохранённый запрос лучше превратить в отчёт на СКД и подключить его как дополнительный отчёт через Администрирование → Печатные формы, отчеты и обработки.
Выгрузка в Excel кодом на встроенном языке
Программная выгрузка нужна, когда файл должен появляться без участия человека: по расписанию, по кнопке в документе, в общую папку. Основа — объект ТабличныйДокумент и его метод Записать() с типом ТипФайлаТабличногоДокумента.XLSX.
Пример серверной процедуры: выбирает номенклатуру и пишет файл с заголовками колонок. Числа кладутся как числа, а не текстом, чтобы в Excel по ним считались суммы.
&НаСервере
Процедура ВыгрузитьНоменклатуруВExcel(ИмяФайла)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа";
Таблица = Запрос.Выполнить().Выгрузить();
ТабДок = Новый ТабличныйДокумент;
// Заголовки колонок в первой строке
Для Индекс = 0 По Таблица.Колонки.Количество() - 1 Цикл
ТабДок.Область(1, Индекс + 1).Текст = Таблица.Колонки[Индекс].Имя;
КонецЦикла;
// Данные со второй строки
НомерСтроки = 1;
Для Каждого СтрокаТаблицы Из Таблица Цикл
НомерСтроки = НомерСтроки + 1;
Для Индекс = 0 По Таблица.Колонки.Количество() - 1 Цикл
Значение = СтрокаТаблицы[Индекс];
Ячейка = ТабДок.Область(НомерСтроки, Индекс + 1);
Если ТипЗнч(Значение) = Тип("Число") Тогда
Ячейка.СодержитЗначение = Истина;
Ячейка.Значение = Значение;
Иначе
Ячейка.Текст = Строка(Значение);
КонецЕсли;
КонецЦикла;
КонецЦикла;
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
Что учесть при внедрении:
- 📁 Код на сервере пишет файл в файловую систему сервера. В клиент-серверной базе путь
C:\Выгрузка\окажется на сервере 1С, а не на компьютере пользователя. Чтобы отдать файл пользователю, запишите его во временный файл (ПолучитьИмяВременногоФайла("xlsx")), поместите во временное хранилище и скачайте на клиенте. - ⏱ Для регламентного задания укажите сетевую папку, к которой есть доступ у пользователя, от имени которого запущена служба сервера 1С.
- 🧮 Для больших объёмов быстрее выводить результат через схему компоновки данных с выводом в табличный документ, чем заполнять ячейки в цикле.
Старый путь через Новый COMОбъект("Excel.Application") тоже работает, но требует установленного Excel, только Windows и заметно медленнее. Им имеет смысл пользоваться, если нужно что-то, чего не умеет табличный документ: например, заполнить готовый шаблон Excel с формулами.
Excel тянет данные из 1С сам: OData, COM и прямой доступ к SQL
Бывает, что выгружать вручную вообще не хочется: аналитик открывает книгу Excel, жмёт «Обновить» и получает свежие цифры. Для этого есть три подхода.
Стандартный интерфейс OData
Платформа 8.3 умеет отдавать данные по протоколу OData. Excel читает его встроенным Power Query.
- Базу публикуют на веб-сервере (IIS или Apache) через Конфигуратор с флажком публикации стандартного интерфейса OData.
- В базе задают состав объектов, доступных через OData. В типовых конфигурациях для этого есть обработка «Настройка стандартного интерфейса OData»; программно — метод
УстановитьСоставСтандартногоИнтерфейсаOData(). - Для подключения заводят отдельного пользователя 1С с правами только на чтение нужных объектов.
- В Excel:
Данные → Получить данные → Из других источников → Из канала OData, адрес видаhttp://сервер/имя_публикации/odata/standard.odata/, логин и пароль пользователя 1С.
Плюс подхода — запросы идут через платформу, права пользователя соблюдаются, а книга обновляется одной кнопкой.
COM-соединение из Excel
Из макроса VBA можно подключиться к
базе через объект V83.COMConnector и выполнить запрос. Компонента comcntr.dll должна быть зарегистрирована на компьютере, а разрядность Excel и установленной платформы 1С должна совпадать. Способ рабочий, но капризный: держится на макросах и локальной установке 1С у каждого пользователя.
Почему не стоит читать таблицы SQL напрямую
В клиент-серверной базе данные лежат в MS SQL или PostgreSQL, и к ним технически можно подключить Excel через ODBC. Таблицы там называются вроде _Reference25 и _Document112, ссылки хранятся в двоичном виде, а структура меняется после обновления конфигурации. Права пользователей 1С при этом не действуют. Фирма 1С такой доступ не поддерживает, поэтому для отчётов лучше OData.
Почему выгрузка из 1С в Excel ломается и как это исправить
Отдельно про картинки и диаграммы. Диаграммы 1С при сохранении в xlsx переносятся как рисунок, а не как диаграмма Excel. Если её нужно править, постройте диаграмму заново в Excel по выгруженным данным.
Как привести выгруженную таблицу в рабочий вид
Файл из 1С открывается сразу, но для работы его обычно доводят. Порядок, который экономит время:
- Удалите «шапку» отчёта. Строки с названием организации, периодом и параметрами отбора над таблицей мешают фильтрам. Оставьте одну строку заголовков.
- Снимите объединение ячеек.
Главная → Объединить и поместить в центре(отжать). С объединёнными ячейками не работают сортировка и сводные таблицы. - Раскройте группировки. Отчёты 1С переносят уровни группировок в структуру Excel. Кнопки уровней «1, 2, 3» слева от номеров строк сворачивают и раскрывают их; лишнюю структуру убирает
Данные → Разгруппировать → Удалить структуру. - Оформите диапазон как таблицу (
Ctrl+T). Появятся фильтры, а формулы сами растянутся на новые строки. - Проверьте контрольную сумму. Сравните итог колонки в Excel с итогом в отчёте 1С. Расхождение почти всегда означает строки с числами-текстом.
Если тот же отчёт нужен каждый месяц, сохраните в 1С его вариант с «плоской» структурой: Ещё → Сохранить вариант отчета… (в некоторых отчётах команда вынесена в меню вариантов). В следующий раз останется сформировать и сохранить файл.
Для больших выгрузок удобнее не открывать xlsx, а подключить его в Power Query (Данные → Получить данные → Из файла → Из книги). Там очистку настраивают один раз: удалить первые строки, сменить типы колонок, убрать пробелы. В следующем месяце достаточно заменить файл и нажать «Обновить».