Как выгрузить данные из 1С 8 — от Excel до веб-сервисов

· 9 мин

Содержание

Данные из 1С 8 выгружают пятью основными способами: сохранить список или отчёт в Excel, выгрузить в CSV/TXT, написать выгрузку на встроенном языке, отдать данные по OData или веб-сервису, либо запустить готовую внешнюю обработку . Для разового отчёта хватает кнопки сохранения, для регулярного обмена с другой программой нужен формат XML /JSON или OData.

Выбор зависит от того, кто и как часто будет пользоваться файлом. Бухгалтеру чаще нужен Excel «здесь и сейчас», администратору — выгрузка по расписанию, программисту — структурированный формат для стороннего сервиса.

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

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

Сначала определитесь с форматом и частотой. От этого зависит, обойдётесь ли вы мышкой или понадобится программист.

СпособФорматДля чегоКто делает
Сохранить список/отчётExcel, PDF, ODFРазовый отчёт, печатьЛюбой пользователь
Вывести в текстCSV, TXTЗагрузка в другую программуПользователь
Встроенный языклюбойРегулярная выгрузка по правилуПрограммист
OData / веб-сервисJSON, XMLОбмен с сайтом, CRM, BIПрограммист + админ
Внешняя обработкаExcel, XMLГотовое решение без доработкиПользователь
Выгрузка базы .dt.dtПеренос всей базы целикомАдминистратор

Если данные нужны однократно и в Excel — не усложняйте. Способы с кодом и OData оправданы, когда выгрузка повторяется регулярно или идёт в стороннюю систему.

Выгрузка списков и отчётов в Excel

Самый быстрый путь. Почти любую таблицу в 1С 8.3 можно сохранить в Excel в два клика.

Список справочника или документов. Откройте нужный список (например, Справочники → Контрагенты), нажмите Ещё → Вывести список. 1С спросит, какие колонки включить, и сформирует табличный документ. Дальше Файл → Сохранить как и выберите тип файла Лист Excel 2007 (*.xlsx).

В интерфейсе 8.2 та же команда называется Все действия → Вывести список.

Готовый отчёт. Любой отчёт (оборотно-сальдовая ведомость, анализ счёта) формируется в табличный документ. Чтобы сохранить его целиком, в сформированном отчёте нажмите кнопку сохранения на командной панели или Файл → Сохранить как и укажите *.xlsx.

Отчёт выгружается ровно в том виде, в каком он на экране: с группировками, итогами и оформлением. Поэтому сначала настройте отчёт (период, отборы, детализацию), сформируйте его и только потом сохраняйте — файл повторит всё, что вы видите.

Табличный документ 1С умеет сохраняться и в другие форматы:

  • 📊 *.xlsx, *.xls — книги Excel;
  • 📄 *.pdf — для отправки и печати;
  • 📝 *.txt — простой текст;
  • 🗂 *.mxl — родной формат 1С (откроется в другой базе);
  • 🌐 *.html, *.ods — веб-страница и OpenDocument.

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

Сохранение в CSV и TXT для другой программы

Когда файл принимает не человек, а программа — банковский клиент, маркетплейс, скрипт — нужен CSV или TXT с предсказуемыми разделителями.

Простой способ: выгрузите список в табличный документ (как выше) и сохраните как Текстовый документ (*.txt). Колонки разделятся табуляцией. Для разделителя «точка с запятой» переназовите файл в .csv и откройте — Excel распознает структуру.

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

Чаще всего CSV ломается из-за кодировки. Старые программы ждут windows-1251, современные — UTF-8. Если на приёмной стороне вместо русских букв «кракозябры», дело в кодировке файла, а не в данных.

Выгрузка средствами встроенного языка

Этот способ для регулярных задач: выгрузить по кнопке, по расписанию через регламентное задание, по правилу отбора. Пишется код в обработке или в модуле.

Базовый сценарий — запрос к данным и запись результата в файл. Пример выгрузки контрагентов в CSV:

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

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

