Как достать данные из базы 1С: Excel, MXL, XML, CSV и выгрузка по расписанию

· 11 мин

Содержание

Чтобы выгрузить данные из 1С в Excel, откройте нужный список или сформированный отчёт и сохраните его через главное меню: Файл → Сохранить как, тип файла — «Лист Microsoft Excel 2007-…» (.xlsx). Для списка справочника или журнала документов сначала выполните Ещё → Вывести список…: программа построит табличный документ, который уже можно сохранить в любой формат.

Для переноса данных между базами 1С таблицы не годятся: нужен XML через универсальные обработки или синхронизацию данных. Для регулярной выгрузки во внешнюю систему без участия человека — COM-соединение или регламентное задание. Ниже каждый способ по шагам, плюс разбор кодировок, разделителей и ошибок, на которых спотыкаются чаще всего.

Всё описанное относится к платформе 1С:Предприятие 8.3 с интерфейсом «Такси» и работает одинаково в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других типовых конфигурациях: механизм табличного документа и внешних соединений — общий для платформы.

Какой способ выгрузки выбрать под задачу

Способ определяет не формат, а то, кто и как потом будет использовать данные. Человеку для анализа нужен Excel, другой базе 1С — XML со ссылками, внешней программе — стабильный CSV или прямое подключение.

ЗадачаСпособФорматКто делает
Отдать список контрагентов, номенклатуры, документовЕщё → Вывести список… + сохранениеXLSX, ODS, PDFПользователь
Сохранить отчёт (ОСВ, анализ счёта, ведомость)Сохранение табличного документаXLSX, MXL, PDFПользователь
Произвольная выборка с отбором и группировкойУниверсальный отчёт или консоль запросовXLSX, MXLОпытный пользователь
Перенести справочники и документы в другую базу 1СУниверсальные обработки XML, синхронизацияXMLАдминистратор
Регулярно отдавать данные в сайт, BI, учётную системуCOM-соединение, регламентное заданиеCSV, XML, JSONПрограммист
Скопировать всю базу целикомКонфигуратор, выгрузка информационной базыDTАдминистратор
Что и куда нужно выгрузить?

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

Это самый частый сценарий. Он работает в любой конфигурации и не требует ни обработок, ни прав администратора.

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

  1. Откройте нужный список: например, Справочники → Контрагенты в Бухгалтерии 3.0.
  2. Настройте отбор, сортировку и колонки. Колонки добавляются через Ещё → Изменить форму…: в выгрузку попадут только видимые.
  3. Выберите Ещё → Вывести список….
  4. В окне отметьте нужные колонки. Переключатель «Выводить в» оставьте на «Табличный документ». Флажок «Только выделенные» нужен, если вы заранее выделили часть строк.
  5. Нажмите «ОК». Откроется табличный документ.
  6. Откройте главное меню (кнопка с тремя полосками в заголовке окна) и выберите Файл → Сохранить как.
  7. Укажите тип «Лист Microsoft Excel 2007-…» и папку, нажмите «Сохранить».

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

Как сохранить отчёт или печатную форму

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

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

Быстрый вариант для пары ячеек: выделите область в табличном документе, нажмите Ctrl+C и вставьте в Excel. Форматирование и границы обычно сохраняются.

Произвольная выборка через универсальный отчёт

В Бухгалтерии 3.0 в разделе Отчёты есть «Универсальный отчёт». В нём выбирается тип объекта (справочник, документ, регистр), конкретный объект и поля, задаются отбор и группировки. Результат сохраняется в Excel обычным способом.

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

Какой формат выбрать при сохранении

ФорматКогда использоватьОграничения
XLSXПочти всегда для ExcelДо 1 048 576 строк на лист
XLSТолько для очень старых версий ExcelДо 65 536 строк, большие таблицы обрежутся
ODSLibreOffice, OpenOffice, Р7-ОфисСложное оформление может съехать
PDFОтдать «как есть», без правокДанные не редактируются
MXLОбмен между пользователями 1СExcel не открывает
TXT / ANSI TXTПростой текст для дальнейшей обработкиБез оформления, колонки по табуляции
HTML, DOCXВставка в письмо или документ WordДля расчётов неудобно

Формат MXL и табличный документ: что с ними делать

MXL — родной формат табличного документа 1С. В нём сохраняется всё: объединения ячеек, оформление, расшифровки, области, параметры печати. Это лучший вариант, когда файл будет открывать другой пользователь 1С, например, для сверки с вашей бухгалтерией.

