Как выгрузить данные из 1С 8 — от Excel до веб-сервисов
Содержание
Данные из 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С), а не путь к диску вашего компьютера.
Перед тем как ставить такую выгрузку «на поток», пройдитесь по короткому списку:
Прямой доступ к базе через 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-интерфейс ко всем объектам базы. Включается без программирования:
- В
КонфигуратореоткройтеАдминистрирование → Публикация на веб-сервере. - На вкладке
ODataвключите стандартный интерфейс и задайте состав объектов, которые отдаёте наружу. - Опубликуйте базу на веб-сервере (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.Можно ли выгрузить данные без программиста?
Чем отличается выгрузка в 1С 8.2 и 8.3?
Ещё используется меню Все действия. JSON и расширения конфигурации доступны начиная с платформы 8.3.6, в более ранних версиях их нет.