Кодировку задаёте прямо в конструкторе ЗаписьТекста — это решает проблему «кракозябр» на приёмной стороне.

Для выгрузки в Excel из кода используйте табличный документ:

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

Запрос — универсальный «движок» выгрузки. Один раз разобравшись с конструктором запроса (Конструктор запроса в модуле), вы выгрузите любой справочник, документ или регистр с нужными отборами.

Чтобы выгрузка шла сама, оберните код в регламентное задание: Конфигуратор → Общие → Регламентные задания. Зададите расписание — например, каждую ночь — и файл будет формироваться без участия человека. Фоновое задание работает на сервере, поэтому путь к файлу указывайте серверный (папка, доступная серверу 1С), а не путь к диску вашего компьютера.

Перед тем как ставить такую выгрузку «на поток», пройдитесь по короткому списку:

Перед запуском выгрузки кодом
Выполнено: 0 / 5

Прямой доступ к базе через ODBC и SQL

Частый вопрос: нельзя ли подключиться к базе 1С напрямую по ODBC и забрать данные SQL-запросом в обход платформы?

Технически SQL Server или PostgreSQL, где лежит клиент-серверная база , доступны. Но прямые SQL-запросы к базе 1С не поддерживаются и опасны. Причины:

  • 🔒 имена таблиц и полей в хранилище обфусцированы (_Reference123, _Fld456) и меняются при реструктуризации;
  • 🧮 значения хранятся в закодированном виде — ссылки, разделители итогов, составные типы нужно расшифровывать;
  • ⚠️ запись напрямую нарушает целостность данных и снимает базу с поддержки.

Для внешнего доступа 1С даёт штатные механизмы — через них данные отдаются уже расшифрованными:

  • OData — чтение и запись по REST из любой системы (см. следующий раздел);
  • COM-соединение (V83.COMConnector) — внешняя программа на Windows подключается к базе как клиент и работает языком 1С;
  • веб- и HTTP-сервисы — вы сами описываете, какие данные и в каком виде отдавать.

Если задача «забрать данные для аналитики», обычно побеждает OData: не нужно знать внутреннюю структуру базы, а 1С сама отдаёт объекты в понятном виде.

Обмен через XML, JSON и веб-сервисы

Для обмена с сайтом, CRM или системой аналитики нужен структурированный формат. 1С 8.3 работает и с XML, и с JSON.

OData — самый простой путь. Это автоматический REST-интерфейс ко всем объектам базы. Включается без программирования:

  1. В Конфигураторе откройте Администрирование → Публикация на веб-сервере.
  2. На вкладке OData включите стандартный интерфейс и задайте состав объектов, которые отдаёте наружу.
  3. Опубликуйте базу на веб-сервере (Apache или IIS).

После этого сторонняя система читает данные обычным HTTP-запросом и получает JSON или XML (формат выбирается заголовком запроса). Ограничивайте состав OData только нужными объектами — так вы не открываете наружу лишнее.

JSON средствами языка. Если нужен свой формат, собирайте JSON в коде. Поддержка появилась в платформе 8.3.6:

Запись = Новый ЗаписьJSON;
Запись.ОткрытьФайл("C:\Выгрузка\data.json");

Данные = Новый Массив;
Пока Выборка.Следующий() Цикл
    Стр = Новый Структура("Наименование, ИНН", Выборка.Наименование, Выборка.ИНН);
    Данные.Добавить(Стр);
КонецЦикла;

ЗаписатьJSON(Запись, Данные);
Запись.Закрыть();

XML и сериализация. Для выгрузки объектов целиком в XML используют сериализатор XDTO (СериализаторXDTO.ЗаписатьXML). Так работают типовые правила обмена между конфигурациями 1С.

