Выгрузка данных из 1С Предприятие: 7 рабочих способов
Содержание
Выгрузка данных из 1С почти никогда не требует Конфигуратора и выгрузки всей базы в .dt. Чтобы отдать бухгалтеру остатки склада или передать номенклатуру в другую программу, хватает двух кнопок в режиме «Предприятие»: список выгружается в Excel, а для обмена между базами есть готовые механизмы XML.
Полный .dt нужен только для переноса всей информационной базы целиком. Для выборочной выгрузки данных из 1С:Предприятие под каждую задачу — отчёт, обмен, интеграция с сайтом — свой способ. Ниже семь рабочих вариантов: от простого экспорта в Excel до REST‑интерфейса. Выбирайте по тому, кому и в каком формате нужны данные.
Что подготовить перед выгрузкой: права и копия базы
Проверьте три вещи до того, как нажимать кнопки.
- 🔑 Права. Экспорт списка в Excel доступен любому, кто видит сам список. А вот запуск внешних обработок и выгрузка через обмен требуют отдельного права — его настраивает администратор в профилях групп доступа (
Администрирование → Настройки пользователей и прав). - 💾 Копия перед записью обратно. Сама выгрузка данные не портит — она только читает. Но если вы готовите файл для последующей загрузки в другую базу, сделайте архивную копию той базы, куда будете грузить.
- 📂 Куда класть файл. На сервере 1С путь к файлу считается относительно сервера, а не вашего компьютера. Если выгрузка идёт на клиент-серверной базе через код, используйте помещение во временное хранилище или каталог, доступный серверу.
Для разовой выборки по сложному условию удобно сначала собрать данные в консоли запросов или отчёте на СКД, а уже результат сохранить в файл. Так не придётся выгружать лишнее.
Выгрузка в Excel и CSV: быстрый экспорт списков и отчётов
Самый частый сценарий — отдать данные в таблице. Работает для любого списка (номенклатура, контрагенты, документы) и для любого отчёта.
Из списка справочника или журнала документов:
- Откройте нужный список.
- В командной панели нажмите
Еще → Вывести список. - В окне настройки выберите выводимые колонки и тип
Табличный документ. - Нажмите
ОК— данные откроются как таблица. - Сохраните:
Главное меню → Файл → Сохранить каки выберите формат.
Из готового отчёта всё ещё проще: сформируйте отчёт и сохраните его тем же пунктом Главное меню → Файл → Сохранить как.
Доступные форматы при сохранении табличного документа:
| Формат | Расширение | Когда использовать |
|---|---|---|
| Лист Excel | .xlsx | обычная работа в современном Excel |
| Лист Excel 97 | .xls | получатель на старой версии Office |
| Текст с разделителями | .csv / .txt | загрузка в другую программу, банк-клиент |
| Табличный документ | .mxl | обмен между базами 1С без потери оформления |
| Документ ODF | .ods | получатель на LibreOffice/OpenOffice |
Проверьте кодировку при выгрузке в CSV. Если принимающая программа ждёт Windows‑1251, а вы сохранили в UTF‑8, кириллица превратится в «кракозябры». В окне сохранения .txt/.csv кодировку можно задать явно.
Вывести список выгружает то, что видно в списке с учётом текущего отбора и группировок. Снимите лишние отборы, если нужны все строки.
Выгрузка в XML: универсальный обмен между базами
XML — основной формат для переноса справочников и документов между информационными базами 1С. Он сохраняет ссылки, реквизиты и структуру объектов, чего Excel не умеет.
Три рабочих варианта:
- Типовая обработка «Выгрузка и загрузка данных XML». Берётся с диска ИТС, запускается через
Файл → Открыть(при наличии права на внешние обработки). Отмечаете галочками нужные объекты метаданных — она выгружает их в один XML. На приёмной стороне та же обработка грузит файл обратно. Подходит, когда конфигурации на обеих сторонах идентичны. - Настроенный обмен данными. В типовых конфигурациях (
Администрирование → Синхронизация данных) обмен между базами уже работает по готовым правилам и формирует XML‑сообщения автоматически. Это способ для постоянного обмена, а не разовой выгрузки. - Конвертация данных
(КД 3) с правилами обмена. Нужна, когда структура баз разная: правила сопоставляют объект-источник с объектом-приёмником. Файл правил (
.xml) подключается к универсальной обработке обмена.
Для разовой выгрузки в собственном формате данные пишут кодом через сериализацию XDTO или объект ЗаписьXML. Это уже задача для программиста — об этом в разделе про внешние обработки.
Выгрузка в DBF: совместимость со старыми программами
DBF просят, когда данные нужно передать в программу прошлых лет: старую бухгалтерию, складскую систему, некоторые банк-клиенты. Встроенной кнопки «сохранить в DBF» у табличного документа нет — файл формируют кодом через объект XBase.
Минимальный рабочий пример — выгрузка номенклатуры:
Файл = Новый XBase;
Файл.Кодировка = КодировкаXBase.OEM;
Файл.Поля.Добавить("CODE", "S", 9);
Файл.Поля.Добавить("NAME", "S", 50);
Файл.СоздатьФайл("C:\Выгрузка\nomenkl.dbf");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Файл.Добавить();
Файл.CODE = Выборка.Код;
Файл.NAME = Выборка.Наименование;
Файл.Записать();
КонецЦикла;
Файл.ЗакрытьФайл();
Что здесь важно:
- 🔤 Кодировка. Старые DBF обычно в OEM (DOS‑866). Если принимающая программа путает регистр и русские буквы, попробуйте
КодировкаXBase.ANSI. - 📏 Длина полей. Для строкового поля (
"S") третий параметр — максимальная длина. Если наименование длиннее, оно обрежется, поэтому задавайте запас. - 🧩 Типы полей.
"N"— число (четвёртый параметр задаёт знаки после запятой),"D"— дата,"L"— логическое. Числовое поле нельзя заполнять строкой.
При чтении готового DBF обратно перебор строк идёт в цикле с проверкой конца файла методом ВКонце().
Автоматическая выгрузка по расписанию
Когда выгрузка нужна каждый день в одно и то же время, человек из процесса убирается двумя способами — в зависимости от типа базы.
Клиент-серверная база
— регламентное задание. Логику выгрузки оформляют в отдельном методе и вешают на регламентное задание. Расписание задаётся в режиме «Предприятие» (Администрирование → Обслуживание → Регламентные и фоновые задания). Сервер сам запустит задание в указанное время, пользователь не нужен.
Файловая база — планировщик Windows. Регламентные задания в файловом варианте выполняются только пока открыт сеанс, поэтому надёжнее запускать 1С в пакетном режиме по расписанию ОС. Команда для планировщика:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" ENTERPRISE /F"C:\Base" /N"Выгрузка" /P"пароль" /Execute"C:\Scripts\vygruzka.epf" /DisableStartupMessages
ENTERPRISE— запуск в режиме «Предприятие»./F— путь к файловой базе (для серверной —/S сервер\база)./Nи/P— пользователь и пароль./Execute— обработка.epf, которая и делает выгрузку, после чего платформа закрывается сама./DisableStartupMessages— без всплывающих окон, чтобы запуск не завис в ожидании нажатия.
Пароль в строке планировщика лежит открытым текстом. Заведите для фоновой выгрузки отдельного пользователя с минимальными правами — только на чтение нужных данных.
Прямой доступ к базе через ODBC: когда это оправдано
Здесь нужна честность. 1С хранит данные в SQL Server или PostgreSQL, и формально к этой базе можно подключиться по ODBC напрямую. На практике это плохая идея для большинства задач.
Почему прямой ODBC к базе 1С рискован:
- Имена таблиц и полей обфусцированы (
_Reference123,_Document456_IDRRef) и недокументированы. - Структура меняется при каждом обновлении конфигурации — ваш SQL‑запрос сломается без предупреждения.
- Чтение в обход платформы игнорирует итоги, разделение данных и права — легко получить несогласованные цифры.
Где ODBC уместен: когда наоборот — 1С читает внешнюю базу. Для этого есть штатный механизм внешних источников данных (ВнешниеИсточникиДанных), он подключается к любому ODBC‑источнику и работает с его таблицами как с обычными объектами 1С. Если же задача именно отдать данные во внешнюю СУБД, записывайте в неё из 1С через тот же механизм внешних источников или через COM‑объект ADO — но не читайте SQL‑базу 1С напрямую сторонними инструментами.
REST‑интерфейс OData: выгрузка для сайта и внешних сервисов
Когда данные должен забирать не человек, а другая система — сайт, мобильное приложение , сервис интеграции — используйте стандартный интерфейс OData. Платформа сама публикует справочники, документы и регистры как REST‑ресурсы, писать серверный код не нужно.
Порядок настройки:
- В Конфигураторе опубликуйте базу на веб-сервере:
Администрирование → Публикация на веб-сервере. - В окне публикации включите флажок публикации стандартного интерфейса OData.
- В режиме «Предприятие» укажите, какие объекты метаданных доступны через интерфейс (состав публикуемого состава настраивается отдельно, чтобы наружу не ушло лишнее).
После этого данные доступны по HTTP. Пример запроса номенклатуры в JSON:
http://ваш-сервер/база/odata/standard.odata/Catalog_Номенклатура?$format=json
Полезные параметры запроса:
| Параметр | Что делает |
|---|---|
$format=json | ответ в JSON вместо XML |
$top=100 | первые 100 записей |
$filter= | отбор, например $filter=DeletionMark eq false |
$select= | только нужные поля |
OData отдаёт данные под правами указанного пользователя. Заведите для интеграции отдельного пользователя только с чтением нужных объектов и закройте доступ к публикации паролем на уровне веб-сервера.
Стандартный REST‑интерфейс доступен на платформе не ниже 8.3.5. Если нужен формат ответа, которого OData не даёт, пишут собственный HTTP‑сервис — это уже разработка.
Внешние обработки для нестандартных выгрузок
Когда ни один типовой способ не подходит — нужен особый формат файла, сложная выборка с расчётами, выгрузка по хитрому условию — задачу решает внешняя обработка (.epf).
Внутри обработки доступен весь язык 1С: запросом собираете данные, а дальше записываете их в нужный формат —
- 📄 текстовый файл через объект
ЗаписьТекста; - 🧾 XML через
ЗаписьXMLили сериализацию XDTO; - 📊 табличный документ, который потом сам сохраняется в
.xlsx; - 🗃 DBF через
XBase, как в примере выше.
Готовую обработку кладут в каталог, подключают через Файл → Открыть или помещают в справочник дополнительных обработок (Администрирование → Печатные формы, отчёты и обработки), чтобы её можно было запускать из интерфейса и ставить на расписание.
Прежде чем писать обработку с нуля, проверьте диск ИТС и типовой состав конфигурации — для частых задач (выгрузка в банк, обмен с маркетплейсами, статистическая отчётность) готовые обработки обычно уже есть.
Частые вопросы
Можно ли выгрузить данные без прав администратора?
Чем выгрузка в XML отличается от выгрузки всей базы в `.dt`?
.dt — это слепок всей информационной базы целиком, он грузится только в пустую базу идентичной конфигурации и делается из Конфигуратора в монопольном режиме. XML выгружает выборочные объекты (нужные справочники и документы) и подходит для обмена между работающими базами.Почему в выгруженном CSV вместо русских букв «кракозябры»?
Как выгружать данные автоматически, если база файловая?
/Execute и внешней обработкой, которая делает выгрузку и закрывает платформу.