Открыть MXL можно тремя способами:

  • 🖥️ в любой базе 1С через Файл → Открыть — подойдёт даже пустая учебная база;
  • 📂 в бесплатной программе «1С:Предприятие 8. Работа с файлами» — она не требует лицензии и открывает MXL, а также сохраняет его в XLSX;
  • 🔁 пересохранить из 1С в XLSX, если получателю нужен Excel.

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

Табличный документ сохраняется в файл и программно, одной строкой. Это пригодится в регламентных заданиях и обработках:

ТабДок = Новый ТабличныйДокумент;
// ... заполнение табличного документа ...
ТабДок.Записать("C:\Обмен\osv.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Тот же метод принимает ТипФайлаТабличногоДокумента.MXL, PDF, ODS, TXT и ANSITXT. Формата CSV в этом перечне нет: его пишут через запись текста, пример ниже.

Выгрузка данных из 1С в XML универсальными обработками

Когда данные нужно загрузить в другую базу 1С, Excel не подходит: ссылки на контрагентов, договоры и номенклатуру в таблице превращаются в строки. XML сохраняет связи между объектами.

Перенос между базами одной конфигурации

Для этого служит универсальная обработка «Выгрузка и загрузка данных XML» (внешний файл .epf, распространяется в составе материалов поддержки 1С). Обработке не нужны правила: она выгружает объекты как есть, вместе с их внутренними идентификаторами.

  1. Откройте обработку через Файл → Открыть в главном меню. Нужно право на интерактивное открытие внешних обработок.
  2. На вкладке выгрузки отметьте в дереве объекты: справочники, документы, регистры.
  3. Для документов укажите период.
  4. Задайте имя файла и нажмите «Выгрузить данные».
  5. В базе-приёмнике откройте ту же обработку, перейдите на вкладку загрузки, выберите файл и запустите загрузку.

Перед загрузкой сделайте резервную копию базы -приёмника. Обработка записывает объекты с теми же идентификаторами, что в источнике: совпадающие элементы будут перезаписаны без вопросов.

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

Перенос между разными конфигурациями

Здесь два пути:

  • 🔄 Типовая синхронизация. В Бухгалтерии 3.0 — Администрирование → Синхронизация данных. Готовые обмены с УТ, Розницей, ЗУП и другими конфигурациями работают через формат EnterpriseData и не требуют программирования.
  • 🧩 Универсальный обмен данными в формате XML. Обработка встроена в типовые конфигурации и открывается через Все функции → Обработки. Ей нужен файл правил обмена, который готовят в конфигурации «Конвертация данных ». Без правил она не работает .

Команда «Все функции» по умолчанию скрыта. Включите её: главное меню → Сервис → Параметры (в новых версиях платформы — Сервис и настройки → Параметры) → флажок «Отображать команду “Все функции”».

Автоматическая выгрузка из 1С через COM-соединение

COM-соединение (внешнее соединение) позволяет внешней программе подключиться к базе 1С без открытия окна, выполнить запрос и забрать результат. Так выгружают остатки на сайт, продажи в BI, справочники в складскую систему.

Подготовка

  1. Зарегистрируйте компонент на компьютере, где будет работать скрипт. Командная строка от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1394\bin\comcntr.dll"

Номер версии в пути замените на вашу установленную платформу.

  1. Разрядность компонента должна совпадать с разрядностью программы, которая его вызывает. 64-разрядному Python нужна 64-разрядная платформа из C:\Program Files\1cv8, 32-разрядному Excel — 32-разрядная из C:\Program Files (x86)\1cv8.
  2. Заведите в базе отдельного пользователя для обмена с правом «Внешнее соединение» и правами только на чтение нужных объектов.

Пример выгрузки на Python

import csv
import win32com.client

v8 = win32com.client.Dispatch("V83.COMConnector")
conn = v8.Connect('File="C:\\Bases\\Buh";Usr="Obmen";Pwd="пароль";')
# для серверной базы: 'Srvr="srv1c";Ref="buh";Usr="Obmen";Pwd="пароль";'

q = conn.NewObject("Запрос")
q.Text = ("ВЫБРАТЬ Код, Наименование, ИНН "
          "ИЗ Справочник.Контрагенты ГДЕ НЕ ПометкаУдаления")
sel = q.Execute().Select()

with open("kontragenty.csv", "w", newline="", encoding="utf-8-sig") as f:
    w = csv.writer(f, delimiter=";")
    w.writerow(["Код", "Наименование", "ИНН"])
    while sel.Next():
        w.writerow([sel.Get(0), sel.Get(1), sel.Get(2)])

Скрипт ставят в планировщик заданий Windows, например, на 06:00, когда в базе никто не работает. Пароль лучше хранить не в тексте скрипта, а в переменной окружения или защищённом файле.

Если программист может дорабатывать конфигурацию, проще сделать регламентное задание внутри 1С: оно выполняется на сервере 1С по расписанию и пишет файл в сетевую папку. Внешний скрипт и регистрация COM тогда не нужны. В файловой базе регламентные задания выполняются, только пока открыт хотя бы один клиентский сеанс.

Кодировка, разделители и числа при выгрузке в CSV и TXT

Половина жалоб на «сломанную выгрузку» на деле — вопрос того, как Excel открывает текстовый файл. Сам файл при этом в порядке.

Кракозябры вместо русских букв

Excel по двойному клику открывает CSV в кодировке Windows-1251. Если файл записан в UTF-8 без метки BOM, кириллица превращается в «РљРѕРґ».

Варианты решения:

  • ✅ писать файл в UTF-8 с BOM (utf-8-sig в Python) — современный Excel распознаёт его сам;
  • ✅ писать в Windows-1251 (КодировкаТекста.ANSI в 1С), если получатель — только русский Excel;
  • ✅ открывать файл в Excel через Данные → Из текстового/CSV-файла и выбирать кодировку вручную.

Разделитель колонок

В русской локали Windows десятичный разделитель — запятая, поэтому Excel ждёт в CSV точку с запятой. Файл с запятыми откроется одной колонкой. Если значение само содержит ; или кавычки, его нужно заключить в кавычки, а кавычки внутри удвоить.

Пример записи CSV средствами 1С с корректным экранированием:

Функция ПолеCSV(Значение)
    Возврат """" + СтрЗаменить(Строка(Значение), """", """""") + """";
КонецФункции

Запрос = Новый Запрос("ВЫБРАТЬ Код, Наименование, ИНН
    |ИЗ Справочник.Контрагенты ГДЕ НЕ ПометкаУдаления");
Выборка = Запрос.Выполнить().Выбрать();

Запись = Новый ЗаписьТекста("C:\Обмен\kontragenty.csv", КодировкаТекста.ANSI);
Запись.ЗаписатьСтроку("Код;Наименование;ИНН");
Пока Выборка.Следующий() Цикл
    Запись.ЗаписатьСтроку(ПолеCSV(Выборка.Код) + ";"
        + ПолеCSV(Выборка.Наименование) + ";" + ПолеCSV(Выборка.ИНН));
КонецЦикла;
Запись.Закрыть();

Числа, даты и коды

  • 🔢 Пробелы в суммах. 1С форматирует числа с разделителем групп разрядов — неразрывным пробелом. Excel считает «12 500,00» текстом. В коде выводите Формат(Сумма, "ЧГ=0"), в готовом файле замените неразрывный пробел через «Найти и заменить» (в поле «Найти» наберите Alt+0160 на цифровой клавиатуре).
  • 📅 Даты. Выводите явно: Формат(Дата, "ДФ=dd.MM.yyyy"). Иначе в файл может попасть время «0:00:00».
  • 0️⃣ Ведущие нули. Код «000000123» или ИНН, начинающийся с нуля, Excel превращает в число и срезает нули. При импорте через Данные → Из текстового/CSV-файла задайте этим колонкам тип «Текст».

Почему выгрузка не получается: ошибки и решения

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

Ещё две ситуации, о которых стоит знать заранее:

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

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

Можно ли выгрузить данные из 1С, если нет лицензии на компьютере?
Нет, без лицензии базу не запустить. Готовые файлы MXL можно открыть в бесплатной программе «1С:Предприятие 8. Работа с файлами», но достать данные из самой базы она не позволяет.
Чем выгрузка в XML отличается от выгрузки базы в файл .dt?
XML переносит выбранные объекты в другую базу и сливает их с её данными. Файл .dt — полная копия базы вместе с конфигурацией: при загрузке он полностью заменяет базу-приёмник.
Как выгрузить из 1С сразу в Google Таблицы?
Сохраните табличный документ в XLSX и загрузите файл в Google Диск: он откроется как таблица. Прямой выгрузки в Google Таблицы в типовых конфигурациях нет.
Сохраняются ли формулы при выгрузке отчёта в Excel?
Нет. В файл попадают готовые значения и оформление. Итоги и промежуточные суммы будут числами, а не формулами СУММ.
Можно ли выгружать данные из облачной 1С (1cfresh)?
Списки и отчёты выгружаются так же, через сохранение табличного документа: файл скачивается в браузер. COM-соединение к облачной базе невозможно, для регулярного обмена там используют синхронизацию данных или HTTP-сервисы.