Веб-сервис или HTTP-сервис. Когда OData отдаёт «не то» — нужна своя логика, расчёт, особый формат ответа — пишут собственный сервис. SOAP-веб-сервис описывают через объект метаданных Web-сервисы, более лёгкий REST — через HTTP-сервисы. В обоих случаях вы сами решаете, какие данные собрать и в каком виде вернуть; снаружи это обычный HTTP-запрос к опубликованной базе.

Публикация базы на веб-сервере открывает к ней сетевой доступ. Настройте HTTPS и ограничьте права пользователя, под которым работает интерфейс, только чтением нужных объектов.

Внешние обработки и расширения для выгрузки

Если кодить не хочется, а стандартного сохранения в Excel мало, берут готовую внешнюю обработку — файл .epf, который делает выгрузку по нужным правилам.

Универсальная выгрузка в XML. Для переноса данных между базами 1С есть обработка «Выгрузка и загрузка данных XML» (поставляется с ИТС). Она выгружает выбранные объекты в XML, а на приёмной стороне такая же обработка их загружает. Подходит, когда конфигурации совпадают или близки.

Как открыть внешнюю обработку. Самый простой путь — Файл → Открыть и указать .epf. В типовой «Бухгалтерии предприятия» 3.0 обработки подключают через Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.

Расширения конфигурации . Если выгрузку нужно встроить в саму программу (новая кнопка, своя команда), используют расширение — файл .cfe. Расширения появились в платформе 8.3.6 и позволяют дорабатывать типовую конфигурацию , не снимая её с поддержки. Загрузка .cfe и последующее Обновить конфигурацию базы данных — два отдельных шага.

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

Частые ошибки при выгрузке

Проблемы при выгрузке почти всегда сводятся к нескольким причинам. Разберём, что проверять первым.

  • 📁 Файл не сохраняется / «отказано в доступе». Либо файл уже открыт в Excel, либо у пользователя нет прав на запись в папку. Закройте файл, проверьте путь.
  • 🔤 Русские буквы превратились в «кракозябры». Неверная кодировка CSV/TXT. Пересохраните в UTF-8 или windows-1251 — в зависимости от того, что ждёт приёмная сторона.
  • 🧠 Выгрузка падает с нехваткой памяти. Слишком большой объём за один проход. Добавьте отбор по периоду или организации, выгружайте частями.
  • ⛔ «Недостаточно прав». У пользователя нет прав на чтение объекта. Проверьте роль в Администрирование → Настройки пользователей и прав.
  • 🚫 Внешняя обработка не запускается. Блокирует профиль безопасности или включён безопасный режим — нужно разрешение администратора.

Если выгрузка нужна регулярно и вручную её делать дорого, поставьте её в регламентное задание. Но помните: фоновое задание работает с правами своего пользователя — права на все нужные объекты у него должны быть.

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

Как выгрузить всю базу 1С целиком?
Через Конфигуратор → Администрирование → Выгрузить информационную базу — получите файл .dt со всей базой. Для выгрузки нужен монопольный доступ: все пользователи должны выйти из базы. Это способ переноса базы, а не данных для Excel.
Можно ли выгрузить данные без программиста?
Да. Сохранение списков и отчётов в Excel, вывод в CSV/TXT и готовые внешние обработки доступны обычному пользователю. Код нужен только для нестандартного формата или регулярной выгрузки по правилу.
Чем отличается выгрузка в 1С 8.2 и 8.3?
Механизмы те же, различаются названия команд. В 8.2 вместо Ещё используется меню Все действия. JSON и расширения конфигурации доступны начиная с платформы 8.3.6, в более ранних версиях их нет.
Как отдавать данные из 1С на сайт автоматически?
Опубликуйте базу на веб-сервере и включите OData или напишите HTTP-сервис. Сайт будет запрашивать данные по HTTP и получать JSON или XML без ручной выгрузки файлов.
Почему при открытии CSV в Excel всё в одной колонке?
Excel не распознал разделитель. Либо сохраните файл с разделителем-табуляцией, либо в Excel используйте импорт из текста с явным указанием разделителя «точка с запятой».