Выгрузка данных из 1С 8.3 наружу: от кнопки «Сохранить» до запросов к СУБД
Содержание
Быстрее всего вытащить данные из 1С так: откройте нужный отчёт или список, сформируйте его и сохраните через главное меню ≡ → Файл → Сохранить как в формате .xlsx. Для списков есть команда Ещё → Вывести список, для выборок по любым справочникам и регистрам — «Универсальный отчёт». Если нужна регулярная выгрузка в другую систему, подключайтесь через OData, COM-соединение или внешнюю обработку
.
Ниже каждый способ разобран по шагам: что он умеет, где его ограничение и какие проблемы всплывают при экспорте данных из 1С в Excel, CSV и XML. Всё описано для платформы 8.3 с интерфейсом «Такси»; пути меню даны для 1С:Бухгалтерии 3.0, в других типовых конфигурациях на БСП они почти такие же.
Какой способ выгрузки данных из 1С выбрать
Сначала ответьте себе на три вопроса: сколько строк, как часто и куда. От этого зависит инструмент.
| Задача | Способ | Нужны права | Ограничение |
|---|---|---|---|
| Разово сохранить отчёт или печатную форму | Сохранить как → xlsx/pdf | обычный пользователь | вид отчёта со всеми шапками и группировками |
| Выгрузить список документов или справочник | Ещё → Вывести список | право «Вывод» | только колонки, которые есть в списке |
| Собрать выборку из любой таблицы базы | Универсальный отчёт | доступ к объекту | нужно разобраться с настройками |
| Перенести данные в другую базу 1С | обработка выгрузки в XML | администратор | файл читается только 1С |
| Отдавать данные в Power BI, Excel, сайт | OData | администратор, веб-сервер | нужна публикация базы |
| Ежедневная выгрузка без участия человека | внешняя обработка по расписанию, COM | администратор | нужен программист 1С |
| Аналитика на SQL поверх базы | запросы к MS SQL / PostgreSQL | доступ к СУБД | только клиент-серверная база, только чтение |
💡 Если сомневаетесь, начинайте сверху таблицы. Разовые задачи обычно закрывает сохранение отчёта или вывод списка, без программиста.
Выгрузка из 1С в Excel: отчёты, списки и печатные формы
Отчёт целиком
- Сформируйте отчёт: например,
Отчеты → Оборотно-сальдовая ведомостьза нужный период. - Щёлкните мышью по полю с результатом, чтобы фокус был на табличном документе.
- Откройте главное меню
≡в левом верхнем углу и выберитеФайл → Сохранить как. В отчётах БСП та же команда вынесена кнопкой с дискетой на панель отчёта. - В поле типа файла выберите
Лист Microsoft Excel 2007-... (*.xlsx)и сохраните.
Табличный документ 1С сохраняется в форматы xlsx, xls, ods, pdf, docx, html, txt и в собственный mxl. Формата CSV в этом списке нет: его получают через Excel («Сохранить как CSV») или обработкой, о ней ниже.
Любой список: документы, контрагенты, номенклатура
- Откройте список, например
Справочники → Контрагенты. - Наложите отбор, если нужна часть записей: по группе, по дате, через поиск.
- Нажмите
Ещё → Вывести список. - В окне отметьте колонки и выберите вывод в табличный документ.
- Полученную таблицу сохраните в xlsx тем же
Сохранить как.
Колонки берутся из формы списка. Нужна колонка, которой нет на экране (например, ИНН в списке документов)? Добавьте её через Ещё → Изменить форму, затем повторите вывод.
⚠️ Если команда «Вывести список » недоступна или пишет об ошибке прав — у вашей роли выключено право «Вывод». Его включает администратор в настройках пользователей и прав; самостоятельно это не обойти.
Быстро скопировать кусок
Для десятка строк хватает буфера обмена: выделите строки в списке (Shift или Ctrl + щелчок), нажмите Ctrl+C и вставьте в Excel. Колонки разложатся по ячейкам. Для тысяч строк этот приём неудобен: динамический список подгружает записи порциями, и выделить всё надёжно не получится.
Печатные формы
В форме предварительного просмотра (накладная, счёт, акт) есть кнопка «Сохранить». Она предлагает выбрать формат: xlsx, pdf, docx. Отметьте нужные галочками — 1С сохранит файл каждой формы в выбранную папку.
Универсальный отчёт: выборка из любого справочника и регистра
Когда готового отчёта под задачу нет, а выводить список мало, берите «Универсальный отчёт». Он строит таблицу по любому объекту базы: справочнику, документу с табличной частью, регистру накопления, сведений или бухгалтерии.
Где найти: в БП 3.0 он в разделе Отчеты, в группе стандартных отчётов. Если не видно — включите в Сервис и настройки → Параметры флажок «Отображать команду “Все функции”» и откройте ≡ → Все функции → Отчеты → Универсальный отчет.
Как собрать выгрузку
- В шапке отчёта выберите тип объекта, например «Документ».
- Выберите сам объект: «Реализация (акты, накладные, УПД)».
- Укажите таблицу: сам документ или его табличную часть «Товары» — так вы получите построчную выгрузку номенклатуры.
- Задайте период.
- Откройте
Настройки, переключитесь на расширенный вид. - На вкладке полей отметьте только нужные: дата, номер, контрагент, номенклатура, количество, сумма.
- В структуре оставьте одну группировку «Детальные записи» — получится плоская таблица без промежуточных итогов.
- Сформируйте и сохраните в xlsx.
💡 Плоская таблица из «Детальных записей» — лучший вариант для сводных таблиц в Excel. Группировки и итоги дают объединённые ячейки, и фильтр в Excel работает с ними криво.
Удачную настройку сохраните как вариант отчёта командой сохранения варианта в меню Ещё. В следующий раз выгрузка займёт три щелчка.
Чего универсальный отчёт не умеет
- 📌 Склеивать данные из разных объектов в одну строку произвольным образом — для этого нужен запрос.
- 📌 Выгружать по расписанию без участия пользователя (есть рассылка отчётов в БСП, но она шлёт файл по почте, а не кладёт его в другую систему).
- 📌 Показывать объекты, на которые у пользователя нет прав чтения.
Выгрузка данных из 1С в XML и CSV через обработки
XML для переноса между базами
Для переноса справочников и документов из одной базы 1С в другую используют обработки в формате XML:
- 🔹 «Выгрузка и загрузка данных XML» (файл
ВыгрузкаЗагрузкаДанныхXML83.epf). Выгружает выбранные объекты метаданных как есть. Работает только между базами с одинаковой структурой конфигурации. - 🔹 «Универсальный обмен данными в формате XML» (
V8Exchan83.epf). Переносит данные между разными конфигурациями по правилам обмена, которые готовят в «Конвертации данных». - 🔹 Типовые обмены в формате EnterpriseData — встроены в БП, УТ, ERP и настраиваются в
Администрирование → Синхронизация данных.
Обе обработки открывают через ≡ → Файл → Открыть. Перед загрузкой XML в рабочую базу сделайте резервную копию: загрузка перезаписывает объекты с теми же ссылками.
XML из этих обработок — внутренний формат 1С. Открыть его в Excel можно, но разбирать вручную тяжело. Для внешних систем он не подходит.
CSV для внешних программ
Штатной кнопки «Сохранить в CSV» в 1С нет. Варианты:
- Сохранить отчёт или список в xlsx, открыть в Excel и пересохранить как «CSV (разделители — запятые)». Русский Excel ставит разделителем точку с запятой.
- Сохранить табличный документ в txt — получится текст с табуляцией, его понимают почти все загрузчики.
- Написать небольшую внешнюю обработку, которая сразу пишет CSV, — пример в следующих разделах.
Полная копия базы — это не выгрузка данных
Файл .dt (Конфигуратор → Администрирование → Выгрузить информационную базу) — резервная копия для другой 1С. Читать его сторонними программами нельзя. Если вас просят «выгрузить базу
» для аудитора или новой учётной системы, уточните: им нужен .dt для разворачивания в 1С или таблицы с данными.
ODBC, SQL и OData: прямое подключение к данным 1С
ODBC: чего ждать
В 1С 8.3 нет штатного ODBC-драйвера, через который Excel или Access увидели бы таблицы файловой базы. Механизм «Внешние источники данных» работает в обратную сторону: 1С читает чужие базы через ODBC. Поэтому прямое подключение «по ODBC» на практике означает одно из двух: запросы к СУБД клиент-серверной базы или публикацию OData.
SQL-запросы к MS SQL или PostgreSQL
Если база клиент-серверная, данные лежат в обычной СУБД и читаются любым SQL-клиентом. Сложность в именах: таблицы называются _Reference45, _Document312, _AccumRg1024, а поля — _Fld5678. Ссылки хранятся в двоичном виде в полях с окончанием RRef.
Чтобы сопоставить имена с объектами конфигурации, выполните во встроенном языке функцию ПолучитьСтруктуруХраненияБазыДанных() и сохраните результат в таблицу. Она покажет, какой таблице СУБД соответствует, скажем, Справочник.Контрагенты и как называется поле ИНН.
Правила безопасности:
- ⛔ Только чтение. Изменение данных через SQL в обход платформы ломает связи, итоги регистров и кэш — такие правки фирма 1С не поддерживает.
- ⏱ Тяжёлые аналитические запросы к рабочей базе днём тормозят пользователей. Гоняйте их на копии или реплике.
- 🔄 После обновления конфигурации номера таблиц и полей могут поменяться — перестраивайте сопоставление.
OData: стандартный REST-интерфейс
С платформы 8.3.5 любую опубликованную на веб-сервере базу можно открыть по протоколу OData. Это самый удобный способ подключить к 1С Excel Power Query, Power BI или сайт без программирования на стороне 1С.
- Опубликуйте базу на IIS или Apache через
Конфигуратор → Администрирование → Публикация на веб-сервере, отметив публикацию стандартного интерфейса OData. - В режиме «Предприятие» укажите, какие объекты отдавать: в БП это настройка стандартного интерфейса OData в разделе
Администрирование → Синхронизация данных(в других конфигурациях название пункта может отличаться). Без этого шага сервис отдаёт пустой список. - Создайте для интеграции отдельного пользователя 1С с правами только на чтение нужных объектов.
- В Excel:
Данные → Получить данные → Из других источников → Из канала OData, адрес вида:
http://server/buh/odata/standard.odata/
Объекты называются по шаблону Catalog_Контрагенты, Document_РеализацияТоваровУслуг, AccumulationRegister_ТоварыНаСкладах. Excel покажет их списком, дальше работаете как с обычной таблицей Power Query и обновляете одной кнопкой.
Автоматическая выгрузка: внешняя обработка, расписание, COM
Внешняя обработка с запросом
Если выгрузка повторяется каждый день, проще один раз написать обработку. Пример серверной процедуры, которая пишет номенклатуру в CSV:
&НаСервере
Процедура ВыгрузитьНоменклатуруНаСервере(ИмяФайла)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа
| И НЕ Номенклатура.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
Запись.ЗаписатьСтроку("Код;Наименование");
Пока Выборка.Следующий() Цикл
Наименование = СтрЗаменить(Выборка.Наименование, ";", ",");
Запись.ЗаписатьСтроку(СтрШаблон("%1;%2", СокрЛП(Выборка.Код), Наименование));
КонецЦикла;
Запись.Закрыть();
КонецПроцедуры
Кодировка ANSI (windows-1251) нужна, чтобы русский Excel открыл файл двойным щелчком без «кракозябр». Для загрузки в веб-сервисы обычно просят UTF-8 — замените на КодировкаТекста.UTF8.
⚠️ Процедура выполняется на сервере 1С, поэтому путь ИмяФайла — это папка на сервере, а не на компьютере пользователя. В клиент-серверной базе у службы 1С должны быть права на запись в эту папку.
Запуск по расписанию
Два рабочих варианта:
- 🗓 Через «Дополнительные отчеты и обработки». Подключите обработку в
Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если программист описал в ней серверную команду, в карточке появится настройка расписания, и выгрузка пойдёт регламентным заданием. - 🖥 Через планировщик Windows. Запускайте клиент с параметром
/Execute, а в обработке при открытии выполняйте выгрузку и завершайте сеанс:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Выгрузка" /P"пароль" /Execute"D:\Scripts\export.epf"
Для серверной базы вместо /F укажите /S"server\buh". Пароль в bat-файле лучше заменить на пользователя с минимальными правами — он хранится открытым текстом.
COM-соединение из Python, 1С или скриптов
COM-соединение даёт внешней программе на Windows полный доступ к объектной модели и запросам. Сначала зарегистрируйте компоненту от имени администратора, подставив свою версию платформы:
regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\comcntr.dll"
Подключение из Python (пакет pywin32):
import win32com.client
connector = win32com.client.Dispatch("V83.COMConnector")
base = connector.Connect('File="D:\\Bases\\Buh";Usr="Выгрузка";Pwd="пароль";')
query = base.NewObject("Запрос")
query.Текст = "ВЫБРАТЬ Код, Наименование ИЗ Справочник.Контрагенты"
selection = query.Выполнить().Выбрать()
while selection.Следующий():
print(selection.Код, selection.Наименование)
Разрядность Python и платформы должна совпадать: 64-битный Python работает только с 64-битной 1С. Каждое COM-подключение занимает лицензию, как обычный сеанс.
Проблемы при экспорте данных из 1С и их решение
Если выгрузка большого отчёта зависает или падает по памяти, сузьте период и уберите лишние поля. Отчёт на 300 тысяч строк надёжнее выгрузить тремя частями по кварталу, чем одним годом.