Отчеты и Аналитика · 13 мин
1С как источник данных: способы получения данных для отчётов и интеграций
Как использовать 1С как источник данных: способы выгрузки, OData, COM, планы обмена, подключение к Power BI и Excel, типичные ошибки и проверка результата.
Программы 1С накапливают первичные документы, движения по регистрам, остатки и справочники — это полноценный источник данных для управленческой отчётности, BI-систем, корпоративных хранилищ и обмена с другими приложениями. Задача специалиста — выбрать способ извлечения, который даст нужную глубину данных при приемлемой нагрузке на базу и понятной поддержке.
Единого «правильного» метода нет: для разового анализа в Excel достаточно выгрузки табличного документа, для регулярной аналитики удобен OData или прямое чтение через запросы, а для обмена между системами предназначены планы обмена и веб-сервисы. Ниже разобраны основные подходы, их ограничения и критерии выбора.
Важно различать два режима работы: 1С как источник «внутри себя» (отчёты, СКД, консоль запросов) и 1С как поставщик данных наружу (OData, COM, файловые выгрузки, HTTP-сервисы). В статье основное внимание уделено второму сценарию, поскольку именно он чаще всего вызывает вопросы у аналитиков и интеграторов.
Какие данные реально хранятся в 1С и в каком виде
Информационная база 1С состоит из объектов конфигурации: справочников (номенклатура, контрагенты), документов (реализации, поступления, платежи), регистров накопления и сведений (остатки, цены, взаиморасчёты), регистров бухгалтерии. Физически всё это лежит либо в файловой базе, либо на сервере СУБД — Microsoft SQL Server, PostgreSQL, Oracle или IBM DB2.
При проектировании выгрузки важно понимать, что «документ» в 1С — это не сама информация о движении товара или денег, а породившая её запись. Фактические данные для аналитики чаще находятся в движениях документа по регистрам. Поэтому корректный источник для отчёта по продажам — не таблица документов «Реализация», а регистр накопления «Продажи» или «ВыручкаИСебестоимостьПродаж» в зависимости от конфигурации.
Ещё один нюанс — виртуальные таблицы запросов (Остатки, Обороты, ОстаткиИОбороты). Они не хранятся физически, а вычисляются платформой из итоговых таблиц регистра. При выгрузке через OData или запросы они доступны так же, как обычные таблицы, что сильно упрощает получение агрегированных данных.
Способы извлечения данных: обзор и границы применения
Платформа предлагает несколько независимых каналов доступа к данным. Выбор зависит от частоты обмена, объёма, требований к безопасности и наличия доработок в конфигурации.
| Способ | Когда подходит | Основные ограничения |
|---|---|---|
| Выгрузка в Excel/CSV из отчёта | Разовый анализ, передача данных коллегам | Ручная операция, нет актуальности, легко ошибиться в периоде |
| OData (REST-интерфейс) | Power BI, внешние приложения, регулярное чтение | Требует публикации на веб-сервере, нагрузка на базу при тяжёлых запросах |
| COM-соединение | Обмен между базами 1С на одном сервере | Только Windows, работает в одном процессе, устаревающий подход |
| Планы обмена | Регулярная синхронизация между базами 1С | Требуют настройки, обмениваются объектами, а не агрегатами |
| HTTP/веб-сервисы | Интеграция с любыми внешними системами | Нужна доработка конфигурации и сопровождение кода |
| Прямое чтение из СУБД | Высоконагруженная аналитика, витрины данных | Нет понятных имён таблиц, риск обойти логику платформы, не поддерживается вендором |
Сравнение вариантов
Лучший баланс для BI: стандартный протокол, не требует доработок, но нужен веб-сервер и контроль нагрузки
Подходит для разовых задач и малых объёмов; не масштабируется и требует дисциплины версий файлов
Максимальная гибкость и контроль формата, но требуют разработки и сопровождения
Быстро для больших объёмов, но опасно: структура таблиц меняется при обновлениях, легко получить некорректные данные
Выгрузка в Excel и CSV: быстрый путь для разовых задач
Самый простой способ получить данные — сформировать нужный отчёт (например, «Продажи по контрагентам» или оборотно-сальдовую ведомость) и сохранить табличный документ через «Файл → Сохранить как» в формате Excel. Дополнительно почти любой список в 1С можно вывести кнопкой «Ещё → Вывести список», предварительно настроив отбор и колонки.
Для передачи данных в другую систему удобнее CSV: создайте отчёт на СКД или обработку, которая формирует таблицу значений и сохраняет её текстовым файлом с разделителем. При ручной выгрузке из табличного документа проверяйте, что группировки развёрнуты, иначе в файл попадут свёрнутые строки без детализации.
- 1Откройте нужный список (документы, справочник, регистр) и задайте отбор по периоду и организации
- 2Через «Ещё → Изменить форму» или настройку списка оставьте только нужные колонки
- 3Выполните «Ещё → Вывести список», отметьте все строки и выведите в табличный документ
- 4Сохраните табличный документ в формате Excel и проверьте количество строк и итоги по ключевой колонке
Контрольный приём: после выгрузки сверьте итог по суммовой колонке в Excel с итогом отчёта в 1С. Расхождение почти всегда означает, что часть строк не попала в выгрузку из-за отбора, группировки или ограничения на количество выводимых строк.
OData: стандартный интерфейс для Power BI и внешних приложений
Начиная с платформы 8.3.5, 1С умеет автоматически публиковать REST-интерфейс OData. После публикации на веб-сервере (IIS или Apache) объекты конфигурации становятся доступны по HTTP в формате, который понимают Power BI, Excel Power Query, Tableau и другие инструменты. Доработка конфигурации не требуется — достаточно включить публикацию в свойствах базы.
Адрес имеет вид http://сервер/база/odata/standard.odata/, а конкретная сущность, например документ реализации, доступна как Document_РеализацияТоваровУслуг. Параметры $filter, $select, $top позволяют отбирать данные на стороне сервера. Для аналитики особенно полезны виртуальные таблицы регистров: AccumulationRegister_Продажи с агрегацией через $apply (зависит от версии платформы).
GET http://server/ut/odata/standard.odata/Document_РеализацияТоваровУслуг?$filter=Date ge datetime'2026-01-01T00:00:00'&$select=Number,Date,СуммаДокумента&$format=jsonДля подключения из Power BI используйте коннектор «OData-канал» или «Веб», укажите базовый URL и аутентификацию (обычно базовая, по пользователю 1С). Обязательно фильтруйте данные на стороне запроса: вытягивание полной таблицы документов за несколько лет без $filter способно надолго занять сеанс и замедлить работу пользователей.
Обмен между базами 1С: планы обмена и COM
Когда источником данных выступает одна база 1С, а потребителем — другая (типовой пример: выгрузка продаж из «Управления торговлей» в «Бухгалтерию»), штатный механизм — планы обмена. Они регистрируют изменённые объекты и передают их пакетами через файлы, каталоги или прямое подключение. В типовых конфигурациях есть готовые настройки синхронизации, которые запускаются из раздела администрирования.
План обмена передаёт объекты целиком: документ со всеми табличными частями, элемент справочника. Это правильно для репликации учётных данных, но неудобно для аналитики — агрегаты придётся считать на стороне приёмника. Если цель именно аналитическая витрина, план обмена стоит рассматривать как транспорт сырья, а не как готовый отчётный источник.
COM-соединение (V83.COMConnector) позволяет одной базе 1С подключиться к другой и выполнять в ней запросы. Способ рабочий, но ограничен Windows-окружением и создаёт нагрузку в виде полноценного сеанса. Для новых интеграций предпочтительнее HTTP-сервисы или OData.
HTTP-сервисы и внешние обработки: когда нужен свой формат
Если потребителю нужен специфический формат (например, компактный JSON с уже посчитанными оборотами), оптимальное решение — HTTP-сервис внутри конфигурации. Разработчик описывает шаблон URL, в обработчике выполняет запрос к регистрам и возвращает готовую выборку. Такой сервис отдаёт ровно те данные, которые нужны, и не открывает лишнего.
Для файлового обмена по расписанию используют внешние обработки с регламентными заданиями: обработка формирует CSV, XML или JSON и складывает в сетевой каталог или отправляет по SFTP. Это простой и надёжный вариант для ночных выгрузок в хранилище данных, когда онлайн-доступ не нужен.
Для регулярных выгрузок фиксируйте момент среза: сохраняйте дату последней успешной выгрузки и отбирайте изменённые с неё объекты. Полная перезагрузка всех данных каждую ночь быстро упирается в объём и время выполнения. Дельта-выгрузка по дате изменения или периоду регистра решает эту проблему.
Прямое чтение из СУБД: почему это крайняя мера
Искушение подключиться к SQL-базе напрямую велико: скорость высокая, а SQL знаком аналитикам. Однако структура таблиц 1С не документирована для прямого доступа: имена вида _Document123 меняются при реструктуризации, ссылки хранятся как бинарные значения, а итоги регистров требуют понимания служебных таблиц. Любое обновление конфигурации может молча сломать такую выгрузку.
Допустимый компромисс — читать из СУБД только реплицированную копию или использовать известные механизмы витрин, где сопоставление таблиц зафиксировано и проверяется после каждого обновления. Запись в базу напрямую через SQL недопустима категорически: это нарушает целостность данных и лишает поддержки.
Проверка качества выгруженных данных
Любой канал извлечения нужно замкнуть контролем. Минимальный набор — сверка количества записей, сумм по ключевым показателям и границ периода между источником и приёмником. Для регистров удобно сверять обороты за месяц: отчёт в 1С и агрегат в BI должны сойтись до копейки.
Как проверить результат
Числа совпадают точно
Разница даже в одну строку — ищите отбор, группировку или дубли
Итоги сходятся до копейки
Расхождение означает потерю части движений или неверный источник
Минимальная и максимальная даты соответствуют заданному периоду
Данные обрезаны или захвачен лишний период
В приёмнике виден документ, проведённый недавно
Новые документы не попадают — нарушен механизм дельта-выгрузки
Как выбрать подходящий способ
Как выбрать действие
Решение почти всегда начинается с вопроса о частоте и потребителе. Человеку достаточно файла, BI-системе — стандартного протокола, другой учётной системе — надёжного транспорта с гарантией доставки. Комбинировать способы нормально: например, OData для аналитиков и план обмена для бухгалтерии в одной базе.
Что важно запомнить
1С отдаёт данные через выгрузки в файлы, OData, планы обмена, COM и HTTP-сервисы. Аналитику берите из регистров, а не из документов; тяжёлые запросы фильтруйте на стороне сервера; любой канал замыкайте сверкой итогов. Прямой доступ к СУБД — только для чтения копии и как крайняя мера.
Частые вопросы
Можно ли подключить Power BI к 1С без доработок конфигурации?
Да, через OData: достаточно опубликовать базу на веб-сервере и включить REST-интерфейс в настройках публикации. Power BI подключается коннектором OData по URL вида http://сервер/база/odata/standard.odata/ с учётными данными пользователя 1С.
Почему отчёт в BI не сходится с отчётом в 1С?
Чаще всего причины три: выгружены документы вместо движений по регистрам, в запросе нет фильтра по периоду или организации, либо не учтены помеченные на удаление и непроведённые документы. Сверку начинайте с оборотов регистра за один закрытый месяц.
Опасно ли открывать OData для аналитиков?
Опасно при неверной настройке. Создайте отдельного пользователя с правами только на чтение нужных объектов, используйте HTTPS, не публикуйте интерфейс в открытый интернет и ограничьте тяжёлые запросы настройками веб-сервера и платформы.
Чем план обмена отличается от выгрузки через OData?
План обмена передаёт объекты целиком между базами 1С с гарантией доставки и контролем изменений — это инструмент синхронизации учёта. OData — интерфейс чтения для внешних потребителей, он не отслеживает изменения и не гарантирует доставку, зато не требует второй базы 1С.
Как выгружать только изменённые данные, а не всё подряд?
Храните в настройках выгрузки дату последнего успешного сеанса и отбирайте объекты с датой изменения или периодом движений позже неё. Для регистров удобно ориентироваться на период записей, для справочников — на служебные признаки изменений или планы обмена как механизм регистрации.
Можно ли читать базу 1С напрямую из SQL Server?
Технически чтение возможно, но структура таблиц не документирована и меняется при обновлениях, поэтому такой подход не поддерживается и требует постоянной ревизии. Запись в базу через SQL запрещена полностью — она разрушает целостность данных. Безопасная альтернатива — OData, HTTP-сервисы или выгрузка в витрину штатными средствами.